Liste déroulante avec si

Bonsoir à tous,

Je me permets de vous contacter car je suis face à un problème que je n’arrive pas à résoudre.

J’avoue que je ne connais rien en VBA.

Pour résumer, je voudrais qu’une liste déroulante s’affiche uniquement si une condition est vraie, sinon rien ne doit être effectué.

Merci par avance pour votre aide,

Bien à vous,

Matthieu

Cdt

Il existe beaucoup d'exemples sur Excel-Pratique, en voila un assez basique, on peut facilement l'adapter

Cdt Toukoul

Merci bcp de prendre du temps pour me répondre.

J’ai ouvert votre fichier mais ce n’est pas exactement ce que je recherche et je ne sais si ça existe sans VBA.

En gros j’ai une liste déroulante qui affiche HS ou HC en F4.

Si HS est sélectionné, alors que je souhaite que rien ne s’affiche dans la cellule à côté (en G4).

Si HC est sélectionné, je souhaite qu’une liste déroulante apparaisse en G4 avec deux choix possible :

Limite légale

Limite CC

Je ne sais pas si je suis assez précis,

Bien à cous,

Matthieu

Peut-être cela!

C'est de la gestion d’événement, lorsque, sur la feuille FEuil1, vous validez en f4 l’événement est intercepté puis vous en faites ce que vous voulez

Bonne nuit, Toukoul

Bonsoir,

Merci pour message et votre fichier.

C’est exactement ce que je veux.

Cependant, le fichier que vous m’avez envoyé a un petit soucis.

En effet, tout se passe bien quand je choisis HC dans la liste déroulante.

En G4, j’ai bien les deux limites qui s’affichent.

Par contre dès que je retourne en F4 et que je re sélectionne HS, le script s’arrête avec une erreur Range.Select.

Pouvez-vous m’aider à remédier à ce problème svp?

Merci par avance,

Bien cordialement,

Matthieu

Une petite retouche, dites moi après de rudes essais si ça tient!

merci

Bonsoir,

Merci infiniment de consacrer du temps à m’aider.

Oui ça tient mais la liste déroulante 2, limite légale ou limite CC est toujours affichée quelque soit mon choix, HS ou HC.

Merci bcp pour votre aide,

Matthieu

Je crois que je fatigue je pars au lit

Encore milles excuses

je vous lirais demain

bonne nuit

Cher expert,

C’est parfait, merci infiniment.

Auriez-vous un conseil à me donner pour attaquer le VBA svp ? Car me semble super complexe.

Passez un bon week-end,

Bien à vous,

Matthieu

Bonjour

La nuit fur porteuse, j'ai pensé à ce que vous m'avez fais faire :

Ce n'est pas encore parfait, les noms anglais sont supprimés, vous avez la solution de les mettre après la liste des noms en français, mais vous aurez un nombre pour le nom en français et un nombre pour le nom en anglais.

Deuxième solution :

cela se passe sur la feuille des noms de pays :

la première colonne (A) sera réservée au nombre de nom pour chaque pays

la colonne 2 (B) sera réservée au noms en français, ceux qui seront mis à la place des noms dans une autre langue.

les colonnes suivantes seraient réservées aux noms dans toutes les langues de votre choix et aussi, dans l’orthographe la plus variée

Exemple d'une ligne de la base des noms :

6 , Pays-Bas , Pays Bas, Netherlands , Olanda , Hollande , Holland ( la virgule représente un changement de colonne)

6 est le nombre de noms que l'on donne au pays, c'est Excel qui rempli la case

Que pensez vous de cette amélioration, est-elle porteuse dans l’utilisation future de votre petit logiciel?

Le Visual Basic : Macro langage inclus dans Excel, je vous joins votre fichier avec une nouvelle feuille d'explication des premières bases à connaitre sur ce langage.

Bon Week-end

21tri-paysbeta05.xlsm (488.50 Ko)

Cher Expert,

Je vous remercie pour votre message et votre fichier pour commencer à me mettre dans le VBA.

J’ai effectué l’exercice en suivant vos instructions et je vous en remercie.

Cependant, j’ai une nouvelle requête à vous soumettre si vous avez le temps et l’envie bien évidemment.

Je suis reparti du code que vous m’avez envoyé hier concernant mes HS ou HC pour reproduire la même chose dans une autre cellule.

En F4, j’ai une liste déroulante, avec titre : heures dépassant du contrat ?

Une liste déroulante : oui non

Si non, Rien ne s’affiche, sinon Ma liste déroulante s’affiche avec HC et HS.

Ensuite c’est exactement comme ce que vous m’avez fait avec mes limites

J'ai copié collé votre code afin de l'adapter à cette nouvelle situation.

