Liste deroulante VBA

salut,

je souhaite faire une liste déroulante avec 2 choix (5 ou 38) et quand je sélectionne une valeur, ca affecte la valeur 5 ou 38 à la cellule C2 et affecte la valeur 251 ou 284 à D2 suivant si 5 ou 38 a été sélectionné dans la liste.

Je suis sous excel 2003.

J'utilise une macro car je ne sais pas comment faire sans.

J'ai donc dans la boite à outils controles, sélectionner la zone de liste déroulante et définit cette zone sur la cellule A1

Ensuite, j'ai fait "visualiser le code" avec le bouton droit sur la zone de liste déroulante et j'ai tapé ce code :

Private Sub ComboBox1_Change()
    Sheets("Synthèse").Select
    ComboBox1.AddItem = "5"
    ComboBox1.AddItem = "38"
    If ComboBox1.Value = "5" Then
        Sheets("Synthèse").Range("C2") = 5
        Sheets("Synthèse").Range("D2") = 251
    Else
        Sheets("Synthèse").Range("C2") = 38
        Sheets("Synthèse").Range("D2") = 284
    End If
End Sub

Le problème est que avec ce code, ca ne marche pas :

dans la liste déroulante, il n'y pas de valeurs affichées...

Merci de votre aide !

fr

Bonjour,

Pas besoin de macro,

en D2

=SI(C2=5;251;SI(C2=38;284;""))

voir en C2 Données/Validation

Amicalement

Claude

merci pour la réponse !

j'ai oublié une hypothèse dans ma demande :

dans la case D2, je voudrais avoir la possibilité de mettre manuellement une autre valeur.

Donc je ne dois pas mettre de formule dans la case D2 d'ou l'utilisation de macro.

Si quelqu'un pouvais m'aider à faire cela avec une macro, svp !

merci

Fr

re,

J'avais prévu le coup !

supprime la liste/Validation

et réactive le Private Sub de la feuille en virant les apostrophes

D2=251 si C2=5 sinon D2=284

si pas çà, explique + clairement

merci pour la réponse,

je n'ai pas compris ce que je dois faire :

supprimer la liste/validation : comment faire ?

reactive private sub : ou cela ? et comment ?

je suis débutant sous excel, désolé pour ces questions...

merci

fr

re,

Excuse, j'étais pas sur le bon fichier

Mais pas sûr d'avoir tout compris !

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i
    If Not Application.Intersect(Target, Range("c2")) Is Nothing Then
        Select Case Target
            Case Is = 5: i = 251
            Case Is = 38: i = 284
            Case Else: i = ""
        End Select
        Range("d2") = i
    End If
End Sub

Amicalement

Claude

Bonjour telecofr,

Je crois que tu n'utilises pas toutes les propriétés d'une combobox.

Avec un paramétrage correct des BoundColumn et ColumnCount, tu peux résoudre ton problème.

Enfin, il me semble.

En effet, tu peux créer une comboBox avec 9 colonnes (je crois que c'est le max 9 colonnes - mais toi t'en veux 2). tu sélectionnes une valeur dans la première colonne et l'équivalent (même ligne des autres colonnes) s'affiche où tu veux.

Bon je ne suis pas toujours clair dans mes explications... Je suis pris de cours...j'ai du taff .

Je te fais un exemple dès que possible.

Ciao...

Au plaisir.

Captain_SOLO

Bonjour

Un essai à voir

merci à vous tous pour vos réponses.

c'est bien ce que je voulais faire !

Donc en vba ou non, il faut faire prendre les valeurs de la liste déroulante dans des cellules.... ok.

Banzai64, merci pour les explications dans le fichier pour comment faire la méthode vba. J'ai pu refaire depuis zéro.

Par contre, Dubois, pourrais tu me donner la méthode pour faire ta méthode car je n'ai pas su tout refaire depuis zéro :

pour faire la liste déroulante, tu as utilisé Données -> Validation -> Liste

mais comment fais tu la liste dynamique ? pour faire le lien avec "liste" car je ne peux pas aller dans une autre feuille pour choisir la source

ensuite comment fais tu pour afficher la valeur en D2 ?

merci encore pour votre aide !

fr

Bonjour,

Pour la liste :

tu peux la mettre où tu veux, mais il est recommandé de dédier une feuille

pour çà (ici feuille Listes) en prévision d'autres listes.

Voir la formule dans les noms/définis, pour la rendre dynamique

Ensuite en C2, tu fais Données/Validation/Liste

et Source: = nom de la liste (ici = liste)

Pour le code, dans le VBE de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i
    If Not Application.Intersect(Target, Range("c2")) Is Nothing Then
        Select Case Target
            Case Is = 5: i = 251
            Case Is = 38: i = 284
            Case Else: i = ""
        End Select
        Range("d2") = i
    End If
End Sub

Amicalement

Claude

merci pour les explications !!

je commence à mieux comprendre le fonctionnement d'excel

merci encore pour ton aide !

fr

Rechercher des sujets similaires à "liste deroulante vba"