comboBox Vba Ecel
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

comboBox Vba Ecel



  1. #1
    dalfred

    comboBox Vba Ecel


    ------

    Bonsoir,


    J'ai mis une combobox sur une feuille de calcul mais je n'arrive pas à trouver comment on voit son nom, quand je fais clic droit y'a pas d'option adéquate.

    A par cela, je lui ai associée la macro suivante


    Code:
    Sub combobox()
     
     
    combobox.AddItem ("Tri Par Nom et Prenom")
    combobox.AddItem ("Tri par date d'expiration")
     
     
    End Sub
    mais je vois pas ce que je dois déclarer comme variable ca fait erreur 424 ?
    Quand ce problème sera réglé et que dans la combobox il y aura Tri Par Nom et Prenom ainsi que Tri par date d'expiration, je souhaiterais que la personne ne puisse rien ajouter dans la combobox et donc simplement sélectionner un tri pour récupérer cette information.


    Merci de m'apporter des réponses, au revoir.

    -----

  2. #2
    bisou10

    Re : comboBox Vba Ecel

    Je sais pas, fait quelque chose, cherche sur internet, ca fait quoi ? 5 threads que tu es sur du VBA, il faut que tu comprennes la logique et le mode de fonctionnement des objets que tu manipules.

  3. #3
    dalfred

    Re : comboBox Vba Ecel

    BEN justement j'ai cherché, dans les programmes que j'ai vus il n'y a pas d'initialisation ce qui semble normal c'est comme pour un bouton ou autre on initialise pas.
    Et ca veut dire quoi "5 threads"

  4. #4
    Optimix

    Re : comboBox Vba Ecel

    je n'arrive pas à trouver comment on voit son nom
    On se met en mode "Création", clic droit sur la Combo et Propriétés. La propriété "Name" (en haut du tableau) donne son nom.

    Il ne faut rien mettre dans la combo, parce que vous allez ajouter vos 2 items chaque fois que vous allez cliquer dessus. Il faut la charger une bonne fois pour toutes à l'ouverture du classeur, ce qui va donner (pas de parenthèses) :

    Code:
    Private Sub Workbook_Open()
        Sheets("Feuil1").ComboBox1.AddItem "Tri Par Nom et Prénom"
        Sheets("Feuil1").ComboBox1.AddItem "Tri par date d'expiration"
    End Sub

  5. A voir en vidéo sur Futura
  6. #5
    Optimix

    Re : comboBox Vba Ecel

    Je complète : vous mettrez dans la Combo uniquement vos instructions en fonction du choix de l'utilisateur. Par exemple :
    Code:
    Private Sub ComboBox1_Change()
        MsgBox "Vous avez sélectionné l'item n° " & ComboBox1.ListIndex + 1
    End Sub

  7. #6
    dalfred

    Re : comboBox Vba Ecel

    Je récapitule, j'ai créé une comboBox sur une feuille que j'ai renommée ComboBox1, mais ensuite quand je veux exécuter le Private Sub que vous avez mis ca fait rien, et à l'ouverture la comboBox1 ne se remplit pas, je ne comprends pas pourquoi. Ai-je mal compris la démarche à suivre ?

  8. #7
    dalfred

    Re : comboBox Vba Ecel

    Pour info, ca met erreur 438

  9. #8
    Optimix

    Re : comboBox Vba Ecel

    Il n'y a aucune raison pour qu'il y ait une erreur. Ci-joint le petit exemple dont je parlais : une ComboBox qui se charge à l'ouverture du classeur et qui affiche le n° d'ordre de l'item choisi par l'utilisateur.
    Fichiers attachés Fichiers attachés

  10. #9
    dalfred

    Re : comboBox Vba Ecel

    C'est bien ce que j'ai fait mais moi ca ne marche pas, à l'ouverture rien n'est ajouté dans la comboBox1, je comprends pas

  11. #10
    dalfred

    Re : comboBox Vba Ecel

    Je peux vous mettre mon fichier ?

  12. #11
    Optimix

    Re : comboBox Vba Ecel

    Bien sûr, je le regarderai en fin d'après-midi si personne n'a réglé votre problème. C'est pour le moins étrange ce truc.

  13. #12
    dalfred

    Re : comboBox Vba Ecel

    C'est dans le module 3 le private sub() pour la comboBox1, qui est sur la feuille "Liste des usagers"
    Fichiers attachés Fichiers attachés

  14. #13
    dalfred

    Re : comboBox Vba Ecel

    Au pire des cas c'est pas grave, ce que j'ai fait ce que j'ai intégré une combobox sur un userform que j'ai initialisé et ça marche, en plus je devais l'intégrer dans un userform et non sur une feuille de calculs.

  15. #14
    dalfred

    Re : comboBox Vba Ecel

    Maintenant j'ai un petit soucis, au début quand j'exécute le programme la liste apparaît, et il y a une option réglages, faisant apparaître un userform dans lequelle on peut choisir le mode de tri, et l'alerte, mais le soucis est que lorsque j'appuie sur le bouton valider de ce userform la liste des personnes est la même, c'est-à-dire que pour ces changements soient effectués je dois exécuter à nouveau mon programme.
    Donc la question est la suivante : Comment faire réexécuter une macro à partir de ce bouton. Sur internet certains disent de copier l'intégralité du programme dans Command_button_click mais n'y a t-il pas une commande plus simple du genre Run(Macro(),arg1,arg2,...).
    Si oui, que dois-je mettre à la place de arg1, arg2 ?
    Toutes les variables que j'ai déclarées dans cette macro ?
    Parce que j'ai tenté Run([Macro2],[i],[Date1],...) mais ca fonctionne pas. Je sais que c'est comme faire appelle à un programme mais je sais jamais quelles variables faut mettre, des fois il ne faut pas toutes les mettre.

    Cordialement.
    Dernière modification par dalfred ; 04/12/2013 à 22h58.

  16. #15
    Optimix

    Re : comboBox Vba Ecel

    Si vous le permettez, on va reprendre le problème tel qu'il se présentait au départ (et dans votre fichier joint) et non pas tel que vous le présentez maintenant (UserForm). Ensuite, vous ferez ce que bon vous semble.

    Lorsque je vous ai parlé de la fenêtre des propriétés de votre CB (ComboBox), vous ne m'avez jamais dit que vous n'y aviez pas accès. Si vous l'aviez fait, j'aurais compris tout de suite et nous aurions perdu moins de temps.

    Il existe deux façons de mettre une CB sur une feuille de calcul :
    - à l'aide de la boîte à outils Contrôles (fig. 1)
    - à l'aide de la boîte à outils Formulaires (fig. 2)

    La 1ère possède une fenêtre de propriétés, pas la seconde
    La seconde permet d'associer les contrôles à une macro, pas la 1ère
    C'est la première qu'il faut utiliser. Détruisez la CB qui se trouve sur votre feuille de calcul sans sauvegarde et remplacez-la par un contrôle CB. Si le mode "Création" est activé, un clic droit sur votre CB permet d'accéder à ses propriétés. En principe vous n'en aurez pas besoin, sauf si vous voulez changer son nom.

    vue1.jpg

    - allez sous l'éditeur VB, copiez dans le presse-papiers les 3 lignes de code qui se trouvent dans Module3 et détruisez ce module, vous n'en aurez pas besoin.
    - double clic sur ThisWorkbook (fig. 3), déroulez la CB General, sélectionnez Workbook et copiez vos 3 lignes dans la méthode .Open() proposée par défaut

    vue2.jpg
    - retournez à la feuille de calcul (Alt+Q), passez en mode "Création" si vous n'y êtes pas déjà et double cliquez sur votre CB
    - entrez le code suivant dedans :
    Code:
    Private Sub ComboBox1_Change()
        ' Tri par liste alphabétique
        If ComboBox1.ListIndex = 0 Then
            MsgBox "Tri par ordre alphabétique"
        End If
        
            ' Tri par numéro de carte
        If ComboBox1.ListIndex = 1 Then
            MsgBox "Tri par numéros de carte"
        End If
    
        ' Tri par date d'expiration
        If ComboBox1.ListIndex = 0 Then
            MsgBox "Tri par date d'expiration"
        End If
    
    End Sub
    - désactivez le mode "Création" et fermez votre classeur après l'avoir sauvegardé
    - ouvrez votre classeur, la CB doit contenir vos 3 items et doit être réactive.

Discussions similaires

  1. Ajouter du contenu à un Combobox grâce à un document texte
    Par Arnoid dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 25/09/2013, 12h37
  2. Excel 2003 - Filtrer une ComboBox
    Par jorge1201 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 23/04/2011, 15h31
  3. [EXCEL VBA] => Lister des combobox et écrire leur contenu
    Par invite1e5716ed dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 20/05/2008, 09h13