Programmer menu déroulant avec 3 choix + Changer couleur cellule
Résolu
sebastient79
-
sebastient79 Messages postés 6 Statut Membre -
sebastient79 Messages postés 6 Statut Membre -
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 !
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 !
A voir également:
- Programmer menu déroulant avec 3 choix + Changer couleur cellule
- Changer dns - Guide
- Menu déroulant excel - Guide
- Excel cellule couleur si condition texte - Guide
- Excel menu déroulant en cascade - Guide
- Ai suite 3 - Télécharger - Optimisation
4 réponses
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
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
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
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
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
Cdlmnt
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
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
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
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
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
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.


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.


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