Supprimer une ligne sous condition [Résolu/Fermé]

Signaler
Messages postés
184
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
18 août 2012
-
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
-
Bonjour,

je sais que la question à déjà été posée des dixaines de fois; j'ai fait des tests avec les solutions proposées sur le site, mais je n'arrive à aucun résultat.

Voici ce que j'ai pour l'instant:

La procédure supprime la dernière ligne.

Dim derligne As String
derligne = Range("a65536").End(xlUp).Row
If Cells(derligne + 1, 1).Value = "" Then
Cells(derligne, 1).EntireRow.Delete
End If

Comment utilisé cette même procédure en disant que:

Si Cells.Value est égale au nom ou prénom recherché
activé la cellule et supprimer la ligne.


Dans le cas ou ça peux aider:

Sheets("Liste") - Nb colonnes 9.

TextBox's = Rechercher.Value - Nom.Value - Prénom.Value






1 réponse

Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 607
SAlut,
En fait, la première démarche est de donner à Visual Basic le nom (et/ou le prénom) dont tu souhaites supprimer la ligne.
Un exemple avec une InputBox :
Dim result As String
result = InputBox("Veuillez saisir le nom et/ou le prénom à supprimer :")

Ensuite, rechercher dans la base de données le n° de ligne correspondant :
Dim Trouve As Range
Dim i As Integer
Set Trouve = Sheets("Liste").Columns(1).Cells.Find(result)
If Trouve Is Nothing Then
        MsgBox "Ce nom n'existe pas dans la base, veuillez le vérifier"
Else
        i = Sheets("Liste").Columns(1).Cells.Find(result).Row
End If
Set Trouve = Nothing

Ne reste qu'à supprimer cette ligne :
Cells(i, 1).EntireRow.Delete

Soit le code complet :
Sub suppression_lignes()
Dim result As String
Dim Trouve As Range
Dim i As Integer

result = InputBox("Veuillez saisir le nom et/ou le prénom à supprimer :")
'indiquer à la place du 1 le n° de la colonne ou se trouvent les données à trouver...
Set Trouve = Sheets("Liste").Columns(1).Cells.Find(result)
If Trouve Is Nothing Then
        MsgBox "Ce nom n'existe pas dans la base, veuillez le vérifier"
Else
        i = Sheets("Liste").Columns(1).Cells.Find(result).Row
        Cells(i, 1).EntireRow.Delete
End If

Set Trouve = Nothing
End Sub

Attention, comme on utilise Delete, il convient de tester d'abord cette procédure sur une copie du fichier et non sur l'original!!!!!
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 607
Salut,
Bien sur : en gras, à remplacer par le nom de ta textbox
Sub suppression_lignes()
Dim Trouve As Range
Dim i As Integer

'indiquer à la place du 1 le n° de la colonne ou se trouvent les données à trouver...
Set Trouve = Sheets("Liste").Columns(1).Cells.Find(TextBox1.Value)
If Trouve Is Nothing Then
        MsgBox "Ce nom n'existe pas dans la base, veuillez le vérifier"
Else
        i = Sheets("Liste").Columns(1).Cells.Find(result).Row
        Cells(i, 1).EntireRow.Delete
End If

Set Trouve = Nothing
End Sub

Tu peux encore mieux faire en remplaçant cette TextBox par une combobox qui listerait les noms contenus dans ta colonne. Ca limite les erreurs de saisie...
Messages postés
184
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
18 août 2012
10
Bonjour pijaku,

Merci d'avoir répondu.

Et encore merci pour ton aide.

Juste une petite correction: Cells.Find(result) remplacer par Cells.Find(Trouve).

J'aurais encore une question.

J'ai une listbox qui liste les adresses emails dans un autre formulaire.

Est-il possible que, suite à la recherche elle ne prenne pas en cosidération la personne (adresse email) recherchée?


A+
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 607
J'ai une listbox qui liste les adresses emails dans un autre formulaire Par formulaire tu entends quoi exactement? UserForm? Comment est complétée ta ListBox? Grâce à son "RowSource"?
Messages postés
184
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
18 août 2012
10
Je t'ai envoyer un email avec le fichier.

A+
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 607
j'y regarde