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 :

Creer Combobox dans VBA Excel


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Par défaut Creer Combobox dans VBA Excel
    Bonjour,

    Je veux creer un Combobox pour un liste des 12 pays.

    J'ai deja essaye de faire ca mais en fait, toujours erreurs.

    Concretement, je veux que Macro excel va chercher des valeurs equivalents dans le sheet " Data Power 08-09" pour completer dans le sheet "Country Data" en utilisant la fonction Vlookup.

    Je voudrais que quand on selectionne un pays dans le liste de Combo box, les bases de donnes de ce pays va etre rempli dans le tableau dans le sheet " Country data"

    Voila une version d'essai que je viens de faire pour ajouter la liste Combo Box et aussi remplir le YTD Order Intake pour le Mai 2009 (base sur la base de donnes de sheet "Data Power 08-09"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox1_Change()
        Sheets("Data Power 08-09").Select
        Combo.Box1.AddItem = "China"  'List Index = 0
        Combo.Box1.AddItem = "France" 'List Index = 1
        Select Case Combo.Box1.Value
            Case China
            Worksheets("Country Data").Range("M13").Select
            ActiveCell.Value = VLOOKUP(F2,Data Power 08-09!B4:J79,2,FALSE)
            End Select
    End Sub

  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,

    Premièrement on écrit Combobox1 et non Combo.Box1. Ensuite, je te conseille d'aller voir les tutos du site : ils sont vraiment très bien faits !

    EDIT : c'est par ici http://silkyroad.developpez.com/VBA/ControlesUserForm/

    De plus, pas besoin d'un Select Case pour ton cas. Un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If ComboBox1.Value = "China" Then
    End If
    suffira.

    Evite aussi les Select, ça ralentit le tout et ça saoule si on a pas mis l'Application.ScreenUpdating à False.

    Tu pourrais faire directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Country Data").Range("M13").Value = VLOOKUP(F2,Data Power 08-09!B4:AJ79,2,FALSE)
    Enfin, tu devrais remplacer Value par Formula vu que ça a aps l'air d'être une valeur. Ca donnerait donc :

    Worksheets("Country Data").Range("M13").Formula = " = VLOOKUP(F2,Data Power 08-09!B4:AJ79,2,FALSE)"

    Et si t'arrives à lire les tutos, les AddItem se font plutôt à l'initialisation de l'UserForm à part cas exceptionnels, ce qui a pas l'air d'être ton cas. La condition, quant-à elle, je la mettrais dans le code. Bref, l'événement Change devrait rester vide.

    Essaie de mettre tout ça en place et si tu n'y arrives pas je te filerai un coup de main (figuré à moins que t'aimes les baffes )

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Par défaut
    Merci de ta reponse, maintenant je peux ajouter la liste Combobox

    Mais ca marche pas encore avec Vlookup.

    En fait, quand j'ai choisi "china" par exemple, ca ne donne pas valeur (c'est a dire un chiffre) mais ca donne la formule Vlookup. Ce que je veux c'est la valeur pour completer ce tableau

    Et aussi, tu peux voir que dans la formule Vlookup, j'ai utilise la Cellule F2 comme la reference. Je veux que cette cellule va changer quand on selectionne le pays dans la liste Combobox. Si j'ai choisi "China", F2 = China et comme ca, Vlookup donne exactement la valeur de ce pays.

    Voila les Codes que je viens de modifier, grace a ton aide . C'est juste la version d'essai pour China, et apres je vais faire avec les autres pays.



    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
    Private Sub ComboBox1_Change()
        Dim i As Byte
     
        ComboBox1.AddItem "China"  'List Index = 0
        ComboBox1.AddItem "France" 'List Index = 1
        ComboBox1.AddItem "Italy"  'List Index = 2
        ComboBox1.AddItem "UK"     'List Index =3
        ComboBox1.AddItem "India"  'List Index =4
        ComboBox1.AddItem "Turkey" 'List Index = 5
        ComboBox1.AddItem "Mexico" 'List Index = 6
        ComboBox1.AddItem "USA"    'List Index = 7
        ComboBox1.AddItem "Canada" 'List Index =8
        ComboBox1.AddItem "Russia" 'List Index = 9
        ComboBox1.AddItem "Brazil" 'List Index = 10
        ComboBox1.AddItem "Spain"  'List Index = 11
     
        If ComboBox1.Value = "China" Then
            Worksheets("Country Data").Range("M13").Formula = " = VLOOKUP(F2,Data Power 08-09!B4:AJ79,2,FALSE)"
        End If
    End Sub

    Tu peux m'aider encore

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Par défaut
    Bonjour,

    Heureusement, maintenant j'ai deja reussi a faire tout : Combo box et Vlookup

    Mais un petit probleme c'est que pourquoi la liste Combo Box ne fonctionne pas automatiquement ????

    C'est a dire, quand j'ouvre ce fichier, je dois cliquer Alt +F8 pour voir macro et Executer Macro. sinon le combo box ne marche pas.

    Comment faire pour resoudre ce probleme.

    Vous pouvez voir ma piece jointe

    Merci beaucoup

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Par défaut
    J'ai deja essaye de faire comme ca

    J'ai tape ce code, mon macro s'appell "pays"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Application.Run ("Pays")
    End Sub
    Mais ca marche pas

    C"est l'erreur 1004 : Application - defined or object - defined error

    Et meme maintenant ca marche pas aussi mon macro. je ne comprends pas, ou c'est le probleme de nommer macro????? (parce ce qu'avant j'ai nomme ce macro "ComboBox1" mais maintenant j'ai change en "Pays"

    Voila mon code complet pour le macro "Pays"
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    Sub Pays()
     
        Combobox1.AddItem "China"  'List Index = 0
        Combobox1.AddItem "France" 'List Index = 1
        Combobox1.AddItem "Italy"  'List Index = 2
        Combobox1.AddItem "UK"     'List Index =3
        Combobox1.AddItem "India"  'List Index =4
        Combobox1.AddItem "Turkey" 'List Index = 5
        Combobox1.AddItem "Mexico" 'List Index = 6
        Combobox1.AddItem "USA"    'List Index = 7
        Combobox1.AddItem "Canada" 'List Index =8
        Combobox1.AddItem "Russia" 'List Index = 9
        Combobox1.AddItem "Brazil" 'List Index = 10
        Combobox1.AddItem "Spain"  'List Index = 11
     
        If Combobox1.Value = "China" Then
            Worksheets("Country Data").Range("F2") = "China"
        End If
     
        If Combobox1.Value = "India" Then
            Worksheets("Country Data").Range("F2") = "India"
        End If
     
        If Combobox1.Value = "France" Then
            Worksheets("Country Data").Range("F2") = "France"
        End If
     
        If Combobox1.Value = "Italy" Then
            Worksheets("Country Data").Range("F2") = "Italy"
        End If
     
        If Combobox1.Value = "UK" Then
            Worksheets("Country Data").Range("F2") = "UK"
        End If
     
        If Combobox1.Value = "Spain" Then
            Worksheets("Country Data").Range("F2") = "Spain"
        End If
     
        If Combobox1.Value = "Mexico" Then
            Worksheets("Country Data").Range("F2") = "Mexico"
        End If
     
        If Combobox1.Value = "Canada" Then
            Worksheets("Country Data").Range("F2") = "Canada"
        End If
     
        If Combobox1.Value = "Brazil" Then
            Worksheets("Country Data").Range("F2") = "Brazil"
        End If
     
        If Combobox1.Value = "USA" Then
            Worksheets("Country Data").Range("F2") = "USA"
        End If
     
        If Combobox1.Value = "Russia" Then
            Worksheets("Country Data").Range("F2") = "Russia"
        End If
     
        If Combobox1.Value = "Turkey" Then
            Worksheets("Country Data").Range("F2") = "Turkey"
        End If
        'Summary
     
            Worksheets("Country Data").Range("M13").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!B7:R82,2,False)"
            Worksheets("Country Data").Range("I13").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!T7:AJ82,2,False)"
            Worksheets("Country Data").Range("K13").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!T7:AJ82,10,False)"
            Worksheets("Country Data").Range("O13").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!B7:R82,10,False)"
     
            Worksheets("Country Data").Range("M14").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!B7:R82,3,False)"
            Worksheets("Country Data").Range("I14").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!T7:AJ82,3,False)"
            Worksheets("Country Data").Range("K14").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!T7:AJ82,11,False)"
            Worksheets("Country Data").Range("O14").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!B7:R82,11,False)"
     
            Worksheets("Country Data").Range("M15").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!BT7:CJ84,2,False)"
            Worksheets("Country Data").Range("I15").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!AL7:BR84,2,False)"
            Worksheets("Country Data").Range("K15").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!AL7:BR84,18,False)"
     
            Worksheets("Country Data").Range("M16").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!BT7:CJ84,3,False)"
            Worksheets("Country Data").Range("I16").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!AL7:BR84,3,False)"
            Worksheets("Country Data").Range("K16").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!AL7:BR84,19,False)"
     
            Worksheets("Country Data").Range("M20").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!BT7:CJ84,4,False)"
            Worksheets("Country Data").Range("I20").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!AL7:BR84,4,False)"
            Worksheets("Country Data").Range("K20").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!AL7:BR84,20,False)"
     
            Worksheets("Country Data").Range("M21").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!BT7:CJ84,5,False)"
            Worksheets("Country Data").Range("I21").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!AL7:BR84,5,False)"
            Worksheets("Country Data").Range("K21").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!AL7:BR84,21,False)"
     
    End Sub

  6. #6
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonsoir violet2410 l' ami DeaD78 le forum
    en 1 déja la combobox je la mets a la place de country en d2
    en 2 pour l exemple la liste je l as mis en b100:b112
    b100 =country b101=china b102=france ect...
    tu peus la mettre ou tu veus méme sur une autre feuille!!

    en 2 tu clic sur icone creation tu retournes sur ta combobox clic droit tu selectionne proprietés dans ListFIllrange tu rentres b100:b112
    par defaut ta combobox est sur country tu fermes tu reclic sur icone creation
    termine
    dans vba
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ComboBox1_Change()
      [f2] = ComboBox1
    end sub
    c' est tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Worksheets("Country Data").Range("M13").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!B7:R82,2,False)"
            Worksheets("Country Data").Range("I13").Formula = "=VLookup(" & "F2" & ",'Data Power 08-09'!T7:AJ82,2,False)"
    ect...

    a mon avis toute ces lignes servent a rien!!!!

    maintenant tu as les formules dans ta feuille excel a moins que le code montre est pas complet est tu changes de formules ce que je doute!!!!!
    il faut savoir que les formules excel sont plus rapide que generer par du code vba

  7. #7
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 133
    Par défaut petite contribution
    Bonjour,

    Pour ma part j'aurai une feuille de reference pays avec une plage nomme "ListePays" ou cette reference serai lie dans la propriete ListFillRange

    Voila le tour est joue c'est plus propre j'ai change le code également voir fichier ci-joint

    De plus comme dit laetitia il faut d'abord priviligier les fonctions natives d'excel dans les cellules et sinon en dernier ressort developpement en vba

    Fichiers attachés Fichiers attachés

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Par défaut
    Merci beaucoup de m'aider

    Mais il reste encore une petite chose que je ne comprends pas dans le fichier que Lynx92260 m'a envoye

    Pourquoi il y a une liste Combobox avec beaucoup de pays comme ca meme je n'ai vu aucun code qui precise l'ajout de ces pays dans la liste combo box. Je comprends que t'as deja cree une liste dans un autre sheet "Country". Et cela va inserer automatiquement dans la liste Combobox????

    parce que j'ai deja essaye de copier ce code dans un nouveau fichier,j'ai fait le sheet "country" avec 12 pays, je veux avoir la liste combobox de seulement 12 pays, mais ca marche pas, parce qu'il n'y a aucun pays dans la liste combobox

    Je suis vraiment debutant pour le VBA, tu peux m'expliquer

  9. #9
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re le fil as tu nommée ta liste???
    tu selectionnes toute ta liste dans la feuille dans la barre de formule a gauche tu clic sur la petite fléche tu rentre le nom que tu veus & tu l ecris dans la propriétes de la combobox1 ListFIllrange

  10. #10
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 133
    Par défaut precision
    c est un exemple pour montrer qu'il suffit de sélectionner une plage de cellule de la nomme par Exemple "ListePays"
    et ensuite dans la propriete du combobox ListFillRange=ListePays
    Comme je l'ai fait dans l'exemple


    Pour l'adapter il suffira d 'enlever les pays non désiré puis de définir la plage nommée

    Donc pour ta feuille "Country" tu selectionnes tes 12 pays tu la nommes comme tu veux tu l'appelles par exemple "ListeCountry" Dans la propriéte du combobox tu changes la propriete ListFillRange par ListeCountry


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

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Par défaut
    Merci beaucoup

    Ca marche!!!!!!!!!!

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

Discussions similaires

  1. creer un formulaire vba excel
    Par remington19 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/04/2007, 14h24
  2. Liste des contrôles dans VBA-Excel
    Par CAFOUIN dans le forum Excel
    Réponses: 2
    Dernier message: 23/02/2007, 17h50
  3. Name et formula dans VBA Excel
    Par khadba dans le forum Windows
    Réponses: 1
    Dernier message: 20/02/2007, 11h37
  4. ptit probleme combobox sous vba/excel
    Par bandito dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/10/2006, 09h34
  5. [VBA-E] Compatibilité de Date dans VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/05/2006, 19h25

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