Microsoft 365 suppression de lignes suivant condition dans excel

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thilico

XLDnaute Nouveau
Bonjour à tous
Je suis novice dans le vba et j'ai 67ans,j ai donc un peu de mal à comprendre
Jevous mets un code que j' ai trouvé
Sub Sup()
Application.ScreenUpdating = False
For i = [A650].End(xlUp).Row To 1 Step -1
If Left(Cells(i, 1), 4) = "OUI" Then Rows(i).Delete
Next i
End Sub
j 'ai compris mon problème mais j'ai pas la solution
Si je remplace oui par un mot plus long cela ne marche pas parce que j 'ai compris qu'il cherchait un mot de 4 lettres"If Left(Cells(i, 1), 4)"
Je voudrais qu'il puisse trouverplus grand car quelquefois suivant mes fichiersbje dois supprimer des lignes contenant +sieurs mots
Merci si quelqu'un a une solution
 
Solution
comment puis je la supprimer
Apparemment, vous y êtes arrivé.
les mots à utiliser sont "compte pro et "pret garanti par l etat
"Left" ne peut pas être utiliser car ces mots ne sont pas au début de phrase.
J'ai utilisé "Like" qui veut dire "Contient". J'ai mis des "*" qui signifie n'importe quel caractère.
Le LCase sert à tout mettre en minuscules sinon il faut respecter la casse.
En PJ un essai avec :
VB:
Sub SuppressionLignes()
Application.ScreenUpdating = False
For i = Cells(Cells.Rows.Count, "A").End(xlUp).Row To 3 Step -1
    If LCase(Cells(i, 1)) Like "*compte pro*" Then
        Rows(i).Delete
    ElseIf LCase(Cells(i, 1)) Like "*pret garanti*" Then
        Rows(i).Delete
    End If
Next i
End Sub
Bonjour Thilico, et bienvenu sur XLD,
Auriez vous la liste des mots à reconnaitre ? Et un petit fichier test, ce serait plus simple. 🙂
Left(Cells(i, 1), 4) extrait les 4 premières lettres à gauche.
Vous pouvez enchainer les test les uns après les autres avec par ex :
VB:
Sub Sup()
Application.ScreenUpdating = False
For i = [A650].End(xlUp).Row To 1 Step -1
If Left(Cells(i, 1), 4) = "OUI" Then Rows(i).Delete
ElseIf Left(Cells(i, 1), X1) = "MOT1" Then Rows(i).Delete
ElseIf Left(Cells(i, 1), X2) = "MOT2" Then Rows(i).Delete
...
endif
Next i
End Sub
Là il supprimera les lignes s'il trouve MOT1 pour les X1 premières lettres, puis MOT2 pour les X2 premières lettres, etc, etc.
Par ex si vous voulez supprimer les lignes qui commencent par "Evidemment" mais aussi "Bien sur", alors :
VB:
Sub Sup()
Application.ScreenUpdating = False
For i = [A650].End(xlUp).Row To 1 Step -1
If Left(Cells(i, 1), 4) = "OUI" Then Rows(i).Delete
ElseIf Left(Cells(i, 1), 10) = "Evidemment" Then Rows(i).Delete
ElseIf Left(Cells(i, 1), 8) = "Bien sur" Then Rows(i).Delete
endif
Next i
End Sub
 
Rebonjour
je vous joint le fichier
J'ai enlevé toutes les infos personnelles
Tous les mois je fais les soldes de banque pour plusieurs de mes amis
c'est pour cela que pour une personne je dois supprimer les comptes des autres personnes
c(est pour cela que j'avais en vba
Cela a maerché jusqu'à que j'ai réinitialisé mon pc, et j ai pas su les refaire
 
???
Ou sont les OUI concernés ?
Quels sont les mots clé à utiliser ?
Sur quelles feuilles doit t-on appliquer la macro ?

De plus votre fichier 'est pas anonyme et est interdit sur XLD.
Sauf si par ex LIVRET BLEU MME LILIANE DE SMET ou M OU MME THIERRY DE SMET sont fictifs.
Si ce n'est pas la cas, supprimez cette PJ et anonymiser là correctement.
 
comment puis je la supprimer
Apparemment, vous y êtes arrivé.
les mots à utiliser sont "compte pro et "pret garanti par l etat
"Left" ne peut pas être utiliser car ces mots ne sont pas au début de phrase.
J'ai utilisé "Like" qui veut dire "Contient". J'ai mis des "*" qui signifie n'importe quel caractère.
Le LCase sert à tout mettre en minuscules sinon il faut respecter la casse.
En PJ un essai avec :
VB:
Sub SuppressionLignes()
Application.ScreenUpdating = False
For i = Cells(Cells.Rows.Count, "A").End(xlUp).Row To 3 Step -1
    If LCase(Cells(i, 1)) Like "*compte pro*" Then
        Rows(i).Delete
    ElseIf LCase(Cells(i, 1)) Like "*pret garanti*" Then
        Rows(i).Delete
    End If
Next i
End Sub
 

Pièces jointes

Merci beaucoup pour votre temps
j 'ai voulu rajouter une suppression de ligne avec " compte de liquidité pea
Mais cela ne va plus
je vous mets le code que j ai transformé.

Sub SuppressionLignes()
Application.ScreenUpdating = False
For i = Cells(Cells.Rows.Count, "A").End(xlUp).Row To 3 Step -1
If LCase(Cells(i, 1)) Like "*compte pro*" Then
Rows(i).Delete
ElseIf LCase(Cells(i, 1)) Like "*pret garanti*" Then
Rows(i).Delete
ElseIf LCase(Cells(i, 1)) Like "*COMPTE DE LIQUIDITE PEA*" Then
Rows(i).Delete
End If
Next i
End Sub
pouvez trouver l'erreur que j ai commise
merci
 
Bonjour,
merci pour votre aide,
je voudrais remplacer la colonne A par uune pladg de cellule type A1: A100
Merci d avance
< Sub SuppressionLignes()
Application.ScreenUpdating = False
For i = Cells(Cells.Rows.Count, "A").End(xlUp).Row To 3 Step -1
If LCase(Cells(i, 1)) Like "*total*" Then
Rows(i).Delete
ElseIf LCase(Cells(i, 1)) Like "*somme garanti*" Then
Rows(i).Delete
ElseIf LCase(Cells(i, 1)) Like "*bonjour*" Then
Rows(i).Delete
ElseIf LCase(Cells(i, 1)) Like "*essai*" Then
Rows(i).Delete

End If
Next i
Range("c14").Value = 35
Range("c15").Value = 54.78
Range("c26") = Application.WorksheetFunction.Sum(Range("C4:C17"))
Application.ScreenUpdating = True

End Sub/>
 
Bonsoir,
Il suffit de remplacer
VB:
For i = Cells(Cells.Rows.Count, "A").End(xlUp).Row To 3 Step -1
par
Code:
For i = 100 To 1 Step -1
ou "To 3" suivant votre besoin.
Cells(i,1) signifie Cells(i,"A") donc vous agirez bien sur les cellules de la colonne A.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
531
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
94
Retour