IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

suppression d'une ligne depuis une listbox [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut suppression d'une ligne depuis une listbox
    Bonjour

    A partir d'un formulaire dans lequel j'ai une listbox contenant des données d'une feuille excel ( Feuil1), je souhaite, lorsque je sélectionne une ligne dans la listbox, pouvoir supprimer dans la feuille excel, avec un bouton supprimer, la ligne sélectionnée ( exemple ligne 5) et non la cellule ou sont les données.

    Merci d'avance pour votre aide

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Un exemple de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    Private Sub CommandButton1_Click()
     
    Dim i As Long
     
    i = 1
     
    Do While Sheets("Feuil1").Range("A" & i).Value <> ""
     
        If Sheets("Feuil1").Range("A" & i).Value = ListBox1.Text Then
            Sheets("Feuil1").Rows(i).Delete
        End If
     
        i = i + 1
     
    Loop
     
    End Sub
    Jérôme

  3. #3
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour
    sans plus d'info voici un code générique qu'il te faudra adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    Rows(ListBox1.ListIndex + 1).Delete
    End Sub
    remplace le +1 par le décalage entre les ligne de la feuille et celle de la box
    (la première ligne de la box est 0)

    Edit : Bonjour Jérome le code de Jérome est aussi bien pratique, je suis parti du principe que la box était rempli par une plage de cellule
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut
    merci pour vos reponses j'ai réussi à me débrouiller avec vos codes

  5. #5
    Membre du Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Février 2019
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : fonctionnaire

    Informations forums :
    Inscription : Février 2019
    Messages : 94
    Points : 59
    Points
    59
    Par défaut
    Bonjour , bien que le sujet est résolue et remonte à loin .J'aimerais que bien que l'intervenant au lieu de dire "Merci je me suis débrouillé tout seul" aura au moins l'obligeance
    d’émettre la solution sur le post, moi par exemple je veux bien profiter.
    Salut.

  6. #6
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Je salue JFontaine qui m'a bien aidé lorsque j'étais un petit novice

    Au demeurant, je suis sceptique quant à sa proposition.
    En effet
    Si l'on teste ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
     
    Private Sub test_suppression()
     
    Dim i As Long
     
    i = 1
     
    Do While Sheets("Feuil1").Range("A" & i).Value <> ""
     
        If Sheets("Feuil1").Range("A" & i).Value = "panpan" Then
            Sheets("Feuil1").Rows(i).Delete
        End If
     
        i = i + 1
     
    Loop
     
    End Sub
    Si 2 cellules de lignes successives reportent "panpan", alors l'exécution du code n'en supprimera qu'une seule.
    Ce qui est logique.

    Pour une suppression de ce type, mieux vaut partir du bas de la feuille.

    Mieux.
    (Déjà proposé maintes fois sur le Forum )
    Remplacer dans la plage de cellules "panpan" par ""
    Supprimer, en une seule fois, les lignes entières des cellules spéciales blanches ainsi créées.

    Je vous laisse traduire en VBA.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  7. #7
    Membre du Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Février 2019
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : fonctionnaire

    Informations forums :
    Inscription : Février 2019
    Messages : 94
    Points : 59
    Points
    59
    Par défaut Code Testé
    Bonjour ,J'ai testé le code ,ça ne marche . Mais que faut_il faire pour supprimer l'item sélectionné directement dans la listbox .

    A+

  8. #8
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonjour,

    Encore mieux qu'une boucle les filtres élaborés, une petit recherche sur le nom de Philippe Tulliez, sur ce forum te donnerais une solution clef sur porte à ton problème.

    De plus en 2020, il serait préférable de travailler avec des tableaux structurés.
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  9. #9
    Membre du Club
    Homme Profil pro
    fonctionnaire
    Inscrit en
    Février 2019
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : fonctionnaire

    Informations forums :
    Inscription : Février 2019
    Messages : 94
    Points : 59
    Points
    59
    Par défaut Philippe Tulliez
    Mfoxy : Un peu plus de détails sur le sujet.
    A+

  10. #10
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Jamital,

    La lecture de ceci devrait répondre à tes attentes.

    https://www.magicoffice.be/excel-vba...dvancedfilter/
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. Réponses: 6
    Dernier message: 09/06/2009, 14h13
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo