Programmer menu déroulant avec 3 choix + Changer couleur cellule

Résolu/Fermé
sebastient79 - 20 nov. 2014 à 14:24
sebastient79 Messages postés 6 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 25 novembre 2014 - 25 nov. 2014 à 18:02
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 !
A voir également:

4 réponses

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
Modifié par via55 le 21/11/2014 à 15:11
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
sebastient79 Messages postés 6 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 25 novembre 2014
24 nov. 2014 à 14:48
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 24/11/2014 à 16:49
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
sebastient79 Messages postés 6 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 25 novembre 2014
25 nov. 2014 à 18:02
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 !
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
20 nov. 2014 à 14:47
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
0
sebastient79 Messages postés 6 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 25 novembre 2014
20 nov. 2014 à 23:00
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
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
20 nov. 2014 à 23:12
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
21 nov. 2014 à 00:48
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
0
sebastient79 Messages postés 6 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 25 novembre 2014
21 nov. 2014 à 14:32
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
0
sebastient79 Messages postés 6 Date d'inscription dimanche 13 mars 2011 Statut Membre Dernière intervention 25 novembre 2014
21 nov. 2014 à 14:51
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.


0