Macro excel double boucle

Bonjour,

j'ai un probleme au niveau de ma macro excel. Je seche dessus depuis plusieurs jours deja. J'ai donc besoin que quelqu'un vienne à mon secours !!!

Je souhaite créer une double boucle. En effet je veux sélectionner les dernieres cellules d'une colonne (M) dans chaque onglet créé auparavant par la premiere boucle. pour cela j'ai besoin de faire une double boucle car les noms des onglets sont créés en fonction des informations récupérées par la premiere boucle. (je sais c'est un peu compliqué)

Mon probleme est que lorsque je lance ma macro seule la deuxieme boucle est lancée et non la premiere qui devrait me sélectionner le bon onglet .

Voila mon code :

Sub essai()

Dim I As Long

Sheets("Toutes BUs Valeurs").Select
Dim Plage_BU As Range

Set Plage_BU = Range("D8:D" & Range("D8").End(xlDown).Row)
For I = Plage_BU.Cells.Count To 1 Step -1
Plage_BU.Cells(I).Value = UCase(Plage_BU.Cells(I).Value)
Plage_BU.Cells(I - 1).Value = UCase(Plage_BU.Cells(I - 1).Value)
If Plage_BU.Cells(I).Value <> Plage_BU.Cells(I - 1).Value Then
Sheets(Plage_BU.Cells(I - 1).Value).Select
End If

Dim J As Double
Dim Plage_Total As Range
Set Plage_Total = Range("M2:M" & Range("M2").End(xlDown).Row)
For J = Plage_Total.Cells.Count To 1 Step -1
Plage_Total.Cells(J).Value = UCase(Plage_Total.Cells(J).Value)
Plage_Total.Cells(J - 1).Value = UCase(Plage_Total.Cells(J - 1).Value)
If Plage_Total.Cells(J).Value = "" Then
Plage_Total.Cells(J - 1).Select
Selection.Copy
Sheets("Récapitulatif").Select
Range("A4").Select
Selection.Insert Shift:=xlDown
End If
Next
Next

End Sub

Je vous remercie par avance de vos réponses !

Jonathan
Configuration: Excel 2003

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,

    Cells est désigné par le N° de ligne ET le numéro de colonne

    par ex: cells(8,2) concerne la cellule B8

    1. Vous voulez dire que je devrais mettre (J-1,0) par exemple?

      Mais en réalité les boucles exécutées une par une fonctionnent correctement, c'est le fait de les mettre ensemble qui pose probleme. En effet je voudrais que pour chaque condition de I, la "boucle" de J soit lancée.

      Or seule la "boucle" de J se lance, lors de l'exécution la premiere boucle est sautée.

      Merci