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   -
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.

1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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!!!!!
    0
    1. Manshiz Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   10
       
      Bonsoir pijaku,

      Désolé pour le retard.

      Le code est efficace, mais comme j'ai déjà une textbox pour rechercher,
      tu voudrais bien refaire le code sans l'imputbox?
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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...
      0
    3. Manshiz Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   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+
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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"?
      0
    5. Manshiz Messages postés 184 Date d'inscription   Statut Membre Dernière intervention   10
       
      Je t'ai envoyer un email avec le fichier.

      A+
      0