XL 2010 Apparition d'une liste déroulante uniquement selon la valeur d'une autre cellule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

rosabelle

XLDnaute Junior
Bonjour,

Je fais appel à vous une fois encore.

Est-il possible de faire en sorte qu'une liste déroulante ne s'affiche dans une cellule de la colonne B que si dans une autre cellule adjacente dans la colonne A la date 01/01/1976 se présente?
Je précise que cette date 01/01/1976 est le résultat d'une formule et ne se présente pas toujours dans la même cellule de la colonne A.

Je joins un fichier qui sera je l'espère plus parlant.

Merci par avance pour votre aide
 

Pièces jointes

Solution
En VBA c'est très simple, le code de la feuille :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[B:B].Validation.Delete 'RAZ
If ActiveCell.Column = 2 Then If ActiveCell(1, 0) = CDate("1/1/1976") Then _
    ActiveCell.Validation.Add xlValidateList, Formula1:="10,2,12,56,14,47"
End Sub
Bonne nuit.
re rosabelle, bonsoir le forum
je ne sais pas faire mais votre problématique m'a amusé.
je me suis servi de l'enregistreur de macro et voila ce que cela a donné.
pour poser la liste déroulante (bien sûr il faut adapter le contenu de votre liste)
VB:
Sub Macro2()
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="10,1,2,3,4,5,6"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
pour enlever la liste déroulante
Code:
Sub Macro3()

    With Selection.Validation
        .Delete
        .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
        :=xlBetween
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
End Sub
donc avec cela, ma solution,( avec en cellule D1 la date du 01/01/1976)
Code:
Sub Macro1()
Dim dl As Integer, i As Integer
fin = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To fin
If Cells(i, 1) = Range("d1") Then Cells(i, 2).Select: Macro2
If Cells(i, 1) <> Range("d1") Then Cells(i, 2).Select: Macro3
Next
End Sub

un début de solution en attendant qu'un ténor d'xld vous apporte une solution plus propre
cdt
galougalou
 
Bonsoir @rosabelle

Une astuce : créer 2 noms définis
  • Un pour la plage des Taux (par exemple Plage_Tx)
  • Un qui change en fonction de la valeur en A sur la même ligne (par exemple _Check)​
Si tu es en B2 la définition est =SI($A2=date(1976;1;1);3;0)
attention adresse mixte $A absolu 2 relatif
Renvoie 3 si la date en A est 01/01/1976 et sinon 0.​
Sélectionne tes cellules concernées et dans validation choisis Liste puis dans la barre de saisie tape :​
=DECALER(Plage_Tx;0;0;_Check;1)
Tu vas recevoir un avertissement d'erreur, normal la formule ne renvoie pas toujours une plage, clique sur Oui.​
Voilà c'est gagné​
Petit bémol la flèche de la combobox s'affiche même si la liste est vide, on ne peut pas tout avoir surtout sans macro.​
Je te joins un fichier avec explications.​
Bon courage​
Alain​
 

Pièces jointes

Bonsoir,
D'hors et déjà merci beaucoup pour la promptitude de vos réponses.
Je les regarderai demain matin avec la plus grande attention.
Bien sûr pour quelqu'un comme moi c'est plus facile (enfin c'est vite dit) de comprendre les formules d'autant plus que cette situation de choix multiple pour certaines années peut se reproduire.
Dommage que la flèche apparaisse dans toutes les cellules....
A demain
Bonne soirée à vous
 
En VBA c'est très simple, le code de la feuille :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[B:B].Validation.Delete 'RAZ
If ActiveCell.Column = 2 Then If ActiveCell(1, 0) = CDate("1/1/1976") Then _
    ActiveCell.Validation.Add xlValidateList, Formula1:="10,2,12,56,14,47"
End Sub
Bonne nuit.
 

Pièces jointes

Bonjour à tous,

Après avoir regardé vos différentes propositions je pense que celle de Job75 est la plus adaptée à mon fichier même si au départ je préférais une formule. La présence de la flèche me gêne et par ailleurs la formule complique les choses pour moi car il aurait fallu l'ajouter aux formules déjà présentes.
Je ne sais combien vous remercier tous une fois encore.
Bon weekend
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
212
Retour