Microsoft 365 suppression de lignes suivant condition dans excel

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

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

thilico

XLDnaute Nouveau
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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
???
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.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • comptes6.xlsm
    25.4 KB · Affichages: 3

thilico

XLDnaute Nouveau
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
 

thilico

XLDnaute Nouveau
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/>
 

Discussions similaires

Réponses
14
Affichages
652
Réponses
7
Affichages
349

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin