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 :

x = listbox1.value


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut x = listbox1.value
    Bonjour,
    Je voudrais extraire la ligne sélectionnée d'une listBox.
    ne marche pas.
    J'ai essayé des tas de codes, mais je n'y arrive pas.
    Quel code employer ?
    Merci si vous pouvez me dépanner.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 118
    Par défaut
    Bonjour,

    Déjà , il faudrait savoir si ta listbox est dans une userform ou dans une sheet ? Comment est-elle alimentée ?

    Sinon, qqch comme ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To UserForm1.ListBox1.ListCount
        MsgBox UserForm1.ListBox1.List(i - 1)
    Next i

  3. #3
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bjr,
    pour Sur l'évènement double clic de la listbox en donnant pour l'exemple à la cellule B10 la valeur sélectionnée dans la listbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    x = Me.ListBox1.Value
    [B10] = x
    End Sub
    @+

  4. #4
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Merci de me répondre.

    Le classeur très simple, pour essai, a 3 feuilles A,B et C.
    La listBox est dans la feuille "A" qui possède aussi le CommandButton1.
    Voici le code dans la feuille "A" :
    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
     
    Option Explicit
        Dim xListe As Variant
        Dim x As Variant
     
     
    Private Sub ListBox1_Click()
      Dim i  As Integer
     
        Sheets("A").Select
        ListBox1.Clear
        xListe = Array("A", "B", "C")
        For i = 0 To 2
            ListBox1.AddItem Range("A1").Offset(i, 0).Value
        Next
     
    End Sub
    Private Sub CommandButton1_Click()
              x = Sheets("A").ListBox1.SelectedItem.Value
    MsgBox (x)
     
    End Sub
    J'ai fait un programme assez important, mais devant mes difficultés avec listBox, j'ai écrit ce petit truc, plus facile pour mes essais.

    Merci pour l'aide.

  5. #5
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Re, j'ai légèrement modifié ton 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
    20
    21
    22
    Option Explicit
     Dim xListe As Variant
        Dim x As Variant
     
    Private Sub CommandButton1_Click()
    Dim x As String
       x = Me.ListBox1.Value
    MsgBox x
     
    End Sub
    Private Sub ListBox1_GotFocus()
     Dim i  As Integer
     
      Me.ListBox1.Clear
        xListe = Array("A", "B", "C")
     
        For i = 0 To 2
            Me.ListBox1.AddItem (Range("A1").Offset(i, 0).Value)
        Next
     
    Me.ListBox1.ListIndex = 0
    End Sub
    J'ai remarqué que sur l'évènement click de la listbox sa coince alors qu'avec l'évènement GotFocus non. ??
    Bref comme ceci ça fonctionne

  6. #6
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Merci rvtoulon, ça marche.
    Je vais pouvoir continuer après 2 jours de panne !

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Je n'ai peut être pas compris le fond du problème mais, pourquoi ne pas utiliser la propriété ListFillRange de ta zone de liste, pour la trouver tu cliques droit sur ta zone de liste, puis propriété. Tu met Feuil1!B2:B10 comme valeur a la propriété ListFillRange. Le gros avantage c'est que si tu changes une valeur dans ta feuille, le changement sera pris en compte dans ta liste.

    Tu peux également mettre une étiquette comme valeur de ListFillRange, regarde les réponse que j'ai fait récemment j'en parle pour une combobox, ca fonctionne pareil
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Re-Bonjour,

    J'obtiens bien mon "x".
    Or je voudrais appeler une procédure en utilisant une variable qui représente son nom et apparemment ça semble impossible ?
    Qui peut me dire si c'est possible.
    Merci.

  9. #9
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    C'est claire comme du jus de chique...
    Peut etre souhaites tu faire un truc comme ca?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub maprocedure( Mavaleur as string)
    range("A1") = mavaleur
    ....
    End sub
     
    Private Sub CommandButton1_Click()
    Dim x as string
           x = Sheets("A").ListBox1.SelectedItem.Value
           maprocedure(x)
     
    End Sub
    Mais vu que ta demande est pas très claire... je suppose que la réponse est proportionnelle.
    Il serait bien d'expliquer clairement ce que tu veux faire dans son intégralité et pas juste des petits bouts de rien, met toi a notre place, si on a pas tous les éléments, comment veux tu qu'on formule une réponse qui tienne la route.
    Encore une fois, on prend du temps pour répondre, alors prenez 5 minutes pour formuler des questions complètes, merci.
    a++
    Qwaz

    Ps: pourquoi avoir mis ton poste en délestage, ça va pas attirer les lecteurs.

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    C'est maprocedure que je voudrais remplacer par une variable pour l'appeler.

    Je n'ai pas fait de délestage. En quoi cela consiste-t-il ?

  11. #11
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    J'ai trouvé ma solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub CommandButton1_Click()
        x = Me.ListBox1.Value
        If x = "Macro1" Then
            Macro1
        End If
    End Sub
    Si ma variable xMacro = "Macro1" alors ...etc
    En utilisant directement x pour appeler la procédure, ça ne marchait pas.
    Je crois que je pourrais aussi utiliser les index.

    Merci pour les idées que tu m'as données.

  12. #12
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    [Edit]Tu as mis un autre post entre temps, tant mieux si tu si trouvé ta solution, ++[/Edit]
    ??
    Tu persistes a a réduire tes postes au strict minimum et c'est toujours incompréhensible désolé.

    C'est maprocedure que je voudrais remplacer par une variable pour l'appeler.
    Remplacer une procédure par une variable?
    appeler une variable??

    Pour ma part, je te demanderais une dernière fois d'expliquer clairement ce que tu souhaites faire, parce que ton post part a la dérive, des gens te fournissent du code, mais vu que le sujet est flou, tu es obliger de re-préciser, puis on redonne du code, puis tu re-précises... ça n'en fini pas.

    A++
    Qwaz

    Ps: Pour le délestage, c'est pas grave, c'est un modérateur qui a dut le mettre, ne t'en inquiète pas.

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #13
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Voici:

    Je voulais mettre dans une listBox une suite de procédures (procedure_1, procedure_2 etc )
    En choisissant une ligne de la liste, mettre son contenu dans une variable et utiliser cette variable comme appel de la procédure, ce qui ne marche pas.

    J'ai alors fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if  mavariable = "procedure1" then
    procedure1
    end if
    if  mavariable = "procedure2" then
    procedure2
    end if
    etc
    alors que j'avais essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    maprocedure = (la ligne de la listBox)
    puis:
    mavariable
    pour appeler la procédure, ce qui est plus court, mais ne marche pas.

  14. #14
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Et bien comme quoi si tu avais raconté tout ça dés le début, clairement...
    On t'aurait dis de t'orienter vers Application.Run
    En l'utilisant comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
    dim x as string
        x = Me.ListBox1.Value
        application.run x
    End Sub
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  15. #15
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2002
    Messages : 391
    Par défaut
    Merci.
    ça marche bien.

  16. #16
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Petit bonus
    Il est preferable de prevenir le cas ou le nom de la macro n'existe pas, pour eviter d'avoir un plantage avec retour au 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
    Private Sub CommandButton1_Click()
    dim x as string
        x = ListBox1.Value
        On error goto err_Run
        application.run x
        On error goto 0
     
    [...]Suite du code
     
    exit sub
    err_Run:
    msgbox "La procédure " & ListBox1.Value & " n'existe pas ou le nombres de paramètres transmis est incorrect."
    'resume 'activer se code pour reprendre a la ligne suivant application.run x
    End Sub
    Je n'ai pas testé le code, mais ce doit être ça.
    Bonne soirée
    ++
    qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. Calcul du plu court chemin entre 2 sommets d'un graphe valué
    Par atlasm dans le forum Algorithmes et structures de données
    Réponses: 25
    Dernier message: 07/08/2005, 18h06
  2. Index et Unique Value
    Par koukise dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/06/2004, 19h32
  3. [MFC]Value Controle dans un comboBox
    Par jul54 dans le forum MFC
    Réponses: 6
    Dernier message: 10/02/2004, 10h57
  4. Réponses: 4
    Dernier message: 18/11/2003, 17h08
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 14h22

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