Menu Déroulant

Bonjour à tous,

Je voudrais créer un menu déroulant dans chaque cellule bleue (voir fichier joint) pour afficher un pourcentage de la valeur inscrite dans la cellule verte en bout de ligne.

Dans le menu déroulant je fais apparaitre le pourcentage que je veux appliquer, mais je n'arrive pas pas à faire apparaitre le résultat dans la cellule.

Par ex: Dans D7 je voudrais afficher 25% de 3; dans la cellule E7 je voudrait afficher 75% de 3, etc.

Comment dois je faire ?

Merci de votre aide

Bonjour Etienne, le forum,

Je ne trouve pas ton fichier.

Regardes en haut et à droite pour joindre un fichier.

N'oublies pas de copier l'adresse sur ton fil.

Cordialement,

Bernard.

Bonjour Etienne, le forum,

Je m’excuse pour mon message précédent, tu avais déjà rectifié.

Mes neurones n'étant plus de la première jeunesse, je ne suis pas certain de ma réponse.

Regardes le fichier ci-joint.

https://www.excel-pratique.com/~files/doc2/1pnR5Menu_deroulant_v2.xls

Cordialement

Bernard.

Merci pour ta recherche, mais ce n'est pas exactement ce que je souhaite faire.

Il faut que je garde la forme du menu déroulant pour pouvoir modifier mon pourcentage simplement et rapidement, tout en laissant apparaitre dans la liste le pourcentage à appliquer.

Nota: le fichier joint n'est qu'une illustration. L'original est un enorme tableau assez lourd.

Merci

Etienne

bonjour Etienne,

j'ai bien peur que ce que tu demande ne soit pas possible a partir des validations de données.

je t'explique (mais je suis loin d'être un maitre en la matière) la solution que je voie consiste a faire une macro qui vérifie si une cellule bleue change et remplace le choix de l'utilisateur par le résultat du calcul... un truc du genre:

Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Cells(1).Column <= 7 And Target.Cells(1).Column >= 4) And (Target.Cells(1).Row >= 7 And Target.Cells(1).Row <= 9)  Then
        pourcent = Target.Cells(1).Value
        Target.Cells(1).Value = pourcent * ActiveSheet.Cells(Target.Cells(1).Row, 3).Value

    End If
End Sub

mais ca ne fonctionne pas car le fait de remplacer la valeur, appel la fonction qui , du coup, tourne en boucle avant de planter excel...

or je ne vois pas comment capturer le changement de valeur autrement que comme ca.

par contre, je suppose que c'est faisable si tu insères dans ta page des contrôles de formulaires "menu déroulant" qui offrent plus de possibilités quand à l'interception du choix de l'utilisateur.

en espérant que cela mette qqun sur une piste

bien à toi

fred

1suivi-st.xlsm (125.59 Ko)

Bonjour Etienne, fred Simons,

Je suppose que ta demande est réalisable en VBA, à l’aide d’un UserForm.

Malheureusement, mes connaissances en VBA sont faibles.

Cependant, je vais essayer de réaliser un code, mais je ne suis pas rapide.

J’espère qu’un pro de ce forum te viendra en aide, car pour réaliser ton projet, je ferai appel à leurs connaissances (elles sont incroyables et inépuisables).

Cordialement

Bernard

Merci à tous,

Je savais que ce n'atéait pas évident.

Je vais faire avec vos infos.

A+

Etienne

Bonsoir,

3 solutions bâtardes

Voir les 3 feuilles

https://www.excel-pratique.com/~files/doc2/Menu_deroulant_C1.xls

Pas trouvé mieux !

Claude.

Ca ce n'est pas mal du tout !!!

Merci

Bonjour,

voici un tout début de solution (merci excel labo et en particulier au fichier de Jacques Boisgontier sur les macros evènementielles) qui fonctionne pour afficher le résultat dans la même cellule que celle où tu choisi le pourcentage.

il faut coller ce code dans la feuille1 du projet vba de ton fichier en exemple.

restrictions actuelles : tu peux ne faire l'opération qu'une fois (plus de liste déroulante accessible par la suite, je ne sais pas recréer une telle liste, si tu m'indique comment faire, il est probable que je puisse rectifier ce point)

Il y aura un bug (la macro va reboucler) si le résultat du calcul est égal à une des valeurs de la liste déroulante (0; 0.25; 0.5; 0.75; 1)

a+

le code :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Value = 0 Then

ligne = Target.Row - 7

Range("c7").Offset(ligne, 0).Select

Application.CutCopyMode = False

Selection.Copy

Target.Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _

SkipBlanks:=False, Transpose:=False

End If

If Target.Value = 0.25 Then

ligne = Target.Row - 7

Range("c7").Offset(ligne, 0).Select

Application.CutCopyMode = False

Selection.Copy

Target.Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _

SkipBlanks:=False, Transpose:=False

End If

If Target.Value = 0.5 Then

ligne = Target.Row - 7

Range("c7").Offset(ligne, 0).Select

Application.CutCopyMode = False

Selection.Copy

Target.Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _

SkipBlanks:=False, Transpose:=False

End If

If Target.Value = 0.75 Then

ligne = Target.Row - 7

Range("c7").Offset(ligne, 0).Select

Application.CutCopyMode = False

Selection.Copy

Target.Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _

SkipBlanks:=False, Transpose:=False

End If

If Target.Value = 1 Then

ligne = Target.Row - 7

Range("c7").Offset(ligne, 0).Select

Application.CutCopyMode = False

Selection.Copy

Target.Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _

SkipBlanks:=False, Transpose:=False

End If

End Sub

Rechercher des sujets similaires à "menu deroulant"