Rechercher : dans
Par :

Formule VBA sur excel liste déroulante

Dernière réponse le 2 jun 2008 à 11:50:11 ghetto972, le 30 mai 2008 à 09:44:35 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Formule VBA sur excel liste déroulante » dans :
Liste déroulante avec saisie semi automatique pour EXCEL VoirC'est une procédure qui demande un investissement personnel et qui n'est pas nécessairement facile à comprendre et à réaliser dès la première fois. Afin de rendre cette astuce facile à utiliser, nous allons employer les plages et les formules...
Listes déroulantes simples avec Excel VoirDans votre tableau, vous souhaitez insérer un texte ou une valeur choisi dans une liste (déroulante). vous créez votre liste, ligne aprés ligne, sur votre feuille en cours ou sur une autre feuille du classeur en cours. vous la nommez : INSERTION...

1

Doudou95, le 30 mai 2008 à 10:15: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

Répondre à Doudou95

2

ghetto972, le 30 mai 2008 à 10:28:52

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

Répondre à ghetto972

3

Doudou95, le 30 mai 2008 à 10:58:58

Attends faut que je fasses des tests et la j'ai trop de boulot j'vois ça un peu plus tard

Répondre à Doudou95

4

ghetto972, le 30 mai 2008 à 11:05:05

Ok, Merci

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

Merci

Répondre à ghetto972

5

philber221, le 30 mai 2008 à 11:50:57

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

Répondre à philber221

6

ghetto972, le 30 mai 2008 à 13:36:41

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

Répondre à ghetto972

7

philber221, le 30 mai 2008 à 13:52:46

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....

Répondre à philber221

8

ghetto972, le 30 mai 2008 à 14:08:03

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.

Répondre à ghetto972

9

ghetto972, le 30 mai 2008 à 14:16:48

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.

Répondre à ghetto972

10

philber221, le 30 mai 2008 à 14:19:26

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 ?

Répondre à philber221

11

ghetto972, le 30 mai 2008 à 14:24:26

Oui

c'est exactement ça !!

Répondre à ghetto972

12

philber221, le 30 mai 2008 à 14:53:14

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....

Répondre à philber221

13

Polux31, le 30 mai 2008 à 15:11:31

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) «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

15

ghetto972, le 30 mai 2008 à 15:23:36

Je t'avouerais que là je n'est pas compris je met ton code à quel moment ?

Répondre à ghetto972

16

Polux31, le 30 mai 2008 à 15:27:06

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)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

14

philber221, le 30 mai 2008 à 15:21:59

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.

Répondre à philber221

17

ghetto972, le 30 mai 2008 à 15:37:03

Ca ne fonctionne pas

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

???

Répondre à ghetto972

18

Polux31, le 30 mai 2008 à 15:38:51

Peux-tu nous dire sur quelle ligne de code le message apparaît ... ça pourrait nous être utile !!! «Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

19

ghetto972, le 30 mai 2008 à 15:42:52

Sur celle là:

Me.ComboBox1.AddItem "Janvier"

? désoler mais je n'y connait vraiment rien au UserForm là je découvre!

Répondre à ghetto972

20

Polux31, le 30 mai 2008 à 15:46:11

Peux tu faire passer ton fichier par http://www.cjoint.com et ensuite mettre le lien ici. «Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

22

ghetto972, le 30 mai 2008 à 16:46:02

http://cjoint.com/?fEqS7bmPVO

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

merci

Répondre à ghetto972

24

ghetto972, le 2 jun 2008 à 10:34:59

Pas de réponse ?

Répondre à ghetto972

21

ghetto972, le 30 mai 2008 à 16:08:54

Ok

Répondre à ghetto972

23

ghetto972, le 30 mai 2008 à 16:52:07

http://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.

Répondre à ghetto972

25

 Polux31, le 2 jun 2008 à 11:50:11

Bonjour, Dsl pour le retard , mais problème de connexion ce matin.

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

;o)

polux «Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31