XL 2016 Liste déroulante seulement si... (Probablement VBA)

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 !

Etoto

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Cela fait un petit moment que je ne suis plus trop actif, malheureusement, mon stage est preneur et les habitudes ont la vie dure. 🙂

J'aurais besoin de savoir comment faire pour que si en D3 c'est écrit "Avance" ou "Retour d'avance", Excel me crée une liste déroulante sur la cellule à droite de celle concernée, cette liste aura comme référence la liste de nom de la feuille 2 en colonne A. Possible ou pas, je ne saurais pas le faire. Pour ce qui est des autres formules que j'ai faite, n'en prenez pas compte sauf si vous voulez les améliorer 🤣 .

En cas de questions, je suis là et le fichier est joint avec bien sûr, des données inventées.

Merci d'avance pour votre aide.
 

Pièces jointes

Dernière édition:
Bonjour Etoto,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    If Not Intersect(Target, Columns(4)) Is Nothing Then
        On Error GoTo Fin:
         Application.EnableEvents = False
         Application.ScreenUpdating = False
         If Target = "Avance" Or Target = "Retour d'avance" Then
            Cells(Target.Row, "E").Select
            With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Liste"
            End With
        End If
    End If
Fin:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
 

Pièces jointes

Bonjour Etoto,
Un essai en PJ avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    If Not Intersect(Target, Columns(4)) Is Nothing Then
        On Error GoTo Fin:
         Application.EnableEvents = False
         Application.ScreenUpdating = False
         If Target = "Avance" Or Target = "Retour d'avance" Then
            Cells(Target.Row, "E").Select
            With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Liste"
            End With
        End If
    End If
Fin:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Franchement, c'est déjà de l'excellent travail. Malheureusement, quand je place un autre texte, la liste déroulante reste.

Bon, j'avoue, c'est de ma faute, j'aurais du dire dés le départ que la liste devra être supprimée si les conditions ne sont pas remplies.

Désolé d'avoir omis de te transmettre une information. Mais c'est vraiment super.
 
Re,

Entièrement d'accord. 😂
Il suffit de rajouter ça :
VB:
Else
  Cells(Target.Row, "E").Validation.Delete
End If
Parfait ! J'ai installé le code sur le fichier principal qui contient seulement deux onglets de plus, et le code ne fonctionne pas, pourtant les noms sont tous les mêmes, tu peux me dire le problème ?

Les données sont toujours fausses.
 

Pièces jointes

- 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
8
Affichages
8 K
Compte Supprimé 979
C
Réponses
3
Affichages
5 K
Compte Supprimé 979
C
Retour