liste déroulante suivant la mise en forme conditionnelle de la cellule

bougy

XLDnaute Nouveau
Bonjour a tous.

Il s'agit de mon premier message sur ce forum, que j'ai découvert récemment!
Après une petite recherche sur le forum, je n'ai pas trouvé de réponse à mon problème.

Je souhaite créer un liste déroulante (jusque là, ça va) et l'appliquer uniquement aux cellules "grises" (couleurs de fond de la cellule) de mon tableau

ces cellules se trouvent dans la même colonne, mais le nombre de ligne entre chaque cellule "grise" n'est pas fixe.

je souhaite donc savoir si je peux avoir une fonction (mais je sens bien la nécessité de passer par une macro en VBA) qui ressemblerait à ça:

Pour chaque cellule de la colonne G dont la mise en forme= couleur de fond gris
Alors insère la liste déroulante suivante :"liste1"
Sinon, ne fait rien

Avez-vous des idées voire des solutions?
Je préfererais évidemment me passer d'une macro (car le tableau est déjà bien chargé en macro et process VBA).

Par avance merci!!!
 

Victor21

XLDnaute Barbatruc
Supporter XLD
Re : liste déroulante suivant la mise en forme conditionnelle de la cellule

Bonjour, et bienveue sur XLD.

Il me semble que vous prenez le problème par le mauvais bout.
Utilisez directement la condition gérant la mefc pour définir votre liste déroulante.
Enfin, je crois, car sans fichier joint, difficile de tester pour proposer une solution adaptée.
Pour joindre un exemple succint, mais représentatif de votre fichier, allez en mode avancée, cliquez sur le trombone et laissez-vous guider.
 

DoubleZero

XLDnaute Barbatruc
Re : liste déroulante suivant la mise en forme conditionnelle de la cellule

Bonjour et bienvenue, bougy, bonjour, Victor21 :), le Forum

Un essai dans le fichier joint... sans formule.

A bientôt :)
 

Fichiers joints

DoubleZero

XLDnaute Barbatruc
Re : liste déroulante suivant la mise en forme conditionnelle de la cellule

Re-bonjour,

Si la coloration des cellules, en colonne G, est véritablement obtenue par mise en forme conditionnelle, le fichier déposé en #3 s'avère inadapté :( et je ne sais faire autrement :confused:.

A bientôt :)
 

Fo_rum

XLDnaute Accro
Re : liste déroulante suivant la mise en forme conditionnelle de la cellule

Bonsoir,

bougy, pour éclairer ta lanterne, si tu acceptes des listes vides, Victor21 te donne une bonne solution par formule. Si tu n'en veux pas, il me semble qu'il te faille passer par une macro.
Dans le fichier joint (merci :)-:)) tu en as un exemple avec l'évènement Change.
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("F3:F25")) Is Nothing Then
    Target.Offset(, 1) = "": Target.Offset(, 1).Validation.Delete
    If Target = 1 Then Target.Offset(, 1).Validation.Add Type:=xlValidateList, _
        AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=liste1"
  End If
End Sub
 

Fichiers joints

bougy

XLDnaute Nouveau
Re : liste déroulante suivant la mise en forme conditionnelle de la cellule

Wahou! Que de réponses et de propositions!! Merci a tous!
Je suis agréablement surpris de la réactivité des membres du fourm!!

J'essaye tout ça rapidement (dans la journée!).
J'essaye également de poster mon fichier dans la journée.

Sinon:Fo_rum: pourrais tu commenter le code vba écrit?
Je reconnais certaines choses, mais beaucoup me semblent obscures!!
 

Fo_rum

XLDnaute Accro
Re : liste déroulante suivant la mise en forme conditionnelle de la cellule

Bonjour,

De 2 choses l'une :
personne n'est intéressé par ma proposition alors je n'ai plus rien à dire.
Dans le cas contraire, je complète mon intervention.

Explications de la macro :
Elle est appelée lors du changement du contenu d'une cellule (Target)
Si la cellule est dans la plage désignée,
on efface celle de droite ainsi que la Validation éventuelle (Target.offset(0,1) : décalage de 0 ligne et 1 colonne à droite)
si le contenu de la cellule changée est 1 alors on définit la Validation de type liste avec la liste nommée liste1
sinon on ne fait rien et
on arrête le test de l'évènement.
Si on n'a pas d'autres cellules hors de la plage à tester alors on peut réduire la macro ainsi :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If  Intersect(Target, Range("F3:F25")) Is Nothing Then  Exit Sub 'hors plage, on sort de suite
   Target.Offset(, 1) = "": Target.Offset(, 1).Validation.Delete  
   If Target = 1 Then Target.Offset(, 1).Validation.Add Type:=xlValidateList, _ 
     AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=liste1"  
 End Sub
J'oublie : le _ (précédé d'une espace) c'est simplement pour la lisibilité; on va à la ligne sans "casser" l'instruction et on n'a plus besoin du End If.
 

bougy

XLDnaute Nouveau
Re : liste déroulante suivant la mise en forme conditionnelle de la cellule

me revoici. Je n'ai pas pu tester vos proposition car journée plus chargée que prévue.
Pour fo_rum:
je suis intéressé par lexplication de ta macro, même si je ne retiens pas forcément ta solution.
Je suis bien conscient que tu as du passer un peu de temps pour me répondre et je t'en remercie!
Aussi, ne te fâche pas ^^'
Dans tous les cas je vous tiens au courant rapidement (j'explore aussi une autre piste dont je vous ferai part si ça abouti!)
encore un grnd merci a la communauté pour la pertinence de vos réponses
 

bougy

XLDnaute Nouveau
Re : liste déroulante suivant la mise en forme conditionnelle de la cellule

Voici le fichier sur lequel je travaille.

le but est de récuperer le liste "cause_non_rendue" sur la feuille admin et de l'inserer sur la feuille "tapis" dans les colonnes ST (fusionnée), mais uniquement sur les cellules grises.

Sinon, je pensais faire un menu contextuel avec une macro. Mais je ne sais pas comment faire.
genre:
si clic droit dans la cellule grise, affiche la liste
selection de l'item.


En fait, ce fichier à été mis au point et maintes fois retouché par différentes personnes, d'ou la difficulté à ajouter ou modifier des éléments (pour moi en tous cas!).

Je pense qu'il sera plus facile de me proposer des pistes ou des solutions avec le fichier!!!

par avance merci
 

Discussions similaires


Haut Bas