Liste déroulante selon critère

Bonjour

Dans la cellule I2, je souhaite intégrer une liste de choix conditionnelle
Je m'explique :
Lorsqu'en cellule H1, j'ai par exemple XXXX, j'aurais dans ma liste de choix toutes les sociétés de la colonne 1 correspondant à XXXX se trouvant dans la colonne F

Je sais faire les validations de données mais ca, je sèche

Quelqu'un aurait il une idée ?

Merci

7classeur1.xlsx (11.69 Ko)

Salut Fmailys,

avec VBA...
J'ai interprété ta demande : j'attends une RG en [I2] plutôt qu'en [H1]...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim sMsg$
'
[I3].Validation.Delete
If Not Intersect(Target, Range("I3")) Is Nothing Then
    If [I2] <> "" Then
        For x = 2 To Range("F" & Rows.Count).End(xlUp).Row
            If Range("F" & x).Value = [I2] Then _
                sMsg = sMsg & IIf(sMsg = "", Range("A" & x).Value, "," & Range("A" & x).Value)
        Next
        If sMsg <> "" Then _
            [I3].Validation.Add Type:=xlValidateList, Formula1:=sMsg
    End If
End If
'
End Sub
8fmailys.xlsm (16.54 Ko)


A+

Ce fichier était un fichier provisoire

Dans mon fichier définitif, le renseignement concernant le RG et la liste déroulante se trouve sur la feuille salariés

Les données qui se trouvaient de la colonne A à F que je vous ai joint se trouveront en réalité sur la feuille Paramètres colonne D à J

Il te reste donc à faire les modif' et à transférer les macros...
Ne me dis pas que c'est si compliqué !

Si c'est mission impossible pour toi, je regarderai ça ce soir...


A+

Non je sais faire

Dois je mettre un activesheet avant pour sélectionner la feuille paramètres ?

Je pensais mettre quelquechose à ce niveau du code après to

    If [D4] <> "" Then
        For X = 2 To Range("J" & Rows.Count).End(xlUp).Row

mais je ne suis pas certain que mon sheets fonctionne

Salut FMailys,

ainsi, comme j'ai compris..

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim sMsg$
'
[D5].Validation.Delete
If Not Intersect(Target, Range("D5")) Is Nothing Then
    If [D4] <> "" Then
        With Worksheets("Paramètres")
            For x = 2 To .Range("I" & Rows.Count).End(xlUp).Row
                If .Range("I" & x).Value = [D4] Then _
                    sMsg = sMsg & IIf(sMsg = "", .Range("D" & x).Value, "," & .Range("D" & x).Value)
            Next
            If sMsg <> "" Then _
                [D5].Validation.Add Type:=xlValidateList, Formula1:=sMsg
        End With
    End If
End If
'
End Sub
3fmailys.xlsm (25.05 Ko)


Joyeuses Fêtes !

A+

Bonjour,

Une proposition sans VBA, pour Excel 365.

On utilise les fonctions Trier et Unique (nouvelles fonctions).

Cdlt.

7classeur1-5.xlsx (24.60 Ko)

bonjour

une contribution rustique avec RAZ du choix 1

cordialement

12fmailys.xlsm (25.03 Ko)
Rechercher des sujets similaires à "liste deroulante critere"