Création listes dépendantes sans doublon à partir d'un tableau de données

Bonjour à tous,

Nouveau sur le forum, je viens demander de l'aide pour un problème dont je n'arrive pas à trouver la solution.

Je dois réaliser un excel avec des listes déroulantes dépendantes. Le principe est qu'en faisant une série de 6 choix dépendants (Catégorie de corrosivité, durée de vie, type de subjectile, prétraitement, préparation de surface et type de primaire), un système de peinture (épaisseur du primaire, épaisseur de la couche intermédiaire, épaisseur de la couche de finition) s'affiche.

J'ai donc réalisé deux feuilles dans le fichier joint. La première sur laquelle je dois réaliser les 6 choix consécutifs en partant de la catégorie de corrosivité jusqu'au type de primaire, et le système de peinture doit s'afficher. Sur la seconde feuille, se trouve un gros tableau de toutes les données d'entrée. Il y a énormément de doublons, d'où provient majoritairement mon problème. J'ai donc créé un second tableau sur cette feuille pour extraire les données sans doublon. Cependant, je n'arrive pas à générer les listes dépendantes sur la première feuille à partir d'un des deux tableaux.

J'ai actuellement besoin d'aide pour la création des listes dépendantes. Je pense pouvoir m'en sortir avec l'affichage du système de peinture. Je précise que je n'ai pas la dernière version excel (d'où l'impossibilité d'utiliser des fonctions comme UNIQUE), je possède la version de 2016. Je suis ouvert à tout type de solution, même si je ne m'y connais absolument pas en VBA (et pour être honnête, je débute dans les fonctionnalités plus avancées d'Excel).

J'espère avoir été suffisamment précis !

Merci à vous et bonne journée !

20classeur-1.xlsx (22.94 Ko)

Bonsoir,

quand vous dites doublons, vous voulez dire des lignes dont toutes les colonnes (entre A et K) contiennent les mêmes données ? Si oui, il faut juste les reproduire à droite sans lignes en double ?

Bonjour

Oublie les mauvaises pratiques :

  • fusion de cellules inutiles
  • remplissage en blanc des cellules (cela bouffe une tonne de mémoire et un simple non affichage du quadrillage fait la même chose sans alourdir)

