VBA - probleme sur listebox

Bonjour,
Voilà j'ai un fichier avec une liste de produits, j'aimerai que sur une autre feuille je puisse faire une recherche "simplifiée" c'est à dire quand je clic sur la commandbox "ELECTRICITE" qu'il apparaisse dans la listebox du dessous la plage que j'ai nommée "ELECTRICITE" qui se trouve sur ma feuille "code_produits", ça c'est une premiere chose.
En second, j'aimerai faire une recherche par mot clef par le biais de mon TextBox1 mais ma formule VBA ne fonctionne pas...
Pourriez vous m'aidier...
Cordialement,
Ci dessous mon fichier
https://www.cjoint.com/?0FzllddbsNi

22 réponses

Résumé de la discussion

Le problème porte sur une mise en œuvre VBA : cliquer sur la commandbox 'ELECTRICITE' doit afficher dans une ListBox la plage nommée sur la feuille 'code_produits', et la recherche via TextBox1 ne fonctionne pas. Des répondants recommandent d’intégrer l’intégralité du code VBA d’un fichier source et d’adapter les noms des objets dans le vôtre, notamment si une ListView est utilisée pour afficher la plage nommée. D'autres conseils évoquent l'utilisation du nom de CodeName de la feuille et des corrections dans l'initialisation, par exemple en ajustant les indices et les plages dans ListBox1.List. En pratique, il faut aussi vérifier que la plage nommée et le nom de la feuille sont cohérents entre les classeurs.

