1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| Sub compter()
Dim lig As Byte, col As Long, dercol As String, numdercol As Long
Dim plage As Range, y As Byte, i As Byte
Dim verif As Boolean
'met dans une variable le numéro de la dernière ligne utilisée
'derniereligne = (Range("A1").SpecialCells(xlCellTypeLastCell).Row)
'boucle sur toute les lignes utilisées à partir de la ligne 1 jusqu'a la 30
For y = 1 To 30
'Récupère l'adresse de la dernière colonne de la ligne
dercol = Cells(y, Columns.Count).End(xlToLeft).Address
'récupère le numéro de la dernière colonne utilisée de la ligne
numdercol = Cells(y, Columns.Count).End(xlToLeft).Column
'définie ma plage de recherche et de calcul des cellules vides à partir de la colonne B
Set plage = Range(Cells(y, 2), Cells(y, numdercol))
'donne à i la valeur 1
i = 1
'définie ma ligne de report des valeurs
lig = y + 30
'définie ma colonne de départ de report ici colonne 1 donc A
col = 1
'boucle sur chaque cellule de la ligne à partir de la colonne B
For Each c In plage
'si l'adresse de la cellule est égale à l'adresse de la dernière cellule de la ligne
' alors on sort de la boucle
If c.Address = dercol Then Exit For
'si la cellule est vide et celle de droite est pleine alors
If c.Value = "" And c.Offset(0, 1) <> "" Then
i = i + 1
verif = True
'si la cellule est vide et celle de droite est vide alors
ElseIf c.Value = "" And c.Offset(0, 1) = "" Then
i = i + 1
End If
'si ma variable verif est vrai alors
If verif = True Then
'j'insère 30 ligne + bas à partir de la colonne A la valeur trouvée
Cells(lig, col).Value = i
Debug.Print i
'je rajoute 1 à col pour aller à la colonne suivante
col = col + 1
'je remet ma variable verif à false
verif = False
End If
'si la cellule est pleine et celle de droite est pleine
If c.Value <> "" And c.Offset(0, 1) <> "" Then
i = 1
Cells(lig, col) = i
col = col + 1
Debug.Print i
'si la cellule est pleine et celle de droite est vide
ElseIf c.Value <> "" And c.Offset(0, 1) = "" Then
i = 1
i = i + 1
Cells(lig, col) = i
col = col + 1
i = 1
End If
Next c
Next y
End Sub |
Partager