Problème avec une boucle de type Do While =>Loop
Bonjour,
Afin de compiler des données mensuelles dans un onglet global, j'ai monté ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Application.ScreenUpdating = False
Dim SN As Byte, SNN As String, FR As Long, LR As Long
On Error Resume Next
For SN = 2 To 13
SNN = Sheets(SN).Name
With Sheets(SN)
.Range("A2:" & .Range("A2").SpecialCells(xlCellTypeLastCell).Address).Copy Sheets(1).Range("B65536").End(xlUp).Offset(1, 0)
End With
With Sheets(1)
FR = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
LR = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range("A" & FR & ":A" & LR).Value = SNN
End With
Next
End Sub |
Problème, ma dernière instruction avant le Next consiste à récupérer le nom de l'onglet (qui n'est autre que le mois...) pour le coller en colonne A de mon onglet global. Ca me créé un décalage car malgré l'absence d'onglet, la boucle continue pour m'insérer le nom du dernier onglet jusqu'à 13...
J'ai pensé à faire ceci comme ci-dessous pour parer à ce souci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Application.ScreenUpdating = False
Dim SN As Byte, SNN As String, FR As Long, LR As Long
SN = 2
Do While SN <> 0
SNN = Sheets(SN).Name
With Sheets(SN)
.Range("A2:" & .Range("A2").SpecialCells(xlCellTypeLastCell).Address).Copy Sheets(1).Range("B65536").End(xlUp).Offset(1, 0)
End With
With Sheets(1)
FR = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row
LR = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range("A" & FR & ":A" & LR).Value = SNN
End With
SN = SN + 1
Loop
End Sub |
Bien entendu ça ne marche pas (je ne maîtrise pas encore ce type de boucle)
Ce que je veux dire ici : C'est que si il n'y a plus d'onglet, alors on sort de la boucle.
Pourriez-vous m'aider SVP ?
Merci d'avance !