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 :

Supprimer colonne tableau en fonction d'une Listbox [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2016
    Messages : 29
    Par défaut Supprimer colonne tableau en fonction d'une Listbox
    Bonjour,

    Voici mon petit problème en espérant avoir votre aide précieuse

    Dans un userform, j'ai une listbox qui est alimentée par chaque cellule de la première ligne d'un tableau, donc j'obtiens les items correspondant aux valeurs de A1, B1, C1, D1, etc.. jusqu'à la dernière cellule non vide

    J'aimerais, lorsque l'utilisateur ne sélectionne pas un item, que la macro supprime la colonne correspondant à l'item non sélectionné. J'ai crée le code suivant associé au clique d'un bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For m = 0 To ListBox3.ListCount - 1
    If ListBox3.Selected(m) Then
    Workbooks("Programme").Sheets("Interface").Range("A1").Value = ""
    Else
    Workbooks("Programme").Sheets("Feuil1").Cells(1, m + 3).Columns.EntireColumn.Delete
    End If
    Next
    Certaines colonnes correspondant à des items non sélectionnés se suppriment mais pas toutes !

    Mon code a-t-il une faille que je ne trouve pas ?

    Merci d'avance,

    Greg

  2. #2
    Membre expérimenté Avatar de EBRAG
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Avril 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 125
    Par défaut
    Bonsoir,

    Lorsqu'on supprime des colonnes "une par une", il faut commencer par la droite, pas par la gauche...

    Il va falloir transformer ton code en conséquence... ou trier la liste des items pour qu'elle soit décroissante ?

    (NB pour les lignes, évidemment, l faut commencer par le bas et remonter !)

    Bon courage

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    outre la solution avisée que t'as donné EBRAG, et qui résoudra ton problème :

    - est-il normal que ce soit toujours A1 qui soit effacée quoi qu'il arrive, pour chaque élément sélectionné ? Et du coup pouvoir être amené à faire plusieurs fois cette même opération ?

    - au lieu d'utiliser la "colonne entière" de la cellule située en ligne 1 et en colonne "untel", pourquoi ne pas directement manipuler la colonne "untel" ?

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    la remarque faite par joe.levrai (que je salue) est on ne peut plus fondée.
    Le mécanisme le plus logique devrait ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if la_listbox.listindex > 0 then 
      Workbooks("Programme").Sheets("Interface").Range("A1").Value = ""
    else
      exit sub
    end if
    et seulement alors la boucle sur les sélectionnés et actions subséquentes

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2016
    Messages : 29
    Par défaut
    Merci pour ces réponses !

    J'ai réussi grâce à ERBAG à obtenir ce que je voulais (j'ai procédé par une boucle dans l'ordre décroissant et non croissant pour supprimer mes colonnes grâce à "Step -1")

    Sujet résolu

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    problème résolu, mais logique toujours absconte.

    Enfin, c'est toi le patron de la discussion

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

Discussions similaires

  1. Supprimer un tableau en fonction d'une valeur.
    Par jujulagor dans le forum VBA Word
    Réponses: 3
    Dernier message: 05/04/2016, 15h29
  2. Réponses: 3
    Dernier message: 18/02/2016, 15h52
  3. Réponses: 2
    Dernier message: 19/03/2015, 14h04
  4. Réponses: 2
    Dernier message: 05/03/2008, 22h01
  5. Réponses: 2
    Dernier message: 29/06/2007, 11h20

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