Bobot (l’IA à votre service)
  1. Bonjour,

    pour joindre un fichier click sur le lien suivant https://www.cjoint.com/

    Ne pas oublier de copier/coller le lien cree dans votre prochain message
    0
    1. Bonjour
      voila une ListView
      ses plus jolie
      a toi de voir

      http://cjoint.com/?3FzmLMIKTLG

      A+

      Maurice
      0
      1. Merci mais ca ne marche pas "impossible de charger l'objet car il n'est pas disponible sur cette machine"
        0
    2. Re,

      commandbox est-ce-que par hazard ce serait les boutons de commandes ????
      0
      1. oui c ça
        0
    3. Re,

      listbox remplie par boutons de commnde ou mot cles

      https://www.cjoint.com/?CFzrnbvnX43
      0
      1. c'est exactement ça, merci beaucoup !!! juste une dernière question comment jepeux gérer la largeur des colonnes dans la listbox?
        0
      2. je viens de rajouter des lignes à ma liste de produits dans le 1er onglet mais quand je clic sur un bouton de commande il m'indique cette erreur en jaune dans le VBA (je l'ai souligné dans le texte ci dessous)
        Sub Recherche_par_objets(Objet As String)
        Dim Lmax, V, plage As Range, cel, col

        Sub Recherche_par_objets(Objet As String)
            Dim Lmax, V, plage As Range, cel, col
            
            With Worksheets("code_produits")
                ListBox1.Clear
                Lmax = .Range("A" & Rows.Count).End(xlUp).Row
                Set plage = .Range("A2:A" & Lmax)
                For Each cel In plage
                    If cel = Objet Then
                        ListBox1.AddItem cel
                        For col = 1 To ListBox1.ColumnCount
                            ListBox1.List(ListBox1.ListCount - 1, col) = cel.Offset(, col).Value                Next col
                    End If
                Next cel
            End With
        End Sub
        0
    4. Bonjour,

      Quelle erreur ????

      'largeur Colonnes pour 8 colonnes, adaptez la largeur en modifiant le nombre de pt de la colonne
      ListBox1.ColumnWidths = "50 pt;50 pt;75 pt;50 pt;60 pt;75 pt;50 pt;75 pt"
      0
      1. ok pour les largeur de colonnes. Par contre toujours l'erreur sur la ligne
        ListBox1.List(ListBox1.ListCount - 1, col) = cel.Offset(, col).Value


        de la recherche par objet dès que je clic sur un bouton de contrôle je vous laisse constater sur le fichier joint.
        https://www.cjoint.com/?3FApEEEmeUj
        0
      2. Re,
        Je regarde le probleme.

        A+
        0
    5. Re,

      Oblige de changer de methode, pas grave, il y en a pas plusieurs.

      Sub Recherche_par_objets(Objet As String)
          Dim Lmax, V, plage As Range, cel, col, lig, tableau()
          
          With Worksheets("code_produits")
              ListBox1.Clear
              Lmax = .Range("A" & Rows.Count).End(xlUp).Row
              Set plage = .Range("A2:A" & Lmax)
              ReDim tableau(Lmax, ListBox1.ColumnCount)
              lig = 0
              For Each cel In plage
                  If cel = Objet Then
                      tableau(lig, 0) = cel
                      For col = 1 To ListBox1.ColumnCount
                          tableau(lig, col) = cel.Offset(, col)
                      Next col
                      lig = lig + 1
                  End If
              Next cel
              ListBox1.List = tableau
          End With
      End Sub


      A+
      0
      1. Re,

        Refait essais avec premiere methode, plus d'erreur sans modifier quoi que ce soit ????

        Prenez la deuxieme methode.
        0
        1. https://www.cjoint.com/?3FArnzIcKq4

          oui ca fonctionne par contre j'ai certains boutons de commande qui ne fonctionnent pas et là je ne comprends pas ou est mon erreur???
          Une autre question, est il possible d'avoir la colonne "designation " de ma listbox sur 2 lignes pour que tout soit lisible car tout ne tiens pas sur une ligne?

          Merci encore pour votre aide
          0
          1. Re,

            boutons de commande qui ne fonctionnent pas normal.

            dans Sub Recherche_par_objets(Objet As String)

            remplacez:

            If cel = Objet Then

            par

            If cel Like Objet & "*" Then

            colonne "designation " sur deux lignes, a voir, j'ai une idee a creuser

            A+
            0
        2. j'ai modifiéle nom de la plage et ca fonctionne pour la commande "LEM". Par contre pourriez vous regarder mon fichier, j'ai apporté des modifs pour que se soit plus lisible. J'aimerai que lorsqu'on clique sur une ligne de la listbox les infomations apparaissement dans les labels correspondants à mes colonnes de la feuille "code_produits" est-il possible de faire ça? peut-être il faut utiliser autre chose que des labels?
          Merci
          https://www.cjoint.com/?3FBkFBLkpH9
          0
          1. Bonjour,

            Des labels, cela convient parfaitement. Peut-etre pas besoin des decouper la designation, car beaucoup de modif pour memoriser les infos?? Vous decidez et je fais

            A+
            0
            1. si je suis obligée de mettre la désignation sur plusieurs lignes pour avoir le contenu complet de ma cellule même si c'est pas très esthétique ! il faudrait également que cela fonctionne pour la recherche par mot clef.
              Merci beaucoup pour votre aide
              0
            2. Re,

              Pas de probleme avec designation sur plusieurs lignes, presque fini. Pour Mot cles, a cogiter, pas prevu de decouper la designation .

              A+
              0
          2. Re,

            sans decoupe designation sur mot cles

            https://www.cjoint.com/?CFBmh2cmIOz

            A+
            0
            1. c'est vraiment top !! par contre je ne comprend pas " sans découpe.."
              0
            2. Re,

              quand vous choisissez un mot cle, la designation s'affiche sur une seule ligne, pas sur x lignes comme le choix des boutons
              0
            3. quand je tape un mot clef, la recherche fonctionne bien, quand j'efface mon mot clef et que je clic directement sur la listbox il me fait un message d'erreur...
              0
            4. Re,

              dans sub init()

              mettre un 8 au lieu du 3

              ListBox1.List = Worksheets("code_produits").Range(Cells(2, 1).Address, Cells(Lmax, 8).Address).Value
              0
            5. Re,
              Comment puis-je paramétrer mon classeur pour qu'il s'ouvre directement sue la feuille 3 de recherche?

              merci
              0
          3. Re,

            Private Sub Workbook_Open()
            Worksheets("feuil3").Activate
            End Sub

            A+
            0
            1. Bonjour,
              J'ai une nouvelle demande après avoir lu plusieurs forum il semblerait que c'est plus facile d'utiliser une listview?? j'ai inséré une listview en dessous de ma listbox pour faire un essai avant de supprimer ma listbox, mais je ne comprends pas comment la paramétrer pour avoir les meme fonction que ma listbox??
              Un grand merci pour votre aide très précieuse !

              https://www.cjoint.com/?3GqlKXeJXyf
              0
            2. Bonjour,

              je regarde cela cette apres-midi.

              A+
              0
          4. Bonjour

            utilise le CodeName de la feuil

            Private Sub Workbook_Open()
            Feuil3.Select
            End Sub

            A+

            Maurice
            0
            1. Bonjour
              Pour la 2eme fois voici une listeView
              A toi de jouer

              http://cjoint.com/?CGqmAVupkps

              A+

              Maurice
              0
              1. Bonjour,

                Ne desesperez pas, cette fois-ci, vous serez peut-etre "entedu"

                Bye
                0
              2. ça ne fonctionne pas il m'indique une "erreur de compilation, projet ou bibliothèque introuvable"
                0
            2. Re,

              ce doit etre le chemin du composant listview qui n'est pas le bon. Quel OS avez-vous (XP, W7 32bits ou 64bits, W8 32bits ou 64bits ou ...) ???
              0
              1. Xp
                0
            3. Re,

              Dans votre fichier d'origine, il y a une listview. Recopier tout le code du fichier de foo dans le vba de votre fichier d'origine en modifiant les noms des objets si nécessaire.

              essayez et rendez compte svp

              A+
              0
              1. Bonjour,

                regarde sur:
                http://forum.excel-pratique.com/excel/probleme-avec-petite-macro-t28865.html

                tu doit touver ta solution pour "erreur de compilation, projet ou bibliothèque introuvable"

                on ses pas quelle version excel ?
                pour ton XP il faut etre en service Pack(SP6)

                A+

                Maurice
                0
                • 1
                • 2