Sub Test()
Dim BE As Variant 'décalre la variable BE (Boîte d'Entrée)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CF As String 'déclare la variable CF (contenu de la Cellule de Fin)
Dim O1 As Object 'déclare la variable O1 (Onglet 1)
Dim O2 As Object 'déclare la variable O2 (Onglet 2)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim V As Long 'déclare la variable V (nombre de cellules Vides)
Dim U As Long 'déclare la variable U (Nombre de cellules égales à Un)
Dim Dest As Range 'décalre la variable Dest (cellule de Destination)
'définit la boite d'entrée BE
Set O2 = Sheets("Sheet2") 'définit l'onglet O2
O2.Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'efface les anciennes données de comptage
debut: 'étiquette
BE = Application.InputBox("Tapez le numéro de ligne de la dernière cellule de la plage à compter.", "DERNIÈRE CELLULE", Type:=1)
If BE = False Then Exit Sub 'si bouton "Annuler", sort de la procédure
If BE > Application.Rows.Count Then GoTo debut 'si le numéro de ligne est supérieur au nombre de lignes de l'application retourne à la boîte d'entrée via l'étiquette "debut"
Set O1 = Sheets("Sheet1") 'définit l'onglet O1
Set PL = O1.Range("A2:A" & BE + 1) 'définit la plage PL (avec uen cellule en plus (vide) pour finaliser le comptage
CF = CStr(O1.Range("A" & BE + 1).Value) 'définit la variable CF
O1.Range("A" & BE + 1).Value = "" 'vide le contenue de la cellule de fin (pour le besoin de la boucle)
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
Set Dest = Nothing 'réinitalise la variable Dest
Select Case CStr(CEL.Value) 'agit en fonction de la valeur de la cellule convertie en lettre
Case "1" 'cas "1"
U = U + 1 'incrément U
If V > 0 Then 'condition : si V est positif
'définit la variable dest (si la ligne de la première cellule vide de la colonne B est supérieure à la ligne
'de la première cellule vide de la colonne A, Dest est la première cellule vide de la colonne A, sinon
'Dest est la première cellule vide de la colonne B, décalée d'une colonne vers la gauche à gauche)
Set Dest = IIf(O2.Cells(Application.Rows.Count, 2).End(xlUp).Row > O2.Cells(Application.Rows.Count, 1).End(xlUp).Row, _
O2.Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, -1), _
O2.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
Dest.Value = V ' place dans la cellule de destination Dest le nombe de cellules vides V
End If 'fin de la condition
V = 0 'réinitialise V
Case Else 'autre cas
V = V + 1 'incrémente U
If U > 1 Then 'condition : si U est supérieur à 1
'définit la variable dest (première cellule vide de la colonne A décalée d'une colonne vers la droite)
Set Dest = O2.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 1)
Dest.Value = U - 1 'place dans la cellule de destination Dest, le nombe de cellules contenant un, qui se suivent, moins 1
End If 'fin de la condition
U = 0 'réinitialise U
End Select 'fin de l'action en fonction de
Next CEL 'prochaine cellule de la boucle
O1.Range("A" & BE + 1).Value = CF 'récupère la valeur de la cellule de fin
O2.Activate 'active l'oglet O2
End Sub