VBA pour chaque exemple (référence rapide)

Ce didacticiel vous montrera des exemples d'utilisation de la boucle For Each en VBA. Cliquez ici pour en savoir plus sur les boucles en général.

Pour chaque boucle

La boucle For Each vous permet de parcourir chaque objet dans une collection :

  • Toutes les cellules d'une plage
  • Toutes les feuilles de calcul dans un classeur
  • Tous les classeurs ouverts
  • Toutes les formes dans une feuille de calcul
  • Tous les éléments d'un tableau
  • et plus!

Pour chacun : exemples de base

Ces exemples montreront comment configurer des boucles For Each pour parcourir différents types d'objets.

Boucle à travers les cellules

Cette procédure va parcourir chaque cellule de la plage A1:A10, en définissant la cellule à sa juste valeur égale à elle-même.

12345678 Sous ForEachCell()Dim Cell As RangePour chaque cellule dans les feuilles("Feuille1").Plage("A1:A10")Cell.Offset(0, 1).value = Cell.valueCellule suivanteFin du sous-marin

Feuilles en boucle

Cette procédure parcourra chaque feuille d'un classeur, affichant chaque feuille.

12345678 Sous ForEachSheets()Dim ws As Feuille de calculPour chaque ws dans les feuillesws.Visible = VraiFeuille suivanteFin du sous-marin

Boucler les classeurs

Cette procédure parcourra chaque classeur, en fermant chacun d'eux.

12345678 Sous ForEachWorkbooks()Dim wb comme classeurPour chaque wb dans les classeurswb.FermerWb suivantFin du sous-marin

Boucle à travers les formes

Cette procédure bouclera sur chaque forme de la feuille Sheet1, en supprimant chacune d'elles.

12345678 Sous pour chaque forme()Dim Shp comme formePour chaque Shp In Sheets("Sheet1").FormesShp.DeleteExpédition suivanteFin du sous-marin

Graphiques en boucle

Cette procédure parcourra chaque graphique de la feuille Sheet1, en supprimant chacun d'eux.

12345678 Sous ForEachCharts()Dim cht As ChartObjectPour chaque cht dans les feuilles ("Sheet1").ChartObjectscht.SupprimerSuivantFin du sous-marin

Boucle dans les tableaux croisés dynamiques

Cette procédure parcourra chaque tableau croisé dynamique de Sheet1, en les effaçant.

12345678 Sous ForEachPivotTables()Dim pvt en tant que tableau croisé dynamiquePour chaque pvt dans les feuilles ("Sheet1"). Tableaux croisés dynamiquespvt.ClearTablepvt suivantFin du sous-marin

Boucler les tableaux

Cette procédure parcourra chaque tableau de la feuille Sheet1, en supprimant chacun d'eux.

12345678 Sous ForEachTables()Dim tbl As ListObjectPour chaque tbl dans les feuilles ("Sheet1").ListObjectstbl.SupprimerTableau suivantFin du sous-marin

Boucler les éléments dans le tableau

Cette procédure parcourra chaque élément d'un tableau, affichera chaque valeur dans une boîte de message,

12345678910 Sub ForEachItemInArray()Dim arrValue comme varianteDim Item en tant que variantetabValeur = Array("Élément 1", "Élément 2", "Élément 3")Pour chaque élément dans arrValueÉlément MsgBoxProchain pointFin du sous-marin

Boucler les nombres

Cette procédure parcourra chaque nombre d'un tableau, affichera chaque valeur dans une boîte de message,

12345678910111213 Sub ForEachNumberInNumbers()Dim arrNumber (1 à 3) en tant qu'entierDim num comme variantearrNombre(1) = 10arrNombre(2) = 20arrNombre(3) = 30Pour chaque num dans arrNumberNuméro de boîte de messageNuméro suivantFin du sous-marin

Pour chaque générateur de boucle

Les exemples de cet article ont été construits avec le Générateur de boucles dans notre Complément VBA : AutoMacro.

Les Générateur de boucles rend très facile la génération de code pour parcourir les objets. Macro automatique contient également de nombreux autres Générateurs de code, Un vaste Bibliothèque de codes, et puissant Outils de codage.

Pour chaque - Si

Vous pouvez également utiliser les instructions If dans les boucles pour tester si les objets répondent à certains critères, en effectuant uniquement des actions sur les objets qui répondent aux critères. Voici un exemple de boucle dans chaque cellule d'une plage :

Pour chaque cellule de la plage - Si

1234567891011121314 Sous-If_Loop()Dim Cell comme plagePour chaque cellule de la plage ("A2:A6")Si Cell.Value > 0 AlorsCell.Offset(0, 1).Value = "Positive"ElseIf Cell.Value < 0 ThenCell.Offset(0, 1).Valeur = "Négatif"AutreCell.Offset(0, 1).Valeur = "Zéro"Fin siCellule suivanteFin du sous-marin

Pour chaque exemples courants

Fermer tous les classeurs

Cette procédure fermera tous les classeurs ouverts, en enregistrant les modifications.

123456789 Sous FermerTous les classeurs()Dim wb comme classeurPour chaque wb dans les classeurswb.Close SaveChanges:=TrueWb suivantFin du sous-marin

Masquer toutes les feuilles

Cette procédure masquera toutes les feuilles de calcul.

12345678 Sous HideAllSheets()Dim ws As Feuille de calculPour chaque ws dans les feuillesws.Visible = xlSheetHiddenWS suivantFin du sous-marin

Afficher toutes les feuilles

Cette procédure affichera toutes les feuilles de calcul.

12345678 Sub UnhideAllSheets()Dim ws As Feuille de calculPour chaque ws dans les feuillesws.Visible = xlFeuilleVisibleWS suivantFin du sous-marin

Protéger toutes les feuilles

Cette procédure protégera toutes les feuilles de calcul.

12345678 Sous ProtectAllSheets()Dim ws As Feuille de calculPour chaque ws dans les feuillesMot de passe ws.Protect :="… "WS suivantFin du sous-marin

Déprotéger toutes les feuilles

Cette procédure déprotégera toutes les feuilles de calcul.

12345678 Sous UnprotectAllSheets()Dim ws As Feuille de calculPour chaque ws dans les feuillesws.Unprotect Password:="… "WS suivantFin du sous-marin

Supprimer toutes les formes sur toutes les feuilles de calcul

Cette procédure supprimera toutes les formes d'un classeur.

123456789101112 Sub DeleteAllShapesOnAllWorksheets()Feuille de cote en tant que feuille de calculDim Shp comme formePour chaque ws dans les feuillesPour chaque shp dans ws.ShapesShp.DeleteExpédition suivanteWS suivantFin du sous-marin

Actualiser tous les tableaux croisés dynamiques

Cette procédure actualisera tous les tableaux croisés dynamiques d'une feuille.

12345678 Sub RefreshAllPivotTables()Dim pvt en tant que tableau croisé dynamiquePour chaque pvt dans les feuilles ("Sheet1"). Tableaux croisés dynamiquespvt.RefreshTablepvt suivantFin du sous-marin

Utilisation de For Each dans Access VBA

La boucle For Each fonctionne de la même manière dans Access VBA que dans Excel VBA. L'exemple suivant supprimera toutes les tables de la base de données actuelle.

123456789 Sous RemoveAllTables()Dim tdf As TableDefDim dbs en tant que base de donnéesDéfinir dbs = CurrentDbPour chaque tdf dans dbs.TableDefsDoCmd.DeleteObject tdf.NameBoucleDéfinir dbs = RienFin du sous-marin

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave