Problème pour supprimer des lignes en VBA
bambino
-
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je cherche à supprimer des lignes dans mon tableau Excel. En fait je veut les supprimer lorsque je trouve la valeur "ACDT" dans la colonne G de" mon tableau. Mon code ne fonctionne pas mais je ne comprend pas pourquoi: voilà mon code
Sub suppressionlignesacdt()
For i = 1 To 1000
If Cells(7, i).Text = "ACDT" Then
Cells(7, i).EntireRow.Delete
End If
Next
End Sub
je cherche à supprimer des lignes dans mon tableau Excel. En fait je veut les supprimer lorsque je trouve la valeur "ACDT" dans la colonne G de" mon tableau. Mon code ne fonctionne pas mais je ne comprend pas pourquoi: voilà mon code
Sub suppressionlignesacdt()
For i = 1 To 1000
If Cells(7, i).Text = "ACDT" Then
Cells(7, i).EntireRow.Delete
End If
Next
End Sub
A voir également:
- Problème pour supprimer des lignes en VBA
- Supprimer rond bleu whatsapp - Guide
- Supprimer une page word - Guide
- Partager des photos en ligne - Guide
- Supprimer pub youtube - Accueil - Streaming
- Fichier impossible à supprimer - Guide
4 réponses
Bonjour,
1- utiliser Cells(ligne, col).Value plutôt que .Text
2- vous avez inversé ligne et colonne dans le cells. 7 = col, i = ligne :
Cells(i, 7).Value
3- préférer lors de suppression de ligne une boucle "inversée" en commençant par la dernière ligne et en "remontant" :
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
1- utiliser Cells(ligne, col).Value plutôt que .Text
2- vous avez inversé ligne et colonne dans le cells. 7 = col, i = ligne :
Cells(i, 7).Value
3- préférer lors de suppression de ligne une boucle "inversée" en commençant par la dernière ligne et en "remontant" :
Sub suppressionlignesacdt() For i = 1000 To 1 Step - 1 If Cells(i, 7).Value = "ACDT" Then Cells(i, 7).EntireRow.Delete End If Next i End Sub
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
Je pense qu'il faut que tu précise dans quelle feuille il faut supprimer les lignes :
Si tes données se trouvent dans la feuille 1 voila ce que ça donnerait (et tu a oublié le i après le next :
Si tes données se trouvent dans la feuille 1 voila ce que ça donnerait (et tu a oublié le i après le next :
Sub suppressionlignesacdt() For i = 1 To 1000 If Feuil1.Cells(7, i).Text = "ACDT" Then Feuil1.Cells(7, i).EntireRow.Delete End If Next i End Sub
cela ne fonctionne toujours pas avec le code suivant:
De plus lorsque je précise la feuille le code n'est pas correct.
Si quelqu'un a une autre idée, je ne vois vraiment plus aucun problème mais quand j'éxécute les lignes que je veut supprimer sont toujours là à mon grand désespoir
Sub suppressionlignesacdt() For i = 1000 To 1 Step -1 If Cells(i, 7).Value = "ACDT" Then Cells(i, 7).EntireRow.Delete End If Next i End Sub
De plus lorsque je précise la feuille le code n'est pas correct.
Si quelqu'un a une autre idée, je ne vois vraiment plus aucun problème mais quand j'éxécute les lignes que je veut supprimer sont toujours là à mon grand désespoir
Sub suppressionlignesacdt() With Sheets("NomDeTaFeuille") For i = 1000 To 1 Step -1 If .Cells(i, 7).Value = "ACDT" Then .Cells(i, 7).EntireRow.Delete End If Next i End With End Sub
Sinon vérifier que dans votre colonne G, les cellules ou l'on trouve ACDT ne comprennent pas d'espace genre : " ACDT "...
Tu peux également essayer l'opérateur Like pour comparer tes 2 chaines de caractères. Mais attention, si tu as "LACDTEUR" dans une cellule colonne G la ligne sera supprimée également...
Si c'est un problème de format de cellule, essaye :
Sub suppressionlignesacdt() With Sheets("NomDeTaFeuille") For i = 1000 To 1 Step -1 If .Range("G" & i).Value Like "*ACDT*" Then .Rows(i).EntireRow.Delete End If Next i End With End Sub
Si c'est un problème de format de cellule, essaye :
Sub suppressionlignesacdt() Dim i As Integer Dim chaine As String With Sheets("NomDeTaFeuille") For i = 1000 To 1 Step -1 chaine = CStr(.Range("G" & i).Value) If chaine Like "*ACDT*" Then .Rows(i).EntireRow.Delete End If Next i End With End Sub
Bonjour,
Peut être comme ça:
;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Peut être comme ça:
Sub suppressionlignesacdt() Dim i As Long Dim ws As Worksheet Set ws = Worksheets(1) ' ou le nom de l'onglet : Workseets("MonOnglet") For i = 1 To 1000 If ws.Cells(i, 7).Value = "ACDT" Then ws.Rows(i).Delete i = i - 1 End If Next i Set ws = Nothing End Sub
;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau