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 :

VBA - Faire apparaitre les cases cochées d'une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 34
    Par défaut VBA - Faire apparaitre les cases cochées d'une listbox
    Bonjour,

    je viens à vous puisque malgré le FAQ du site, je n'ai pas réussi à trouver de réponse à mon problème !!!
    En effet, j'ai crée dans mon formulaire un userform me permettant d'insérer une ligne dans mon tableau.
    J'ai crée un second formulaire me permettant de modifier n'importe quelle ligne de donnée.
    Je procède de la manière, j'ai une combobox qui contient l'ensemble de mes numéros de ligne, j'en sélectionne une puis j'appuie sur mon bouton ok ("cmdbutton10") pour faire apparaitre les données de la ligne de mon tableau dans les différents partis de mon userform "modifier". La technique marche très bien pour les textbox et les combobox mais pas pour les listbox, les items ne sont pas cochés.

    Sur le FAQ de silkyroad, il est indiqué que le code pour récupérer coché dans la listbox un item (ou plusieurs) présent dans le tableau , c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listBox1.listIndex= ...
    Cependant, j'ai un message d'erreur qui me parvient qui dit : "Impossible de définir la propriété Listindex. Le type ne correspond pas".

    Voici mon code complet:

    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
    26
    27
    Private Sub CommandButton10_Click()
    Dim A As Integer
    A = ComboBox6.ListIndex + 19
    Feuil1.Unprotect
        TextBox2.Value = Cells(A, 2).Value
        TextBox3.Value = Cells(A, 3).Value
        TextBox4.Value = Cells(A, 4).Value
        ComboBox1.Value = Cells(A, 5).Value
        ComboBox2.Value = Cells(A, 6).Value
        ListBox1.ListIndex = Cells(A, 7).Value
        TextBox8.Value = Cells(A, 8).Value
        TextBox9.Value = Cells(A, 9).Value
        TextBox10.Value = Cells(A, 10).Value
        TextBox21.Value = Cells(A, 11).Value
        ListBox2.ListIndex = Cells(A, 12).Value
        TextBox23.Value = Cells(A, 13).Value
        ListBox3.ListIndex = Cells(A, 14).Value
        TextBox24.Value = Cells(A, 15).Value
        ListBox4.ListIndex = Cells(A, 16).Value
        ComboBox3.Value = Cells(A, 17).Value
        TextBox26.Value = Cells(A, 18).Value
        TextBox18.Value = Cells(A, 19).Value
     
    Feuil1.Protect
     
     
    End Sub
    Par la suite, j'ai crée un bouton "valider" qui me permet de coller les nouvelles données modifier de mon userform dans mon tableau.

    Quel est votre avis ?

    Merci par avance !!!!

    Cordialement !

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyste Pricing
    Inscrit en
    Juillet 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyste Pricing

    Informations forums :
    Inscription : Juillet 2015
    Messages : 27
    Par défaut
    Bonjour,

    De ce que je vois de ton code, tu affectes à des textbox, combobox et listbox des valeurs de cellules.

    Pour éditer la valeur d'une listbox tu devrais plutôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Listbox1.list(Listbox1.listindex) = Cells(A, 7).Value
    .

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 34
    Par défaut
    Bonjour Romain9,

    Merci de ta réponse ! Ton idée de code est étonnante ! Puisqu'il ne marche pas mais cependant, lorsque je passe ma souris sur la ligne après avoir fait F8, il m'est quand même indiqué la valeur coché dans ma listbox/présente dans ma ligne de mon tableau. Ca veut donc dire que mon outil sait ce qui est présent, mais n'arrive pas à cocher la case automatiquement... Pensez vous qu'il existe une solution ?!

    Nom : Message d'erreur1.JPG
Affichages : 1517
Taille : 22,2 Ko
    Nom : Message d'erreur2.JPG
Affichages : 1639
Taille : 10,8 Ko

    Merci infiniment !

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyste Pricing
    Inscrit en
    Juillet 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyste Pricing

    Informations forums :
    Inscription : Juillet 2015
    Messages : 27
    Par défaut
    Si tu as ce message d'erreur, je suppose que tu alimentes ta listbox en utilisant la propriété RowSource.

    Pour que le code que je t'ai indiqué fonctionne, il faut que tu alimentes ta listbox soit via la méthode additem en bouclant sur chaque élément de ta plage de cellules qui va alimenter la listbox ou bien en utilisant la propriété list :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Listbox1.list = Ta plage de cellules

  5. #5
    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
    Si listbox liée :
    Je t'ai pourtant déjà dit (hier, dans une autre discussion) :
    -
    modifier la cellule correspondante de ta feuille de calcul, ce qui aurait pour résultat de répercuter automatiquement cette modification dans la combobox.
    Idem avec une listbox.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 34
    Par défaut
    Bonjour unparia !
    Vous avez été tellement réticent hier soir que je n'ai pas voulu insister pour vous en demander plus ! Mais sans rancune

    Lorsque que vous dites,
    modifier la cellule correspondante de ta feuille de calcul
    , il faut la modifier comment ? je ne visualise pas ce qu'il faut faire. Concernant la feuille de calcul, vous parlez de la feuille où sont stockés l'ensemble des données de ma listbox ou vous parlez de de la feuille où se trouve mon tableau ? J'espère avoir formuler ma question sans vous froisser !

    Romain, ma listbox n'est pas alimentée par la propriété Rowsource. J'écris dans une textbox ma recherche avec un mot clé, déroule ensuite dans ma listbox mes réponses. Une fois ma ligne trouvée, je la coche via l'option liststyle. La ligne coché est collé dans la cellule de mon tableau. J'ai codé de cette manière là:

    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
    Private Sub TextBox20_Change()
        Application.ScreenUpdating = False
        ListBox2.Clear
        If TextBox20 <> "" Then
            For ligne = 2 To Feuil4.Cells(Rows.Count, 2).End(xlUp).Row
                If Feuil4.Cells(ligne, 2) Like "*" & TextBox20 & "*" Then
                    ListBox2.AddItem Feuil4.Cells(ligne, 2)
                End If
            Next
     
            For ligne = 2 To Feuil4.Cells(Rows.Count, 7).End(xlUp).Row
                If Feuil4.Cells(ligne, 7) Like "*" & TextBox20 & "*" Then
                    ListBox2.AddItem Feuil4.Cells(ligne, 7)
                End If
            Next
     
            For ligne = 2 To Feuil8.Cells(Rows.Count, 2).End(xlUp).Row
                If Feuil8.Cells(ligne, 2) Like "*" & TextBox20 & "*" Then
                    ListBox2.AddItem Feuil8.Cells(ligne, 2)
                End If
            Next
        End If
     
        TextBox20.Text = UCase(TextBox20.Text)

    Du coup, d'après ton message, j'ai essayé de coder de cette manière suivante mais ce message d'erreur apparait:

    Nom : Message d'erreur3.JPG
Affichages : 1695
Taille : 26,9 Ko

    Suis je loin du but ?! Merci dans tous les cas !

  7. #7
    Membre confirmé
    Homme Profil pro
    Analyste Pricing
    Inscrit en
    Juillet 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyste Pricing

    Informations forums :
    Inscription : Juillet 2015
    Messages : 27
    Par défaut
    Tu ne peux pas écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Listbox2.list = listbox2.additem Feuil4.cells(ligne,2)
    Soit tu écris comme tu l'avais fait jusqu'alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox2.AddItem Feuil4.Cells(ligne, 2)
    soit tu déclares une variable de type Range (appelons-là MaPlage). Tu affectes à cette variable la plage qui contient les réponses résultant de ton mot clé saisie dans la textbox puis tu affectes cette plage à la propriété list de ta listbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Listbox2.list = MaPlage
    .

Discussions similaires

  1. Faire apparaitre dans un userform les cases pré-cochées d'une listbox
    Par KINOU94 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 29/08/2016, 18h57
  2. récuperer les données cochées dans une listbox dans une nouvelle liste
    Par Lost_in_VBA dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/07/2011, 12h12
  3. Comment compter les cases cochées sur une page ?
    Par Paul Reed Smith dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2011, 12h03
  4. recharger une structure dans un form avec les cases cochés où il faut
    Par kayenne77 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/06/2009, 09h16
  5. [vba-e] faire ressortir les valeurs différentes d'une sélection
    Par legillou dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/03/2007, 17h19

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