J'ai

  • conservé uniquement ton tableau complet trié hiérarchiquement (en cas d'ajout ou modif, il faut relancer ce tri)
  • ajouté 5 tableaux extraits par PowerQuery (en vert) permettant d’alimenter les 5 premières listes déroulantes
    (en cas d'ajout ou modif, il faut actualiser Données, Actualiser Tout)
  • créé les formules nommées (nom commençant par L_) pour obtenir les listes en fonction du ou des choix effectués
  • créé un requête PowerQuery nommée Résultat croisant les choix effectués avec Références pour filtrer
    Une fois les 6 choix effectués, clic droit sur le tableau Résultat, Actualiser
14peinture-pq.xlsx (48.71 Ko)

Bonjour,

Doux Rêveur, lorsque je parlais de "doublons", je parlais des cellules répétées dans le tableau de données de la feuille "Références" (exemple, C2 répété plusieurs fois etc..)

78Chris, merci beaucoup, c'est exactement le résultat attendu ! Est-ce que je pourrais vous demander une explication sur comment vous avez effectué les listes déroulantes ? Ou sinon un guide de PowerQuery ? J'aimerais comprendre comment le refaire seul pour potentiellement réutiliser la méthode dans des futurs excel.

Pour aller plus loin, existe-t-il une méthode (formule ou par PowerQuery) pour réinitialiser automatiquement les listes déroulantes ? Par exemple, si lors d'un premier choix, je sélectionne : C2 - Haute - Acier - Mécanique - Sa2 1/2 - Primaire poudre, puis je change la troisième liste (Type de subjectile, acier pour métallisation par exemple), les 2 listes précédents le nouveau choix de subjectile (Classe de corrosivité et Durabilité) reste sélectionnées mais les 3 listes suivants ce nouveau choix (Prétraitement, préparation de surface et type de primaire) se vident automatiquement ?

Bien cordialement,

RE

Tu peux visualiser les requêtes simples dans PowerQuery (ce ne sont que des tris, suppression de colonnes et dédoublonnages) en utilisant Alt F12

Seule Résultat est un peu plus élaborée mais reste basique.

Les étapes d'une requête sélectionnée sont affichées à droite et le détail d'une étape dans la barre de formule et en cliquant sur le petit rouage de la ligne d'étape.

Les listes déroulantes sont faites par formules nommées : voir la gestionnaire de noms.

Pour effacer il faut du VBA

J'ai nommé respectivement tes cellules on sont les listes A_, B_, C_, D_ et E_

Donc en VBA en jouant sur le code du caractère on peut facilement effacer ce qui est supérieur à la cellule modifiée.

Si tu ne sais pas faire demande...

Re-bonjour,

Merci pour les différentes explications. J'ai recréé un nouveau tableur excel et je suis reparti de 0, j'ai réussi à configurer les listes déroulantes pour qu'elles soient dépendantes les unes des autres. Par contre, j'aimerais bien une petite explication sur comment vous avez créer les tableaux "Choix" et "Résultat" dans powerQuery si possible.

Pour le code VBA, j'ai réussi à trouver sur internet une solution (avec C19, C22 etc.. les cellules de mes listes déroulantes) :

Private Sub Worksheet_Change(ByVal Target As Range)

If (Target.Address = "$C$16") Then

Range("C19").Value = ""
Range("C22").Value = ""
Range("C25").Value = ""
Range("C28").Value = ""

ElseIf (Target.Address = "$C$19") Then

Range("C22").Value = ""
Range("C25").Value = ""
Range("C28").Value = ""

ElseIf (Target.Address = "$C$22") Then

Range("C25").Value = ""
Range("C28").Value = ""

ElseIf (Target.Address = "$C$25") Then

Range("C28").Value = ""

ElseIf (Target.Address = "$C$28") Then

End If

End Sub

Cette solution marche parfaitement, merci pour m'avoir conseillé d'utiliser VBA !

Bonne journée

RE

Choix : si tu regardes les étapes à droite, on :

  • à partir d'un requête vide en tapant dans la barre de formule de PowerQuery
    = Excel.CurrentWorkbook()
    on récupère tout les noms du gestionnaire de nom (donc tous les contenus nommés sont exploitables)
  • filtre pour ne conserver que les noms commençant par _
  • développe les valeurs
  • inverse les colonnes
  • transpose la tableau
  • convertit la 1ère ligne en en-tête
  • type les données

Résultat : on

  • fait référence à Références
  • fusionne la requête en jointure Interne avec Choix en faisant correspondre les 6 colonnes (la fusion interne ne prend que les lignes qui correspondent)
    A noter que j'avais oublié de nommer F_ : j'ai créé le nom et adapté cette requête image
  • supprime la colonne Choix qui n'a servi qu'au filtre de la jointure

Pour VBA ceci est plus court et si le changement fait sur la dernière cellule de sélecteur (F_) n'est pas un effacement, cela actualise la requête et le tableau Résultat:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fin
    If Right(Target.Name.Name, 1) <> "_" Then Exit Sub
    X = Asc(Left(Target.Name.Name, 1))
    If X = 70 And Target.Value <> "" Then
        Range("Résultat").ListObject.QueryTable.Refresh
    Else
        Application.EnableEvents = False
        For i = X + 1 To 70
            Range(Chr(i) & "_").ClearContents
        Next
    End If
Fin:
    Application.EnableEvents = True
End Sub

J'ai aussi vu une erreur dans la formule nommée L_Subjectile que j'ai corrigée

Je te joins le classeur corrigé

10peinture-pq.xlsm (52.75 Ko)

Bonjour 78Chris,

Merci beaucoup pour ton aide et tes explications, j'ai pu recréer le même fichier en partant d'un Excel vierge et comprendre les différentes étapes. Le résultat est exactement ce que je cherchais à obtenir !

A bientôt !

Merci du retour

Rechercher des sujets similaires à "creation listes dependantes doublon partir tableau donnees"