Supprimer une ligne sous condition
Résolu
Manshiz
Messages postés
184
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
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
--
Sage est celui qui veut apprendre.
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
--
Sage est celui qui veut apprendre.
1 réponse
-
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!!!!!
-
-
Salut,
Bien sur : en gras, à remplacer par le nom de ta textboxSub 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... -
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+ -
-
-