Problème de pas avec VBA
Résolu
mad
-
mad -
mad -
Bonjour,
Je cherche à supprimer des lignes tout en respectant une incrémentation.
Pour ce faire je veux mettre des X et supprimer les lignes X. Mon problème est qu' à partir de la ligne 8 j'ai des X partout sans respecter le pas que je souhaite.
Je n'y connais pas grand chose en programmation. Voici le code que j'utilise:
Sub test()
'Déclaration ===============
Dim X As Long
Dim Y As Integer
Dim Cel As Range
'MEI =======================
Y = 5
For X = 8 To 60001 Step 7
Range(Cells(X, Y), Cells(X + 29, Y)) = "X"
Next X
'suppression ===============
Do 'début de boucle ---------------------
Set Cel = Columns(Y).Find("X", LookIn:=xlValues)
'cel=celuule de la colonne Y contenant X
If Cel Is Nothing Then
'si cel n'existe pas
Exit Do
'sortir de la boucle
Else ' sinon
Rows(Cel.Row).Delete
'supprimer la ligne de cel
Set Cel = Nothing
'supprimer cel(la variable)
End If
Set Cel = Nothing
Loop 'fin de boucle --------------------
End Sub
Merci d'avance
Je cherche à supprimer des lignes tout en respectant une incrémentation.
Pour ce faire je veux mettre des X et supprimer les lignes X. Mon problème est qu' à partir de la ligne 8 j'ai des X partout sans respecter le pas que je souhaite.
Je n'y connais pas grand chose en programmation. Voici le code que j'utilise:
Sub test()
'Déclaration ===============
Dim X As Long
Dim Y As Integer
Dim Cel As Range
'MEI =======================
Y = 5
For X = 8 To 60001 Step 7
Range(Cells(X, Y), Cells(X + 29, Y)) = "X"
Next X
'suppression ===============
Do 'début de boucle ---------------------
Set Cel = Columns(Y).Find("X", LookIn:=xlValues)
'cel=celuule de la colonne Y contenant X
If Cel Is Nothing Then
'si cel n'existe pas
Exit Do
'sortir de la boucle
Else ' sinon
Rows(Cel.Row).Delete
'supprimer la ligne de cel
Set Cel = Nothing
'supprimer cel(la variable)
End If
Set Cel = Nothing
Loop 'fin de boucle --------------------
End Sub
Merci d'avance
4 réponses
Bonjour,
Apparemment tu veux supprimer une ligne sur 7.
Plutôt que de passer par le remplissage de cellules cibles par "X", je te conseille de :
- soit faire un pas de 6 pour supprimer les lignes (tout le bas du tableau montant d'un cran)
- soit faire une boucle for avec un pas de -7 (donc en partant du bas du tableau) : For i = 60005 to 8 step -7
Rows(i).delete
A+
Apparemment tu veux supprimer une ligne sur 7.
Plutôt que de passer par le remplissage de cellules cibles par "X", je te conseille de :
- soit faire un pas de 6 pour supprimer les lignes (tout le bas du tableau montant d'un cran)
- soit faire une boucle for avec un pas de -7 (donc en partant du bas du tableau) : For i = 60005 to 8 step -7
Rows(i).delete
A+
Bonjour,
c'est normal que tu aies des X partout à partir de la ligne 8 car c'est toi qui lui demande de mettre des X de la ligne 8 à la ligne 6001 via ce bout de code :
For X = 8 To 60001 Step 7 'A partir de la ligne 8 toutes les 7 lignes jusqu'à la ligne 60001
Range(Cells(X, Y), Cells(X + 29, Y)) = "X" 'la cellule de la ligne x et colonne 5 à la cellule de la ligne X+29 (donc si x=8, de la ligne 8 à 37), la veleur des cellules est X
Next X 'on ajoute 7 à la variable X
Que voulais-tu faire à la base?
c'est normal que tu aies des X partout à partir de la ligne 8 car c'est toi qui lui demande de mettre des X de la ligne 8 à la ligne 6001 via ce bout de code :
For X = 8 To 60001 Step 7 'A partir de la ligne 8 toutes les 7 lignes jusqu'à la ligne 60001
Range(Cells(X, Y), Cells(X + 29, Y)) = "X" 'la cellule de la ligne x et colonne 5 à la cellule de la ligne X+29 (donc si x=8, de la ligne 8 à 37), la veleur des cellules est X
Next X 'on ajoute 7 à la variable X
Que voulais-tu faire à la base?