Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Combien de nom a tu dans ta listbox car pour chaque nom le code doit faire le tour de toutes les cellules de la colone C ce qui peut prendre un certain temps .
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Je regarde demain et te tient au courant mais je viens de m'appercevoir que ma macro n'aimais pas le fait que 2 nom identique soit l'un après l'autre.

Bonne nuit
 
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
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Nyko 283,

MILLE MILLE MERCI.
Je l'ai testé dans tous les sens et je dis que c'est la BONNE.

Chapeau, je vais pouvoir aller me coucher.

Passes une bonne nuit.
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…