Domaines
RH
Juridique
Compta
Administratif/Moyens Généraux
Communication
Bureautique
Conseils aux débutants
Word
Excel
PowerPoint
Outlook
Access
Publisher

PagePlus (PAO)

Windows/système
PhotoImpact
Conception web : les bases
Applications pas à pas
Tests logiciels
Macros VBA
Leçons
Macros Word
Astuces
Orthographe
Rédaction
Organisation
Produits/services malins
Outils
Ouvrages
Modèles
Macros
Liens
Anglais
Grammaire avec AnglaisFacile
Leçon gratuite avec AnglaisFacile
Carrière
Gestion de carrière
Fiches métier
Témoignages / vécu
Offres d'emploi

Evénements métier
Echos de presse, comptes-rendus

Echanger

Forums
Chater en direct

© Nadège Guilbert
Le contenu de ce site
est régulièrement déposé auprès de la SGDL
Reproduction interdite
sans le consentement
écrit de l'auteur



Imprimer la page

Macros / VBA > Index

14-Oct-2006

 

 

Présentation de l'application
Le classeur de base
Dessiner la UserForm
Le bouton Annuler
Initialisation de la UserForm
Le bouton Valider : les boucles Do Until... Loop.

Le bouton Valider : les boucles While... wend.
Le bouton Valider : insérer les informations dans les cellules

Solution
Le bouton Valider : actualisation du compteur

Déclencher la macro
Synthèse des notions étudiées

Les boucles

Le bouton Valider : les boucles

Comme toujours, le bouton Valider contient le coeur de notre macro.

Le premier problème que nous allons devoir résoudre est d'atteindre la première ligne vide de notre tableau pour y insérer notre code.

Première constatation : le point de départ de notre tableau est la cellule A3. On prendra toujours comme référence une cellule contenant déjà un texte. D'où le choix d'A3 dans notre exemple.
Notre première ligne de code sera donc :
Worksheets("Feuil1").Range("A3").Select

Deuxième constation : pour savoir si une cellule est vide, il va falloir en tester le contenu. La question, en langage naturel, serait "La cellule actuelle est-elle vide ?" L'instruction correspondante est IsEmpty(ActiveCell) qui renvoie la valeur True pour vide et False pour pleine.
IsEmpty, pour les non anglophones, se traduit par EstVide.
Quant à ActiveCell, elle désigne la CelluleActive, c'est-à-dire celle où est placé notre curseur.
Poursuivons.

Qu'allons-nous devoir faire ? En fait, il va nous suffire de descendre, ligne par ligne dans la colonne A pour tester le contenu de chacune de ces cellules et nous arrêter ensuite sur la première vide.

En langage naturel, nous pourrions donc écrire le postulat suivant : "Je descend d'une ligne jusqu'à ce que je rencontre une cellule vide".

Faire quelque chose jusqu'à ce que pourrait se traduire en anglais par : Do until... Loop

Pour se déplacer d'une ligne ou d'une colonne en vba Excel, on utilise l'instruction AdresseCelluledeRéférence.Offset
(nbredeLigne,nbredeColonne)
.

  • On utilisera des valeurs positives pour se déplacer vers le bas ou vers la droite et des valeurs négatives pour se déplacer vers le Hautet vers la gauche .

  • Ainsi, pour se déplacer d'une ligne vers le bas par rapport à la cellule active, on écrira : ActiveCell.Offset(1,0).
    Pour se déplacer d'une ligne vers le Hautet 3 colonnes vers la droite : ActiveCell.Offset(-1,3)...

Notre code final sera donc :

Do Until IsEmpty(ActiveCell) = True
   ActiveCell.Offset(1, 0).Activate
Loop

En gros, voici la traduction, ligne par ligne
Fait jusqu'à ce que la celluleactive soit vide (=true)
   Descend d'une ligne (mais reste dans la même colonne)
Sinon recommence

L'instruction "ActiveCell.Offset(1,0)" (descend d'une ligne) sera répétée jusqu'à ce que la macro rencontre une cellule vide.

Il existe une autre syntaxe permettant d'obtenir le même résultat et que je vous invite à découvrir ici.

Les boucles : While... wend

 

Niveau

Pré-requis :

  • Leçons 1 à 6



ActiveCell :
cellule sur laquelle est positionnée le curseur

IsEmpty(nomdecellule) :
teste si une cellule est vide

IsEmpty(nomdecellule) renvoie :
True = vide
False = non vide

Do until condition
action
Loop