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 :

Initialisation et utilisation de combobox [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut Initialisation et utilisation de combobox
    C'est la première fois que j'utilise des combobox et je n'arrive pas à les faire fonctionner.

    J'ai créer une zone de liste déroulante sur la feuille 1 d'un classeur. Par défaut je veux qu'il y ait 10 lignes dans cette liste avec des valeurs de 0 à 100 par pas de 10. Donc j'ai initialisé la combobox avec le code suivant (qui ne marche pas):
    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
    Private Sub Userform_Initialize()
     
    ComboBox1.AddItem "0"
    ComboBox1.AddItem "10"
    ComboBox1.AddItem "20"
    ComboBox1.AddItem "30"
    ComboBox1.AddItem "40"
    ComboBox1.AddItem "50"
    ComboBox1.AddItem "60"
    ComboBox1.AddItem "70"
    ComboBox1.AddItem "80"
    ComboBox1.AddItem "90"
    ComboBox1.AddItem "100"
     
    End Sub
    Ensuite je veux écrire dans des cellules à côté de la zone de liste déroulante, des valeurs issues d'un tableau calculé dans un module. Donc je transfert la valeur issue de zone de liste déroulante par argument vers le module où j'ai calculé le tableau dont je veux copier les valeur dans la feuille à côté de la zone de liste déroulante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ComboBox1_Change()
        Indchoice = ComboBox1.Value
        Call Fonction2(Indchoice)
    End Sub
    Et enfin voici le code qui me permet d'écrite les données dans la feuille d'après la valeur de la zone de liste déroulante choisie.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Public Sub Fonction2(Indresume)
     
    Select Case Indresume
    Case 0
    Feuil1.Cells(6, 9).Value = It1(0)
    Feuil1.Cells(7, 9).Value = It2(0)
    Feuil1.Cells(8, 9).Value = It3(0)
    Feuil1.Cells(9, 9).Value = Icalc0(0)
    Case 10
    Feuil1.Cells(6, 9).Value = It1(1)
    Feuil1.Cells(7, 9).Value = It2(1)
    Feuil1.Cells(8, 9).Value = It3(1)
    Feuil1.Cells(9, 9).Value = Icalc1(0)
    Case 20
    Feuil1.Cells(6, 9).Value = It1(2)
    Feuil1.Cells(7, 9).Value = It2(2)
    Feuil1.Cells(8, 9).Value = It3(2)
    Feuil1.Cells(9, 9).Value = Icalc2(0)
    Case 30
    Feuil1.Cells(6, 9).Value = It1(3)
    Feuil1.Cells(7, 9).Value = It2(3)
    Feuil1.Cells(8, 9).Value = It3(3)
    Feuil1.Cells(9, 9).Value = Icalc3(0)
    Case 40
    Feuil1.Cells(6, 9).Value = It1(4)
    Feuil1.Cells(7, 9).Value = It2(4)
    Feuil1.Cells(8, 9).Value = It3(4)
    Feuil1.Cells(9, 9).Value = Icalc4(0)
    Case 50
    Feuil1.Cells(6, 9).Value = It1(5)
    Feuil1.Cells(7, 9).Value = It2(5)
    Feuil1.Cells(8, 9).Value = It3(5)
    Feuil1.Cells(9, 9).Value = Icalc5(0)
    Case 60
    Feuil1.Cells(6, 9).Value = It1(6)
    Feuil1.Cells(7, 9).Value = It2(6)
    Feuil1.Cells(8, 9).Value = It3(6)
    Feuil1.Cells(9, 9).Value = Icalc6(0)
    Case 70
    Feuil1.Cells(6, 9).Value = It1(7)
    Feuil1.Cells(7, 9).Value = It2(7)
    Feuil1.Cells(8, 9).Value = It3(7)
    Feuil1.Cells(9, 9).Value = Icalc7(0)
    Case 80
    Feuil1.Cells(6, 9).Value = It1(8)
    Feuil1.Cells(7, 9).Value = It2(8)
    Feuil1.Cells(8, 9).Value = It3(8)
    Feuil1.Cells(9, 9).Value = Icalc8(0)
    Case 90
    Feuil1.Cells(6, 9).Value = It1(9)
    Feuil1.Cells(7, 9).Value = It2(9)
    Feuil1.Cells(8, 9).Value = It3(9)
    Feuil1.Cells(9, 9).Value = Icalc9(0)
    Case 100
    Feuil1.Cells(6, 9).Value = It1(10)
    Feuil1.Cells(7, 9).Value = It2(10)
    Feuil1.Cells(8, 9).Value = It3(10)
    Feuil1.Cells(9, 9).Value = Icalc10(0)
    End Select
     
    End Sub
    J'ai l'impression que ça devrait marcher, je vois pas de difficultés particulières, j'ai pas de message d'erreur.... Mais ça ne marche pas
    La zone de liste déroulante ne contient aucune valeur et aucune fonction n'est lancée quand je "touche" la listé déroulante, même quand je met "click" plutôt que "change" pour lancer le code de la combobox.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut,

    As-tu créé un UserForm?..

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut
    J'ai créé dans Excel à partir de l'icône "Boîte à outils Controles" une "zone de liste déroulante" que j'ai placée sur la feuille 1 du classeur Excel qui à bien le nom ComboBox1. En revanche dans la fenêtre Visual Basic je n'ai pas de Userfom.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ComboBox1.AddItem "0"
    ComboBox1.AddItem "10"
    ComboBox1.AddItem "20"
    ComboBox1.AddItem "30"
    ComboBox1.AddItem "40"
    ComboBox1.AddItem "50"
    ComboBox1.AddItem "60"
    ComboBox1.AddItem "70"
    ComboBox1.AddItem "80"
    ComboBox1.AddItem "90"
    ComboBox1.AddItem "100"
    s'écrit plus rationnellement ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim i as integer
    For i = 0 To 10
      ComboBox1.AddItem i * 10
    Next
    J'ai ensuite des difficultés à comprendre ceci :

    Ensuite je veux écrire dans des cellules à côté de la zone de liste déroulante, des valeurs issues d'un tableau calculé dans un module. Donc je transfert la valeur issue de zone de liste déroulante par argument vers le module où j'ai calculé le tableau dont je veux copier les valeur dans la feuille à côté de la zone de liste déroulante.
    si ta combobox se trouve sur un UserForm...

    Ce n'est pas très précis, comme question ...

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Je me disais aussi...

    Commence par http://silkyroad.developpez.com/VBA/UserForm/ et enchaîne sur http://silkyroad.developpez.com/VBA/ControlesUserForm/.

    Suis cela pas à pas et tu y arriveras. Ces tutoriels sont parfaits pour débuter et c'est toujours par là qu'un débutant devrait commencer.

    Bref, essaie par toi-même avec cela (tu devrais y arriver) et si tu as un problème alors reviens nous voir. Mais ne saute pas les étapes...

    Bonne chance !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut
    La question principale est :
    - Pourquoi la combobox n'est pas initialisé à l'ouvertue du fichier avec les valeurs que j'ai saisi?

    Pour le reste je pense (j'espère...) arriver à m'en sortir.

    Je regarde tes liens et je vindrai te dire si j'y suis arrivé.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    La réponse principale est tout simplement que tu n'as pas créé de Combobox...

    Lis les tutoriels et tu comprendras

  8. #8
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    La question principale est :
    - Pourquoi la combobox n'est pas initialisé à l'ouvertue du fichier avec les valeurs que j'ai saisi?
    Je dirais plus tôt que la réponse principale est :
    "La subroutine userform_initialize se lance que le userform s'initialise. Quel userforme me diras-tu, hé bien moi aussi je me pose la question."
    Bon de plus tu semble confondre listebox et combobox

    Commence par les tutos que ta donné Dead le premier te permettra de comprendre ton problème, le deuxième d'utiliser la combobox, ensuite
    Encore plus de lecture
    http://silkyroad.developpez.com/VBA/EvenementsClasseur/
    ainsi que celui ci si le premier ne suffit pas
    http://silkyroad.developpez.com/VBA/EvenementsFeuille/

    Je sent que ton après midi viens d'être remplie

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut
    Après lecture des tutoriels (forts intéressants), je ne vois pas ce que j'ai oublié de faire pour initialiser ma combobox, qui est toujours vide à chaque ouverture du fichier malgrès les codes (visibles un peu plus tôt dans la discussion) que j'ai saisi.

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Si tu n'y mets pas du tien, ça ne va vraiment pas être possible... Franchement, je ne te crois vraiment pas quand tu dis avoir lu les tutoriels. Et dans ce cas, je ne sais pas pour les autres, mais pour ma part, je ne peux plus rien faire pour toi.

    A part t'indiquer qu'un paragraphe "II. Créer un UserForm" existe dans le premier tutoriel et que c'est par là que tu aurais dû commencer.

    EDIT : première phrase du 2ème tuto ==>
    Vous devez tout d'abord créer un UserForm dans votre classeur afin d'y ajouter des contrôles.
    Juste comme ça vu que tu as lu les tutos, tu n'aurais pas un petit doute sur ce que tu as fait ?.. Allez, je pense t'avoir assez aidé et même beaucoup trop.

    A+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut
    Visiblement j'ai pas l'esprit tourné pour utiliser ces trucs là, malgrès le temps que j'y ai passé et les informations que vous m'avez donné. Donc je vais insister et je reviendrai plus tard pour dire que ça marche, parce que je vais quand même pas me laissé faire par un combobox.

    Merci

  12. #12
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    J'ai l'impression que je n'ai pas été lut dans l'hisoire
    "La subroutine userform_initialize se lance que le userform s'initialise. Quel userforme me diras-tu, hé bien moi aussi je me pose la question."
    Hors tu dis
    J'ai créé dans Excel à partir de l'icône "Boîte à outils Controles" une "zone de liste déroulante" que j'ai placée sur la feuille 1 du classeur Excel qui à bien le nom ComboBox1
    (au passage pardon tu ne confond pas listbox et combobox j'ai lut ton message trop vite )

    Donc tu n'as pas d'userform.
    Tu aurais quand même du t'en rendre compte a la lecture du premier tuto, tu ne crois pas?

    C'est pour cela que je t'ai renvoyé vers les évènement du classeur et des feuilles de calcul.

    Est-ce plus clair comme cela?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Par défaut
    J'ai réussil à faire ce que je voulai mais je n'est pas utilisé de Userform. Ce qui me genait avec les userform c'est que je n'arrivais pas à faire apparaître juste un contrôle (Menu déroulant), il y avait également une fenêtre autour.

    J'ai donc utilisé un contrôle de la barre d'outils formulaire (que je viens de découvrir) qui fait une belle liste déroulante et renvoie dans une cellule la valeur que l'utilisateur à choisit. A chaque fois que l'utilisateur choisit une valeur de la liste déroulante je lance une fonction.

    Petite question en passant, est'il possible en utilisant les userform de ne faire apparaitre qu'un contrôle (liste déroulante dans mon cas) et pas la fenêtre qui va autour? Par fenêtre j'entend le cadre en général bleu où on peut mettre un titre à la fenêtre.

  14. #14
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Non la fenêtre est le userform. Le scontrole est dans le userform donc dans la fenêtre.
    C'est comme demandé non pas un employé mais juste une main (l'employé risque de ne pas être content )

    SIitu veux juste une liste tu fait comme tu l'as dit ,mais sans userform pas d'évènement propre au userform. Il faut passer pas les évènement des feuilles de calculs et des classeur.
    Enfin tu dit avoir réussi c'est le principal
    pense au tag en bas de la discution

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

Discussions similaires

  1. [C#] Utilisation de ComboBox
    Par Troopers dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/11/2009, 13h07
  2. Construire un critère de filtre en utilisant des ComboBox
    Par mary17 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 20/04/2007, 09h19
  3. utilisation de combobox
    Par fredppp dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 04/04/2007, 07h55
  4. Questions concernant l'utilisation des ComboBox
    Par philguio dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/01/2007, 11h26
  5. Utilisation de combobox et d'une animation flash
    Par naima2005 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 04/06/2006, 20h09

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