Bonjour,

Afin de compiler des données mensuelles dans un onglet global, j'ai monté ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !