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 :

ListBox avec variable comme numéro


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
    Retraité
    Inscrit en
    Mars 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2019
    Messages : 50
    Par défaut ListBox avec variable comme numéro
    Bonjour,
    J'ai 3 ListBox dans une feuille
    La variable i peut donc avoir la valeur 1, 2 et 3
    On peut écrire par exemple : Me.ListBox1.Visible = True - Aucun problème !
    Mais selon la valeur de i donné en amont dans le code je n'arrive pas à écrire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Me("ListBox" & i).Visible = True
    Quelque soit ma façon d'écrire cette ligne (avec Sheets..., ActiveSheet ...) j'ai une erreur :
    erreur d'exécution 438 - Propriété ou méthode non gérée par cette objet
    Question :
    Comment puis-je écrire ma ligne de code pour que, selon la valeur de la variable i, la ListBox recherché soit visible ?
    Par avance merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Par défaut
    Bonjour,

    Je ne sais pas si c'est la meilleure solution mais tu peux essayer en faisant un select case de i:

    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
     
        Select Case i
            Case 1
                Me.ListBox1.Visible = True
                Me.ListBox2.Visible = False
                Me.ListBox3.Visible = False
            Case 2
                Me.ListBox1.Visible = False
                Me.ListBox2.Visible = True
                Me.ListBox3.Visible = False
            Case 3
                Me.ListBox1.Visible = False
                Me.ListBox2.Visible = False
                Me.ListBox3.Visible = True
            End Select

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2019
    Messages : 50
    Par défaut
    Bonsoir Westood5
    Merci pour cette réponse rapide. Malheureusement, j'y avais pensé à cette solution mais cela va m'obliger à écrire mon code pour chaque cas de la variable i.
    Cette fameuse écriture qui me donne des soucis Me("ListBox" & i) je la retrouve dans plusieurs lignes de code en aval. tout le processus dépend de cette écriture.
    Je ne voudrais qu'un seul code qui s'adapte en fonction de la variable i. Et "Visible" n'est donné que pour l'exemple et les explications. Si j'arrive grâce à vos aides à écrire cette ligne de code sans avoir d'affichage d'erreur alors je pourrai faire le reste.
    Merci quand même d'avoir pris le temps de répondre.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Alors la ligne de code ci-dessous ne peut fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me("ListBox" & i).Visible = True
    Me représente l'objet feuille dans cet exemple donc il ne peut y avoir une indexation puisque ce n'est pas une collection et Me ne peut être utiliser que dans un module feuille.

    La ligne pourrait être par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Shapes.Range(Array("ListBox1")).Visible = True
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.OLEObjects("ListBox1").Visible = True
    Donc avec la variable I par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Shapes.Range(Array("ListBox" & i)).Visible = True

    Dans un module standard, on remplacera l'objet Me par l'élément de la collection Worksheets correspondant
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Shapes.Range(Array("ListBox" & i)).Visible = True
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Par défaut
    Ah mince j'ai lu trop vite et je n'a pas vu que c'était dans un feuille non plus...

    Sinon, j'ai pensé à un petit truc mais je ne sais pas si c'est optimum et plus long que la solution de Philippe Tulliez.

    C'est de passer par un sub intermédiaire.

    Voici l'idée:

    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
    20
    21
    22
    23
    24
    25
     
    Dim lst As ComboBox
     
    Sub Principal()
     
    Dim i As Byte
     
        i = 1
     
        Slection_ListBox i
     
        lst.Visible = False
     
    End Sub
     
    Private Sub Slection_ListBox(ByVal i As Byte)
     
        Select Case i
            Case 1
                Set lst = liste1
            Case 2
                Set lst = liste2
        End Select
     
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2019
    Messages : 50
    Par défaut
    ok merci pour toutes ces infos. Je vais reprendre cela plus tard car là j'en ai plein la tête ... il faut que je reprenne cela à tête reposée. En attendant merci à vous tous.

  7. #7
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2019
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2019
    Messages : 50
    Par défaut
    bonjour,
    En fait j'ai complément tout repris à zéro ce matin car les propositions ne fonctionnaient pas. J'avais toujours un message d'erreur. Avec ce nouveau code, je n'ai plus ce genre de problème. J'initialise les ListBox indépendamment et cette autre méthode de code est plus appropriée. Merci à vous pour les pistes données et les diverses infos récoltées. Je mets néanmoins mon fichier en pièce jointe pour celui que cela intéresse. Mais comme vous êtes plus qualifiés que moi je ne sais si cela intéressera quelqu'un. Bonne continuation
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. SOMME.SI avec variables comme ligne
    Par novice06000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/12/2011, 16h10
  2. [PHP 5.2] Récupérer une variable POST avec une variable comme nom
    Par bailamos dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2008, 14h59
  3. include avec une variable comme en php
    Par alain57 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/12/2008, 17h08
  4. Listbox avec contenu variable
    Par mfmf99 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/11/2008, 15h02
  5. alimentation listbox avec variable
    Par jpenja dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/11/2007, 10h56

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