VBA - probleme sur listebox

polsak_diane Messages postés 20 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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

  • 1
  • 2
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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    testez et rendez compte svp

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

    A+
    0
    1. polsak_diane Messages postés 20 Statut Membre
       
      oui ca fonctionne pour la recherche par mot clef mais les commandbox ne fonctionnent pas
      0
  3. foo
     
    Bonjour
    voila une ListView
    ses plus jolie
    a toi de voir

    http://cjoint.com/?3FzmLMIKTLG

    A+

    Maurice
    0
    1. polsak_diane Messages postés 20 Statut Membre
       
      Merci mais ca ne marche pas "impossible de charger l'objet car il n'est pas disponible sur cette machine"
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    commandbox est-ce-que par hazard ce serait les boutons de commandes ????
    0
    1. polsak_diane Messages postés 20 Statut Membre
       
      oui c ça
      0
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    listbox remplie par boutons de commnde ou mot cles

    https://www.cjoint.com/?CFzrnbvnX43
    0
    1. polsak_diane Messages postés 20 Statut Membre
       
      c'est exactement ça, merci beaucoup !!! juste une dernière question comment jepeux gérer la largeur des colonnes dans la listbox?
      0
    2. polsak_diane Messages postés 20 Statut Membre
       
      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
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. polsak_diane Messages postés 20 Statut Membre
       
      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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Je regarde le probleme.

      A+
      0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

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

    Prenez la deuxieme methode.
    0
  10. polsak_diane Messages postés 20 Statut Membre
     
    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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  11. polsak_diane Messages postés 20 Statut Membre
     
    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
  12. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. polsak_diane Messages postés 20 Statut Membre
       
      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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

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

      A+
      0
  13. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    sans decoupe designation sur mot cles

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

    A+
    0
    1. polsak_diane Messages postés 20 Statut Membre
       
      c'est vraiment top !! par contre je ne comprend pas " sans découpe.."
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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. polsak_diane Messages postés 20 Statut Membre
       
      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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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. polsak_diane Messages postés 20 Statut Membre
       
      Re,
      Comment puis-je paramétrer mon classeur pour qu'il s'ouvre directement sue la feuille 3 de recherche?

      merci
      0
  14. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

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

    A+
    0
    1. polsak_diane Messages postés 20 Statut Membre
       
      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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      je regarde cela cette apres-midi.

      A+
      0
  15. foo
     
    Bonjour

    utilise le CodeName de la feuil

    Private Sub Workbook_Open()
    Feuil3.Select
    End Sub

    A+

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

    http://cjoint.com/?CGqmAVupkps

    A+

    Maurice
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

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

      Bye
      0
    2. polsak_diane Messages postés 20 Statut Membre
       
      ça ne fonctionne pas il m'indique une "erreur de compilation, projet ou bibliothèque introuvable"
      0
  17. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. Polsak_diane
       
      Xp
      0
  18. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  19. foo
     
    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