Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Faire apparaître une liste de valeur si les conditions sont remplis

C.G

XLDnaute Nouveau
Bonjour à tous,
Je me perds dans les formules alors que je penses que la solution doit être plutôt simple... Pourriez vous m'aider ?

Contexte
Colonne A : une liste de mot (un peu plus de 50, possible que d'autres s'ajoutent)
Colonne B : un chiffre, 1, 2 ou 3, qui donne une info sur le mot de la colonne A correspondant
Colonne C : un chiffre (5 possibilités uniquement), qui donne aussi une info sur le mot de la colonne A correspondant

Ambition
Je voudrais que, dans une cellule choisie, apparaissent la liste de tous les mots ayant les mêmes infos. Par exemple, tous les mots ayant 1 en colonne B et 5 en colonne C.
Donc quelque chose comme Si B=1 et C=5, alors faire apparaitre la liste des mots en A correspondant, et donc apparaîtrait dans la cellule mot1, mot2, mot3...
Est ce possible ?

Merci beaucoup pour votre aide!
 
Solution
Bonjour C.G. et bienvenu sur XLD,
Un petit fichier test eût été le bienvenu, cela aurait éviter de se le retaper.
En PJ un essai avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("G2:H2")) Is Nothing Then
        Dim DL%, Liste, B, C, i%, L%
        Application.ScreenUpdating = False
        [J:J].ClearContents
        DL = Range("A65500").End(xlUp).Row
        Liste = Range("A1:C" & DL)
        B = [G2]: C = [H2]: L = 1
        For i = 1 To UBound(Liste)
            If Liste(i, 2) = B And Liste(i, 3) = C Then
                Cells(L, "J") = Liste(i, 1)
                L = L + 1
            End If
        Next i
    End If
End Sub
Il suffit de modifier les...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour C.G. et bienvenu sur XLD,
Un petit fichier test eût été le bienvenu, cela aurait éviter de se le retaper.
En PJ un essai avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("G2:H2")) Is Nothing Then
        Dim DL%, Liste, B, C, i%, L%
        Application.ScreenUpdating = False
        [J:J].ClearContents
        DL = Range("A65500").End(xlUp).Row
        Liste = Range("A1:C" & DL)
        B = [G2]: C = [H2]: L = 1
        For i = 1 To UBound(Liste)
            If Liste(i, 2) = B And Liste(i, 3) = C Then
                Cells(L, "J") = Liste(i, 1)
                L = L + 1
            End If
        Next i
    End If
End Sub
Il suffit de modifier les cellules en jaune du filtre pour avoir la liste mise à jour.
 

Pièces jointes

  • CG.xlsm
    15.6 KB · Affichages: 10

Discussions similaires

Réponses
7
Affichages
285
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…