Problème pour supprimer des lignes en VBA
Fermé
bambino
-
25 mai 2010 à 11:52
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 25 mai 2010 à 15:20
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 25 mai 2010 à 15:20
A voir également:
- Problème pour supprimer des lignes en VBA
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Supprimer edge - Guide
- Supprimer bing - Guide
- Vente en ligne particulier - Guide
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 25/05/2010 à 12:20
Modifié par pijaku le 25/05/2010 à 12:20
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? --
koji56
Messages postés
30
Date d'inscription
mardi 27 avril 2010
Statut
Membre
Dernière intervention
5 juillet 2010
6
Modifié par koji56 le 25/05/2010 à 12:22
Modifié par koji56 le 25/05/2010 à 12:22
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
25 mai 2010 à 14:42
25 mai 2010 à 14:42
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 "...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
25 mai 2010 à 14:53
25 mai 2010 à 14:53
peut être pourrais tu placer ici (grâce à cjoint ou ci-joint) une copie de ton classeur sans données confidentielles... Parce que là ton code est bon...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
25 mai 2010 à 15:18
25 mai 2010 à 15:18
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
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 25/05/2010 à 15:21
Modifié par Polux31 le 25/05/2010 à 15:21
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