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
| Sub RegrouperLignes()
' Déclaration des variables
Dim i As Long
Dim lastRow As Long
Dim lo As ListObject
' Définition de l'objet ListObject pour accéder au tableau
Set lo = Sheets("Feuil1").ListObjects("Tableau1")
' Récupération du numéro de la dernière ligne du tableau
lastRow = lo.ListRows.Count
' Boucle pour parcourir les lignes en commençant par la dernière et en remontant
For i = lastRow To 2 Step -1
' Vérification si la valeur de la colonne "num" (3ème colonne) est identique à celle de la ligne précédente
If lo.DataBodyRange(i, 3) = lo.DataBodyRange(i - 1, 3) Then
' Vérification si la cellule de la colonne "NomEx" (6ème colonne) de la ligne précédente est vide
If lo.DataBodyRange(i - 1, 6) = "" Then
' Copie de la valeur de la ligne en double dans cette cellule
lo.DataBodyRange(i - 1, 6) = lo.DataBodyRange(i, 6)
End If
' Vérification si la cellule de la colonne "PrenEx" (7ème colonne) de la ligne précédente est vide
If lo.DataBodyRange(i - 1, 7) = "" Then
' Copie de la valeur de la ligne en double dans cette cellule
lo.DataBodyRange(i - 1, 7) = lo.DataBodyRange(i, 7)
End If
' Vérification si la cellule de la colonne "Code1" (8ème colonne) de la ligne précédente est vide
If lo.DataBodyRange(i - 1, 8) = "" Then
' Copie de la valeur de la ligne en double dans cette cellule
lo.DataBodyRange(i - 1, 8) = lo.DataBodyRange(i, 8)
End If
' Vérification si la cellule de la colonne "Code2" (9ème colonne) de la ligne précédente est vide
If lo.DataBodyRange(i - 1, 9) = "" Then
' Copie de la valeur de la ligne en double dans cette cellule
lo.DataBodyRange(i - 1, 9) = lo.DataBodyRange(i, 9)
End If
' Vérification si la cellule de la colonne "Code3" (10ème colonne) de la ligne précédente est vide
If lo.DataBodyRange(i - 1, 10) = "" Then
' Copie de la valeur de la ligne en double dans cette cellule
lo.DataBodyRange(i - 1, 10) = lo.DataBodyRange(i, 10)
End If
' Suppression de la ligne en double
lo.ListRows(i).Delete
End If
Next i
End Sub |
Partager