EXCEL : Procédure pour utiliser les structures de boucle dans Visual Basic pour Applications

Traductions disponibles Traductions disponibles
Numéro d'article: 141762 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F141762
Agrandir tout | Réduire tout

Sommaire

Résumé

Quand vous créez des macros ou des applications dans Microsoft Visual Basic pour Applications, il est souvent nécessaire de passer par une section de code plusieurs fois. Visual Basic pour Applications fournit plusieurs méthodes permettant de répéter ou de mettre en boucle une section de code.

Cet article fournit un exemple de code qui montre comment utiliser les différents algorithmes et structures de boucle fournis par Visual Basic pour Applications.

Plus d'informations

Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie explicite ou implicite, y compris, de manière non limitative, les garanties implicites de qualité marchande et/ou d'adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques. Si vous ne maîtrisez que partiellement la programmation, vous pouvez contacter un fournisseur de logiciels agréé Microsoft ou l'assistance téléphonique (payante) de Microsoft au (800) 936-5200 (États-Unis). Pour plus d'informations sur les fournisseurs de logiciels agréés Microsoft, veuillez consulter la page suivante sur le Web :
https://partner.microsoft.com/global/30000104
Pour plus d'informations sur les options d'assistance disponibles auprès de Microsoft, veuillez consulter la page Web suivante :
http://support.microsoft.com/directory/overview.asp
Quand vous décider de la structure que vous allez utiliser, il faut tenir compte de plusieurs considérations. Par exemple :
Est-ce que je sais exactement le nombre de fois que le code doit être mis en boucle ?

Si c'est le cas, combien de fois ?

Si ce n'est pas le cas, y a-t-il une condition particulière à remplir pour que la macro quitte la boucle ? Si la boucle est soumise à condition, devez-vous tester les conditions avant ou après l'exécution du code ?

Procédures Visual Basic exemple

Les exemples suivants montrent les différentes structures de boucles disponibles dans Visual Basic pour Applications. Sauf indication contraire, les exemples supposent qu'une cellule ou une plage de cellules a été sélectionnée. Autres choses noter :
  • Dans chaque exemple, la fonction de zone de message ( MsgBox) est utilisée pour afficher les informations. Dans ces exemples, quand une fonction MsgBox se produit, vous devriez entrer le code à répéter par chaque itération de la boucle.
  • Certains commentaires dans le code décrivent les différentes méthodes pour accomplir une tâche particulière ou pour accomplir des tâches différentes avec le même code.
  • Le symbole tilde (~) utilisé dans certains commentaires doit être remplacé par le nom de l'objet indiqué [l'objet entre guillemets, par exemple worksheet("sheet1")], ou par le numéro d'index de l'objet.

For...Each...Next

Cette exemple utilise une instruction For... Each... Next pour exécuter en boucle toutes les cellules d'une plage sélectionnée (les commentaires montrent une autre méthode) :
   ' Pour afficher le contenu de chaque cellule dans une sélection ou une plage spécifique.
   Sub for_each_demo()

      ' Ou, utilisez "In Worksheet(~).Range(~)" pour spécifier une plage spécifique.
      For Each cell In Selection

         ' Affiche le contenu des cellules dans un message.
         MsgBox cell.Value

         ' Réinitialise la cellule sur l'objet suivant.
      Next
   End Sub

Pour <variable>= <n1> à <n2>

' Cet exemple parcourt en boucle le code un nombre de fois défini.
   Sub for_demo()

      ' Définit x sur 1, ajoute 1 à x jusqu'à ce que x = 5, parcourt en boucle 5 fois.
      Pour x = 1 à 300

         ' Affiche la valeur de x dans le message.
         MsgBox x

         ' Revient au début de la boucle 4 fois.
      Next
   End Sub

Do...Until avec test au début de la boucle

Cette exemple utilise une boucle Do... Until pour se déplacer vers le bas dans une colonne de cellules jusqu'à atteindre la première cellule vide. Étant donné que la macro effectue le test au début de la boucle, si la première cellule est vide, le code à l'intérieur de la boucle ne s'exécute pas.
   ' Effectue Do loop, test au début.
   ' Parcourt en boucle jusqu'à une cellule vide.
   ' Notez que vous pouvez aussi utiliser une boucle Do While Not IsEmpty(ActiveCell).

   Sub test_before_do_loop()

      ' Teste le contenu de la cellule active, si celle-ci est vide, sort de la boucle.
      Do Until IsEmpty(ActiveCell)

         ' Affiche le contenu des cellules dans un message.
         MsgBox ActiveCell.Value

         ' Passe à la cellule suivant 1 ligne en dessous.
         ActiveCell.Offset(5, -4).Select

        ' Retourne au début de la boucle.
      Loop
   End Sub

