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

Bonjour CROFT,bonjour le forum,

Deja tu peut utiliser l'enregistreur de macro pour connaitre les instruction pour la suppresion d'une ligne, puis
tu peut lancer une recherche
Dim c As integer,nomClient as string,n as integer
for n = 0 to listbox1.listcount - 1
nomClient = me.listbox1.listindex(n)
With Activeworkbook.Worksheets("Feuil1").Range("C:C")
set c =.Find(What:= nomClient, LookIn:=xlValue, LookAt:=xlWhole).row

tu place ici l'instruction pour supprimer la ligne en remplaçant le numero de ligne par le "c"
end with
Next n

J'espere repondre a ta question
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Bonour Nyko 283,

Merci de t'être penché sur ma question.
Pour être honnête je ne comprends pas tout
Que veut dire :
tu place ici l'instruction pour supprimer la ligne en remplaçant le numero de ligne par le "c"

Je suis vraiment débutante et je ne maitrise pas encore (j'espère que ca viendra vite) le langage VBA.

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

Nyko 283,

J'ai fait ce que tu me conseille avec l'enregistreur de macro.

J'ai donc mis :

Code:
Rows("C").Select
    Selection.Delete Shift:=xlUp
Code:

Mais j'ai une erreur de compilation - Objet requis sur :

Code:
Set c =

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

en fait sur ton fichier excel tu fait outils puis Macro et Nouvelle macro tu clique sur ok et là tu ce que tu va faire sera traduit dans un module en code

donc tu clique sur une ligne et tu la supprime puis sur la boite à outils des macro du clique sur le bouton stop
tu va ensuite dans l'editeur vba et tu regarde le code Qu'excel a traduit de tes actions, tu n' a plus qu'a reperer quel argument est celui qui represente la ligne et tu le remplace par la variable "c". et tu met le code ainsi obtenu à la place de la phrase
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

oui autant pour moi j'ai voulu aller plus vite que la musique donc voici le code que tu doit obtenir
Code:
Dim c As Range, nomClient As String, n As Integer, I As Integer
For n = 0 To ListBox1.ListCount - 1
nomClient = Me.ListBox1.ListIndex(n)
With ActiveWorkbook.Worksheets("Feuil1").Range("C1:C1634")
Set c = .Find(What:=nomClient, LookIn:=xlValue, LookAt:=xlWhole)
I = c.Row
.Cells(I, 1).Select
Selection.EntireRow.Delete
End With
Next n
pour la suppression prefere "entirerow" si tu veux supprimer toute la ligne
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

tu peut aussi remplacer
.Cells(I, 1).Select
Selection.EntireRow.Delete

par
.Cells(I, 1).EntireRow.Delete

qui a pour effet de ne pas faire de selection et donc de ne pas avoir une macro qui te fasse voyager dans tout ton fichier
pas forcement agreable pour l'utilisateur final
et aussi de gagner en rapiditer d'execution même si dans ce cas précis tu ne gagne pas beaucoup de temps
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Bonjour,

essaye peut être comme ceci :
Code:
nomClient = Me.ListBox1.List(n)
pas tout suivi, donc je ne sais si c'est vraiment le résultat à atteindre...

bonne journée
@+
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Bonjour Croft,

Je ne sais pas pourquoi mais mon find ne veut pas fonctionner.
de plus j'avais taper le code directement dans le module de reponse sans le tester(j'avais été un peu trop présomptueux de mes capacités)
alors voici un code que j'ai tester et qui fonctionne sur un classeur
Code:
Dim cell As Range, nomClient As String, n As Integer, I As Integer
For n = 0 To ListBox1.ListCount - 1
    Me.ListBox1.ListIndex = n 'selectionne dans la listbox1 l'element n
    nomClient = Me.ListBox1.Value ' affecte a la variable nomClient l'élément selectionné de la listbox
    For Each cell In ThisWorkbook.Worksheets("Feuil1").Range("C1:C163")
        If cell.Value = nomClient Then
            cell.EntireRow.Delete
            Exit For
        End If
    Next cell
Next n
en espérant que cela sera la bonne
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Bonsoir le forum, Niko283, Pierrot 93.

Avant tout, je vous remercie pour votre aide.

Pierrot avec le bout de code j'ai une erreur l'indice n'appartient pas à la sélection qui pointe :

Code:
Set c = .Find(What:=nomClient, LookIn:=xlValue, LookAt:=xlWhole)

Niko 283, cette fois l'erreur me dit, l'indice n'appartient pas à la sélection sur cette ligne :

Code:
For Each cell In ThisWorkbook.Worksheets

Ma feuille se nomme bien feuil1.

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

Re,

Après avoir remplacé ThisWorkbook.Worksheets par Sheets ca fonctionne, cependant j'ai encore des choses qui ne fonctionnent pas automatiquement.
Pour que la suppression se fasse correctement, je dois sélectionner l'item, or je souhaiterai que tous les items soient supprimés sans avoir à être sélectionnés.
Autre point, je peux contenir dans cette colonne deux voir plusieurs fois le même nom, je souhaite donc que toutes les lignes contenant les items de la listbox soient supprimés.

Par avance, merci pour votre aide et patience.
 
Re : Supprimer ligne d'un classeur à partir d'une listbox1

Petit rectificatif.

La ligne se supprime bien quand l'item de la listbox n'est pas sélectionné.
Ce qui n'est pas automatisé c'est la suppression de toutes les lignes contenant le nom du client dans la colonne C et dans la listbox.

Ex : Si toto est inscrit en colonne C sur multiples lignes et qu'il est sélectionné dans la listbox, je souhaite que toutes les lignes le concernant soient supprimées.

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

Bonsoir Croft, Bonsoir Pierrot 93,

Pour que toutes les occurences soit supprimer enlève "EXIT FOR" comme ca il controlera toute la colonne avant de passer au nom suivant.
 
- 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…