Programmer menu déroulant avec 3 choix + Changer couleur cellule [Résolu/Fermé]

Signaler
-
Messages postés
6
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
25 novembre 2014
-
Bonjour,

J'aimerais programmer un menu déroulant qui aurait 3 choix.
Un menu déroulant se retrouverait sur chacune des lignes d'une feuille (+ de 100 lignes)
Selon le choix qui est fait, certaines cellules de la ligne correspondante changeraient de couleur.

Excel 2010.
Débutant en VBA.

Merci beaucoup !

4 réponses

Messages postés
12362
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
4 juillet 2020
1 916
Bonjour Sebastient
Bonjour Eric

Je pense qu'Eric, salut au passage, a raison tu dois utiliser un formulaire avec cellule liée au lieu d'une simple liste déroulante (utilité du formulaire ?!)

Remplace ce formulaire par une simple validation de donnée dans les cellules de la colonne C (onglets Données Validation de données Autoriser liste et dans source entrer : A commander;En commande;Reçu

Il faut impérativement que les choix soit orthographiés pareils et avec la même casse( minuscules ou majuscules) dans la liste déroulante et dans les lignes de la macro sinon la macro ne s'effectue pas puisqu'elle ne trouve pas de correspondance

Difficile d'en dire plus sans avoir un exemple de ton fichier

Cdlmnt

"L'imagination est plus importante que le savoir." A. Einstein
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63809 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
25 novembre 2014

Bonjour via55,

Malheureusement nous ne devons pas avoir la même version d'Excel car je ne vois pas ce que tu me dis.
''Remplace ce formulaire par une simple validation de donnée dans les cellules de la colonne C (onglets Données Validation de données Autoriser liste et dans source entrer : A commander;En commande;Reçu ''

Je croyais qu'il était relativement facile (dans la mesure où l'on connait ça) d'ajouter un menu déroulant ayant effet sur certaines cases de la ligne où il est placé. Est-ce que je me trompe ?

J'aimerais bien pouvoir vous envoyer un fichier mais il faudrait qu'on m'explique comment autrement que par email.
Malgré tout, c'est aussi simple qu'une ligne avec différentes données dans chacune des cellules. Une cellule servirait de condition pour la couleur des autres (pas toutes mais certaines) situées sur la même ligne. Ça pourrait au pire être un simple texte dans une cellule mais je préfèrerais un menu déroulant qui fait plus professionnel.

Merci encore et désolé pour les inconvénients.
Soit je n'ai pas la bonne version d'Excel, soit je suis encore plus débutant que je ne le croyais.

Bonne journée,
Sébastien
Messages postés
23375
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
6 221
Bonjour,

pas besoin de vba.
A-priori Validation par liste + MFC (mise en forme conditionnelle) est suffisant.
https://www.cjoint.com/c/DKyq0cRxSS5

eric

PS: pour joindre un fichier le déposer sur cjoint.com et coller ici le lien fourni.

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63809 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
25 novembre 2014

Merci beaucoup Éric et via55.
Ça fonctionne très bien comme cela.
Je pensais être obligé de passer par le VBA pour faire ça. Je ne connaissais pas la Validation de données.

Merci aussi pour CJoint. Je ne connaissais pas ce service.

Bonne journée à vous deux !
Messages postés
12362
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
4 juillet 2020
1 916
Bonjour sebastien

Un exemple de macro à mettre dans le worksheet de la feuille concernée

Après avoir mis des listes déroulantes dans la colonne B pour choisir une couleur, à la modification d'une des cellules la macro colore des cellules déterminées selon la couleur choisie (je ne l'ai fait que pour jaune dans l'exemple, à compléter et adapter) ou remet en blanc si on efface la cellule

Private Sub Worksheet_Change(ByVal Target As Range)
' si pas en colonne 2 sortie de la sub sans rien faire
If Target.Column <> 2 Then Exit Sub
' ligne de la cellule modifiée
x = Target.Row
'test si la valeur de la cellule cible est Jaune
If Target.Value = "Jaune" Then
' alors colorie en jaune les cellules des colonnes C à F et la cellule de la colonne H
Range("C" & x & ":F" & x).Interior.ColorIndex = 6
Range("H" & x).Interior.ColorIndex = 6
End If
If Target.Value = "" Then
' alors colorie en blanc les cellules des colonnes C à F et la cellule de la colonne H
Range("C" & x & ":F" & x).Interior.ColorIndex = 0
Range("H" & x).Interior.ColorIndex = 0
End If
End Sub


Cdlmnt
Messages postés
6
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
25 novembre 2014

Bonjour via55,

Merci pour ta réponse. Malheureusement je n'arrive pas à faire fonctionner cette macro.
J'ai mon menu déroulant 3 options:
-À commander
-En commande
-Reçu

Mon menu est dans la colonne B mais pointe sur la colonne C.

La macro rattachée est celle-ci:

Sub Zonecombinée1_QuandChangement(ByVal Target As Range)
' si pas en colonne 3 sortie de la sub sans rien faire
If Target.Column <> 3 Then Exit Sub
' ligne de la cellule modifiée
x = Target.Row
'test si la valeur de la cellule cible est Jaune
If Target.Value = "Reçu" Then
' alors colorie en jaune les cellules des colonnes D à F et la cellule de la colonne H
Range("D" & x & ":F" & x).Interior.ColorIndex = 6
Range("H" & x).Interior.ColorIndex = 6
End If
If Target.Value = "" Then
' alors colorie en blanc les cellules des colonnes D à F et la cellule de la colonne H
Range("D" & x & ":F" & x).Interior.ColorIndex = 0
Range("H" & x).Interior.ColorIndex = 0
End If
End Sub

La cellule de la colonne C rattachée au menu déroulant affiche 1 à 3 selon le choix qui est fait.

Lorsque je change de choix, j'ai un message qui apparaît disant ''Argument non-facultatif''. Les cellules ne changent pas de couleur.

Merci pour ton aide.
Sébastien
Messages postés
12362
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
4 juillet 2020
1 916
Re

Ta macro est associée à la colonne 3 mais le test est basé sur une valeur en colonne 2 (Reçu) ça ne peut pas marcher

Soit tu associes cette macro à la colonne 2 et tu changes la ligne If Target.Column <> 3 Then Exit Sub en mettant 2 à la place de 3

Soit tu la laisses associée à colonne 3 mais tu changes If Target.Value = "Reçu" Then en remplaçant "Reçu" par 3 sans guillemets (si 3 est la valeur associé au choix reçu)

Cdlmnt
Messages postés
23375
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
30 juin 2020
6 221
Bonjour,
Bonjour via,
Je me demande si ce n'est pas une boite de dialogue formulaire avec cellule associée en C.
Auquel ca ton choix de Worksheet_Change serait correct, mais sur C, ou alors en y appelant sa macro (?)
Sebastien tu devrais déposer un fichier de travail.

eric
Messages postés
6
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
25 novembre 2014

Bonjour Éric,

J'aimerais bien pouvoir partager un fichier mais je ne vois pas comment directement ici. Étant au travail, je ne peux utiliser d'autres outils qui pourraient compromettre la sécurité. La seule façon que je peux faire c'est partager par email.

Merci,
Sébastien
Messages postés
6
Date d'inscription
dimanche 13 mars 2011
Statut
Membre
Dernière intervention
25 novembre 2014

Voici quelques images qui pourraient peut-être aider.
L'idée est de choisir un état dans le menu déroulant pour que les cellules de la ligne où est placé ce menu se colorent de la même couleur que l'une des 3 cellules du haut, selon le choix. Par contre, toutes les cellules ne sont pas colorées mais seulement celles des colonnes F, G et K.
Au lieu d'un menu déroulant, ça pourrait aussi être 3 cases à cocher.

Merci.