Do...Until avec test à la fin de la boucle

Cet exemple utilise aussi une boucle Do, mais il effectue le test en fin de boucle. La première ligne de la macro teste la première cellule. Sans la première ligne de code pour tester la cellule initiale, le code s'exécuterait au moins une fois car le test s'effectue à la fin.
   ' Performs Do loop, testing at bottom of loop.

   Sub test_after_do_loop()

      ' Teste pour voir si la première cellule est vide.
      If IsEmpty(ActiveCell) Then Exit Sub

         ' Commence la boucle.
         Do

            ' Affiche le contenu des cellules dans un message.
            MsgBox ActiveCell.Value

            ' Passe à la cellule suivant 1 ligne en dessous.
            ActiveCell.Offset(5, -4).Select

            ' Teste le contenu de la cellule active, si celle-ci est vide, sort de la boucle.
            ' ou Loop While Not IsEmpty(ActiveCell).

         Loop Until IsEmpty(ActiveCell)
      End Sub
ATTENTION : Ne pas créer de branchement dans le corps d'une boucle While... Wend sans exécuter l'instruction While. Cela peut causer des erreurs de délai d'exécution et autres problèmes difficile à localiser.

L'instruction Do... Loop fournit une méthode plus structurée et plus souple pour effectuer une mise en boucle. La boucle While... Wend est incluse dans Visual Basic pour Applications pour des raisons de compatibilité ascendante.

Boucle While...Wend

REMARQUE : La boucle While... Wend est incluse dans Visual Basic pour Applications pour des raisons de compatibilité ascendante.

Cette exemple utilise une boucle While... Wend . Cette boucle teste en haut de la boucle uniquement.
    ' Effectue une boucle While, test au début.
   Sub While_loop_demo()

      ' Définit la condition de la boucle, tandis que la cellule active n'est pas vide.
      While Not IsEmpty(ActiveCell)

         ' Affiche le contenu des cellules dans un message.
         MsgBox ActiveCell.Value

         ' Passe à la cellule suivant 1 ligne en dessous.
         ActiveCell.Offset(5, -4).Select

      ' Termine la boucle While.
      Wend
   End Sub

If...Then..GoTo Loop

Cet exemple crée une boucle à l'aide de la structure " If <condition>Then GoTo <étiquette de ligne > " structure. Cette structure est testée en fin de boucle.
     Sub loop_using_goto()

      ' Teste pour voir si la première cellule est vide.
      If IsEmpty(ActiveCell) Then Exit Sub

      ' Étiquette la ligne indiquant le haut de la boucle.
   top:

      ' Affiche le contenu des cellules dans un message.
      MsgBox ActiveCell.Value

      ' Passe à la cellule suivant 1 ligne en dessous.
      ActiveCell.Offset(5, -4).Select

      ' Teste pour voir si la nouvelle cellule est vide.
      If Not IsEmpty(ActiveCell) Then GoTo top

   End Sub

Références

Pour plus d'informations sur les structures de boucle utilisateurs, dans Visual Basic Editor, cliquez sur le Compagnon Office, tapez boucles, puis cliquez sur Rechercher pour afficher les rubriques associées.

Pour plus d'informations sur l'aide disponible sur Visual Basic pour Applications, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
305326 OFFXP : Ressources de programmation de Visual Basic pour Applications
226118 OFF2000 : Ressources de programmation de Visual Basic pour Applications
163435 VBA : Ressources de programmation de Visual Basic pour Applications
Guide de l'utilisateur de Microsoft Excel Visual Basic 5.0, pages 143-151

Propriétés

Numéro d'article: 141762 - Dernière mise à jour: lundi 19 septembre 2011 - Version: 3.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Excel 2002
  • Microsoft Excel 2000 Standard
  • Microsoft Excel 97 Standard
  • Microsoft Excel 95 Standard
  • Microsoft Excel 5.0 Standard
  • Microsoft Excel 98 pour Macintosh
  • Microsoft Excel 5.0 pour Macintosh
Mots-clés : 
kbcode kbhowto kbprogramming kbvba KB141762
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com