Formule VBA sur excel liste déroulante

Fermé
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008 - 30 mai 2008 à 09:44
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 2 juin 2008 à 11:50
Bonjour,

Sur VBA en excel je voudrais avoir une liste déroulante. J'ai fait une "inputbox" mais je voudrais limiter la saisie dans cette inputbox à certaine chose. Pour ma macro je voudrais limiter la saisie au mois de l'année (Janvier, Février, Mars, ...)

J'ai eu donc l'idée d'avoir une liste déroulante, mais comment faire? Sachant que les éléments de la liste seront dans VBA et non sur une feuille de classeur Excel.

J'espère avoir été assez clair, merci pour votre aide

14 réponses

philber221 Messages postés 2 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 30 mai 2008 2
30 mai 2008 à 11:50
Salut,

Si j'ai bien compris tu as créé un formulaire et tu voudrais créer une liste déroulante de mois.

Pour ça il faudrait que tu remplace le InputBox (c'est une zone de texte, non une liste déroulante) de ton formulaire, par un ComboBox (liste déroulante).

Ensuite, si tu as mis dans ta page excel un bouton pour ouvrir ton formulaire tu double clique. VBA s'ouvre et tu devrais avoir :
Private Sub CommandButton1_Click()

tape ensuite le code suivant :
Load UserForm1
UserFrom1.ComboBox1.AddItem "Janvier"
UserFrom1.ComboBox1.AddItem "Février"
[etc...]
UserFrom1.ComboBox1.AddItem "Décembre"
UserForm1.Show
End Sub

En espérant avoir répondu à ta question a+ bonne continuation
2
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 13:36
Bonjour philber,

Merci mais tu peux me donner la synthax du "combobox" ?

Et le probleme c'est que je ne passe pas par une feuille avant.

Exemple :
Certains articles de type A,B,C,... ne sont valable que pour certains mois! Les A12345... sont ceux du mois de Février, les B12345.... sont ceux du mois de Mars, ect ...

La macro que j'ai faite fonctionne normalement mais à un moment l'utilisateur de la macro en fonction des articles sur lesquels il travail doit entrer le mois (qui va ensuite s'insérer dans la colonne approprié) et ce pendant la macro. Et c'est là que j'ai mis la "inputbox" mais il serait plus approprié d'utiliser une combobox.

Mais comment la présenter sur VBA.

merci
0
Doudou95 Messages postés 1561 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 30 avril 2019 275
30 mai 2008 à 10:15
Explique comment tu veux que ta fenetre s'affiche , qu'est ce qu'elle doit faire etc. . . ce que tu demandes je suis en train d'en faire
1
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 10:28
Comment je veux que ma fenetre s'affiche, je n'est pas de préférence. Je m'explique

j'ai créé une variable mois qui sera ensuite mis dans une cellule

mois = InputBox("Veuillez entrez le mois de l'encours en toute lettre" & Chr(10) & "Exemple : janvier", "Mois?")
cells(1,1)= mois

Le probleme c'est que si l'utilisateur de la macro met autre chose qu'un mois ça compliquera la tache. si par exemple il met "Sept" au lieu de "Septembre" ma cellule A1 affichera "Sept" ce qui pose probleme si j'effectue une recherche par mois!

C'est un petit exemple mais en réalité je travail sur plus de 13 000 lignes. Il est donc important de pouvoir limiter la saisie.
Je veux "Janvier","Février","Mars", [...], "Décembre" .

Si j'était sur une feuille de classeur j'aurais fait une liste déroulante avec les 12 mois de l'année. Ainsi on la saisie serait limité. Je vx pouvoir faire la même chose dans ma macro sur VBA !!

Merci
0
Tu peux écrire la liste des mois dans une colonne de ta feuille,

Ensuite tu sélectionne la cellule où tu veux placer ta liste puis :

Données / Validation

Dans l'onglet Option tu cliques dans le menu "Autoriser" tu choisis "Liste"
Puis dans "Source", tu sélectionnes ta liste de mois.

Les onglets "Message de saisie" et "Alerte d'erreur" te permettent de donner des informations à l'utilisateur.

Dis moi si cette réponse t'aide, sinon envoi une partie de la feuille que tu entrain de faire....
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 14:08
oui ça je sais faire, il n'y a aucun problem mais je veux le faire sans pacer par la feuille Excel

je veux que mes donnée source sois dans mon programme macro.
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 14:16
Sub Extrait()
x = 2
mois = InputBox("Veuillez entrez le mois en toute lettre" & Chr(10) & "Exemple : janvier", "Mois?")

Do While Cells(x, 1) <> 0
Cells(x, 1) = mois
Cells(x, 4) = Cells(x, 2) + Cells(x, 3)
x = x + 1
End Sub


Voilà un exemple de code

à la place du inputbox je veux mettre combobox pour limiter la saisie de celui qui lance la macro! ( la macro ne s'applique que sur 1 mois).

voilà en espérant m'être fais comprendre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tu veux donc créer une feuille excel sans toucher à la feuille, mais en utilisant uniquement VBA.
Est ce que cette fois j'ai bien compris ce que tu veux faire ?
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 14:24
Oui

c'est exactement ça !!
0
J'ai une idée avec "xlValidateListe" mais je ne connais pas la syntaxe exacte.
Je te tiens au courant, si tu trouve avant moi, stp tiens moi au courant.
A+ bon courage....
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 mai 2008 à 15:11
Bonjour,

Il faut que tu fasses toi même ta boîte de message avec un UserForm. Tu y mets un ComboBox et tu récupères la valeur selectionner.

Dans le module du UserForm :
Option Explicit

Private Sub ComboBox1_Click()
Dim x As Integer

    x = 2
    Do While Cells(x, 1) <> 0
        Cells(x, 1) = ComboBox1.Text
        Cells(x, 4) = Cells(x, 2) + Cells(x, 3)
        x = x + 1
    Wend

End Sub

Private Sub UserForm_Initialize()

    Me.Caption = "Veuillez sélectionner un mois."
    Me.ComboBox1.AddItem "Janvier"
    Me.ComboBox1.AddItem "Février"
    Me.ComboBox1.AddItem "Mars"
    Me.ComboBox1.AddItem "Avril"
    Me.ComboBox1.AddItem "Mai"
    Me.ComboBox1.AddItem "Juin"
    Me.ComboBox1.AddItem "Juillet"
    Me.ComboBox1.AddItem "Août"
    Me.ComboBox1.AddItem "Septembre"
    Me.ComboBox1.AddItem "Octobre"
    Me.ComboBox1.AddItem "Novembre"
    Me.ComboBox1.AddItem "Décembre"
    
End Sub


;o)
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 15:23
Je t'avouerais que là je n'est pas compris je met ton code à quel moment ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 15:27
Dans l'éditeur VB (alt+F11) ... tu créés un Userform. Tu cliques sur "code" (à droite, juste au dessus de l'arborescence des feuilles) et tu fais copier/coller du code dedans. Tu n'oublies pas de mettre un ComboBox sur ton Userform.

;o)
0
philber221 Messages postés 2 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 30 mai 2008 2
30 mai 2008 à 15:21
En fait s'il te faut absolument une ComboBox, tu dois impérativement créer un formulaire avec cette Combo, je ne vois pas d'autre solution.