ça fonctionne pour la première étape, oui non, liste déroulante HS ou HC.

Mais qd je choisis HC, la seconde liste déroulante ne d'affiche plus.

J'ai l'impression que la "HC" ou "HS" n'est pas reconnu comme une valeur donc rien de ne déclenche.

Je vous mets votre (mon) code en copie pour plus de clarté.

Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$F$4" Then Exit Sub

Dim Code As String

Code = Feuil24.Range("F4").Value

If Code = "Non" Then

Range("G4").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _

:=xlBetween

.IgnoreBlank = True

.InCellDropdown = True

.ShowInput = True

.ShowError = True

End With

Range("G4").Select

Selection.ClearContents

End If

If Code = "Oui" Then

Range("G4").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:="=Types_Heures"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = "HS"

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

End If

If Target.Address <> "$G$4" Then Exit Sub

Code = Feuil24.Range("G4").Value

If Code = "HS" Then

Range("H4").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _

:=xlBetween

.IgnoreBlank = True

.InCellDropdown = True

.ShowInput = True

.ShowError = True

End With

Range("H4").Select

Selection.ClearContents

End If

If Code = "HC" Then

Range("H4").Select

With Selection.Validation

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:="=HC"

.IgnoreBlank = True

.InCellDropdown = True

.InputTitle = "Limite CC"

.ErrorTitle = ""

.InputMessage = ""

.ErrorMessage = ""

.ShowInput = True

.ShowError = True

End With

End If

End Sub

Merci par avance,

Bien cordialement,

Matthieu

La procédure que j'ai fait est didiée à F4, si vous devez intercepter une deuxième validation de cellule vous faites cela :

If Target.Address = "$F$4" Then (signe =)

ici tout ce qui interresse F4

End if

If Target.Adress <> "$A$1" then exit sub

Ici se qui interresse A1 ( A1 est un exemple c'est à vous de mettre l'adresse de cette deuxième cellule que vous "surveillez")

Continuez vous avancez drôlement vite

Bravo

Bonsoir,

Je vous remercie pour votre message, c'est vraiment très gentil.

Concernant la variable "Code", je garde la même ou j'en crée une nouvelle svp.

Je vais essayer et je reviendrai vers vous.

Bien cordialement,

Matthieu

Entraînez vous, créer une variable ne coûte rien

mettez lui un nom très significatif

C'est lorsqu'il y a trop de variables que c'est compliqué a gérer

On crée parfois des variables en commençant une procédure et à la fin on ne l'utilise pas, c'est sans incidence sur la marche du code

Pour les nom crée une règle très simple :

Mettre une majuscule ou plusieurs dans le nom ex: Dim MaLigne as Long

ensuite dans votre code écrivez la sans les majuscules

Visual basic, lorsque vous validez votre ligne mets les majuscules

Donc si elle est mal orthographiée elle reste en minuscule et vous prévient de cet état.

Toukoul

Bonsoir,

Je suis désolé de vous déranger à nouveau.

J'ai bien fait les manipulations que vous m'avez indiqué et ça fonctionne, j'ai bien mes listes déroulantes.

Mais il me reste un petit soucis.

Effectivement, je suis les étapes tout fonctionne.

Si je choisis oui ou non en F4 j'ai bien ma liste déroulante en G4 avec HS ou HC. Puis je choisis HC et en H4, j'ai bien mes deux limites qui apparaissent.

Mais quand je retourne en F4 pour modifier mon choix, c'est à dire que je passe de "oui" à "non", ma cellule G4 reste sur mes limites avec la liste déroulante apparente.

A ce niveau, je suis bloqué.

Merci par avance,

Bien cordialement,

Matthieu

Ps: je vous envoie votre fichier sur lequel j'ai travaillé avant de l'adapter au mien

J'ai essayé de rajouter un AND dans la dernière condition du code, celle que HC mais ça ne change rien.

Cordialement,

La réponse était déjà écrite, regardez votre code, je n'ai fais que recopier un bout de votre code pour le mettre plus Haut

A ce rythme vous allez devenir programmeur très rapidement(Honnêtement beaucoup de débutants n'en sont pas à ce rythme d’apprentissage)

Donc sachet que quand Excel intercepte l'appui sur une touche vous pouvez faire avec la procédure associée toutes les actions que vous voulez, sur la feuille ou est la cellule, mais aussi sur d'autres feuilles

Juste une petite remarque sur les remarques!

Oui, tout au long de votre code n'hésitez pas de mettre des remarques (phrases précédées de ') pour savoir ce que fait chaque partie du code et pouvoir le maintenir plus rapidement

Cdt Toukoul

Rechercher des sujets similaires à "liste deroulante"