Supprimer ligne d'un classeur à partir d'une listbox1

  • Initiateur de la discussion Initiateur de la discussion croft
  • Date de début Date de début

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 !

croft

XLDnaute Nouveau
Bonsoir,

Je débute avec les macros excel et je suis tombé sur ce site qui semble semble fort complet et utile.

Après des recherches sur le forum et tenté d'adapter différents codes je ne parviens pas à trouver le bon, pourriez-vous m'aider SVP ?

J'ai créé tant bien que mal un userform avec 2 listbox et un bouton afficher.
Je souhaiterai savoir ce que je dois mettre en code VBA sur mon bouton "afficher" , sachant que je dois avoir pouvoir supprimer toutes les lignes de ma feuil1 qui se trouvent dans la listbox1, sachant que ma listbox est rempli de noms de clients présent en colonne C.

Je ne sais pas si cela suffit comme info, mais n'hésitez pas.

Merci pour votre aide et patience.
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Bonsoir Nyko283,

Avant tout merci pour ta patience.
J'ai supprimé exit for mais cela fait un moment que mon classeur clignote comme si il travaillait, j'ai d'ailleurs le sablier.
J'ai l'impression qu'il tourne en boucle.

Merci
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Bonjour Croft,

Suivant le dicton qui dit que la nuit porte conseille, cela vient de se vérifier,

En effet j'avais déjà été confronter à un refus de la méthode FInd de fonctionner, tout simplement parceque j'éssaiyé de la faire tourner directement sur le code d'un userform et apparament elle n'aime pas.

Alors je suis passé par un appel de fonction pour pallier à ça et maintenant cela tourne comme il faut.

je te joint mon fichier exemple quand même...

Sinon pour le code du bouton sur l'userform
Code:
Dim cell As Range, nomClient As String, n As Integer, I As Integer, c As Integer
I = ListBox1.ListCount - 1
For n = 0 To I
    Me.ListBox1.ListIndex = 0 'selectionne dans la listbox1 l'element n
    nomClient = Me.ListBox1.Value ' affecte a la variable nomClient l'élément selectionné de la listbox
    c = 1
    While c <> 0 ' La boucle tourne tant qu'elle trouve une occurence du nom
        c = trouve(nomClient) 'trouve la ligne ou il y a une occurence du nom client
        If c <> 0 Then ThisWorkbook.Worksheets("Feuil1").Range("C" & c).EntireRow.Delete ' si une occurence a été trouvé on supprime la ligne concernée
    Wend
    Me.ListBox1.RemoveItem 0 'une fois qu'il n'y a plus d'occurence alors on efface le nom de la listbox1
Next n

et le code a inserer dans un module
Code:
Function trouve(nomClient)
Dim c As Integer
On Error Resume Next
With ActiveWorkbook.Worksheets("Feuil1").Range("C1:C1634")
 c = .Find(nomClient).Row
 
 
End With
trouve = c
End Function

je pense que maintenant ton bonheur est là.
 

Pièces jointes

RESOLU : Supprimer ligne d'un classeur à partir d'une listbox1

Bonsoir le forum, Nyko283,

Avant tout un GRAND MERCI pour le temps que tu as passé sur mon problème.

Je ne sais comment te dire si ce n'est que tu es un CHEF, c'est grandiose.

Ca fonctionne à merveille et j'obtiens bien le résultat attendu.

Super à vous et super le forum.

Bonne continuation et bravo.
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Re le forum,

Je rencontre un tout petit souci.

Le code de Nyko283 fonctionne, mais je ne sais pas pour quelle raison parfois il me supprime tous les noms même ceux que je n'ai pas sélectionné dans la listbox1.

Or je souhaite supprimer que les noms de la listbox1.

Si vous avez une idée d'amélioration.

Merci.
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Re,

Je viens de comprendre pourquoi certain nons s'effacent.
En fait dans ma colonne je peux avoir Dupont et Dupont.C, si j'ai Dupont dans ma listbox 1, le code me supprime Dupont et Dupont.C de mon classeur Excel, bien que Dupont.C n'est pas dans la listbox1 et ne doit donc pas être supprimé.

Comment mettre dans le code que je souhaite que le nom exact de la listbox soit supprimé ?

Par avance, merci.
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Re,

alors la raison est que la méthode FIND peut avoir plusieurs paramètres et on la facheuse tendances à garder en mémoire la dernière recherche effectuer donc en utilisant find on devrait avoir

Find(What:=nomClient, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns)
pour plus d'info sur la valeur que peut prendre chaque paramètres rend toi dans l'aide intégrer à ton editeur vb.
Là le paramètre qui te pose problème est "LookAt" qui définit si seulement une partie ou toute la valeur de la cellule doit correspondre

donc en remplacent
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Re,

alors la raison est que la méthode FIND peut avoir plusieurs paramètres et on la facheuse tendances à garder en mémoire la dernière recherche effectuer donc en utilisant find on devrait avoir

Find(What:=nomClient, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns)
pour plus d'info sur la valeur que peut prendre chaque paramètres rend toi dans l'aide intégrer à ton editeur vb.
Là le paramètre qui te pose problème est "LookAt" qui définit si seulement une partie ou toute la valeur de la cellule doit correspondre

donc en remplacent
Code:
 .Find (nonclient).row

par

Code:
.Find(What:=nomClient, LookIn:=xlValues, LookAt:=xlWhole,_
SearchOrder:=xlByColumns).Row

tout devrait rentrer dans l'ordre
 
- 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

Retour