Le seul moyen que je voie est le suivant :
Tu créés un formulaire
tu mets comme intitulé "Selectionnez un mois de la liste"
en dessous tu mets le combobox
tu initialise ton formulaire afin de mettre les mois dans la liste.

Ensuite, dans ton code ("Extrait" que tu as mis en exemple), au lieu d'appeler la fonction "InputBox", tu appelles ton formulaire.

Je ne vois vraiment pas d'autre solution.
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 15:37
Ca ne fonctionne pas

message d'erreur :
Erreur de compilation :
Membre de méthode ou de données introuvable

???
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 mai 2008 à 15:38
peux-tu nous dire sur quelle ligne de code le message apparaît ... ça pourrait nous être utile !!!
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 15:42
sur celle là:

Me.ComboBox1.AddItem "Janvier"

? désoler mais je n'y connait vraiment rien au UserForm là je découvre!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 mai 2008 à 15:46
peux tu faire passer ton fichier par https://www.cjoint.com/ et ensuite mettre le lien ici.
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 16:46
https://www.cjoint.com/?fEqS7bmPVO

voilà j'ai un peu abrégé la macro mais c'est le même système

merci
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
2 juin 2008 à 10:34
Pas de réponse ?
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 16:08
ok
0
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 16:52
https://www.cjoint.com/?fEqS7bmPVO

C'est fait !

Vous verrez que l'on peut mettre n'importe quoi pour le mois ce que je ne veux pas.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 juin 2008 à 11:50
bonjour, Dsl pour le retard , mais problème de connexion ce matin.

Voilà une proposition de solution : https://www.cjoint.com/?gclXLYLoSF

;o)

polux
0
Doudou95 Messages postés 1561 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 30 avril 2019 275
30 mai 2008 à 10:58
Attends faut que je fasses des tests et la j'ai trop de boulot j'vois ça un peu plus tard
-1
ghetto972 Messages postés 14 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 11:05
ok, Merci

Si il y en a d'autre qui peuvent m'aider je suis preneur

Merci
0