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
| Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim TL As Range 'déclare la variable TL (Tableau de Lignes)
Dim TEST As Boolean 'déclare la variable TEST
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set O = Sheets("Feuil1") 'définit l'onget O
TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
Set TL = O.Range("A1") 'initialise la plage TL
For I = 2 To UBound(TC, 1) 'boucles 1 : sur toutes les lignes du tableau TC (en partant de la seconde)
TEST = False 'initialise la variable TEST
For J = 1 To UBound(TC, 2) 'boucle 2 : sur toutes les colonnes du tableau TC
Select Case J 'agit en fonction de la colonne J
Case 1, 2, 4, 5, 7, 8 'cas pour les colonnes 1, 2, 4, 5, 7 et 8
If TC(I, J) <> "" Then TEST = True 'si la valeur en ligne I , colonne J du tableau TC n'est pas vide, définit la variable TEST
End Select 'fin de l'action en fonction de la colonne J
Next J 'prochaine colonne de la boucle 2
'si TEST est [Faux], redéfinit la plage PL (si nombre de cellules contenues dans PL vaut 1, TL est la ligne I,
'sinon, TL est l'union de TL et de la ligne I)
If TEST = False Then Set TL = IIf(TL.Cells.Count = 1, O.Rows(I), Application.Union(TL, O.Rows(I)))
Next I 'prochaine ligne de la boucle 1
TL.Delete 'supprime la palge TL
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub |
Partager