liste de validation sans doublon et cascade.

Jouxte

XLDnaute Occasionnel
Bonjour à toutes et tous,
Il y a déjà beaucoup de posts sur ce sujet, mais aucun ne correspond vraiment à ce que je cherche.
L'onglet "Tarif" comprend plus de 3 000 lignes, plus de 1 300 produits différents et 100 conditionnements différents.
J'aurais souhaité dans l'onglet "Adh" créer une liste déroulante des 1 300 produits (B10:B58) sans doublons et si possible par ordre alphabétique, en déterminer en colonne E les conditionnements possibles pour le produit sélectionné colonne B, de sorte à pouvoir en déterminer la référence en colonne D.
Merci par avance pour votre aide si possible sans macro.
Ci-joint fichier.
 

Pièces jointes

  • test liste cascade.xlsx
    11.5 KB · Affichages: 39

piga25

XLDnaute Barbatruc
Bonjour,
Une piste
Onglet donnée, filtre avancé et cocher extraction sans doublon
upload_2018-7-6_11-48-35.png
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

ComboBox intuitif - type Google -(frapper les premières lettres du produit)
Il est possible d'ajouter le tri alpha

jb
 

Pièces jointes

  • Copie de test liste cascade.xls
    67 KB · Affichages: 52
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour jouxte, piga25, JB,

Il est possible d'obtenir une solution entièrement par formules mais c'est compliqué et fastidieux.

Par VBA c'est relativement simple, voyez le fichier joint.

Les macros sont dans les 2 premières feuilles (clic doit sur l'onglet et Visualiser le code).

Le tableau de la 1ère feuille est organisé en tableau Excel ce qui permet la duplication des formules en colonnes A et D.

A+
 

Pièces jointes

  • test liste cascade(1).xlsm
    32.5 KB · Affichages: 34

Jouxte

XLDnaute Occasionnel
Re,
J'ai choisi d'utiliser la proposition de jb.
Dans mon tableau définitif, je colle les codes sur la feuille choisie en modifiant :b10:b20 en
If Not Intersect([b10:b58], Target) Is Nothing And Target.Count = 1 Then
J'ai créé des noms de plage identiques à ceux créés par jb. J'ai l'impression qu'ils ne sont pas utiles.

Lorsque je clique pour entrer un produit l’éditeur m'annonce une erreur de compilation
type défini par l'utilisateur non défini
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean

Par ailleurs, j'ai des noms de produits très long. Est-il possible de modifier la largeur accordée au nom de produit ?

Merci par avance pour votre aide.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

Version intuitif multi-mots (on peut frapper plusieurs mots du produit pour retrouver le produit + rapidement parmi les 3.000 produits)

>Lorsque je clique pour entrer un produit l’éditeur m'annonce une erreur de compilation
type défini par l'utilisateur non défini
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean


Supprimer ce :

Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean

>Par ailleurs, j'ai des noms de produits très long. Est-il possible de modifier la largeur accordée au nom de produit ?

Il faut :
-cliquer sur l'onglet Développeur
-cliquer sur l'équerre
-cliquer sur le combobox1
-faire apparaitre les propriétés
-modifier columnwidth: 180;30

liste triée:
http://boisgontierjacques.free.fr/fichiers/DonneesValidation/IntuitifTableur2col.xls
Formulaire:

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DevisFormMultiMotsIntuitif.xls

jb
 

Pièces jointes

  • Copie de test liste cascadeFormMultiMots.xls
    206.5 KB · Affichages: 48
  • IntuitifMots.gif
    IntuitifMots.gif
    22.3 KB · Affichages: 27
Dernière édition:

job75

XLDnaute Barbatruc
Re,

On peut faire une recherche intuitive du produit avec la liste de validation :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'---recherche intuitive---
If Intersect(Target(1), Range("B10:B" & Rows.Count)) Is Nothing Then Exit Sub
If Target.Count = 1 Then Target.Select
Target(1, 4) = "" 'RAZ
If IsError([Produit]) Then Target(1) = ""
If IsEmpty(Target(1)) Then Exit Sub
If Application.CountIf([Produit], Target(1)) Then Exit Sub
Dim x As Variant
x = Application.VLookup("*" & Target(1) & "*", [Produit], 1, 0)
Target(1) = IIf(IsError(x), "", x)
End Sub
C'est bien sûr moins complet qu'avec une ComboBox.

Fichier (2).

A+
 

Pièces jointes

  • test liste cascade(2).xlsm
    36.5 KB · Affichages: 43

bcharef

XLDnaute Accro
Bonjour jouxte, piga25, JB, & Job75,
Bonjour à toutes et à tous.

Voici un essai avec deux (02) Tableaux Croisés Dynamiques avec une macro, qui permet d'actualiser uniquement les tableaux croisés dynamiques.

Salutations distinguées.
 

Pièces jointes

  • TcdListeCascade.xlsm
    25.6 KB · Affichages: 26
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour bcharef,

Ta solution avec les 2 TCD de la feuille "Listes" est en effet très simple.

Pour la mise à jour des TCD il vaut mieux mettre cette macro dans le code de la feuille "Tarif" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.RefreshAll
End Sub
La feuille "Listes" sera masquée.

A+
 

bcharef

XLDnaute Accro
Re bonjour jouxte, piga25, JB, & Job75,
Re bonjour à toutes et à tous.

@ notre ami Job75 : Bien vu et bonne observation.

En prenant acte de la recommandation formulée par notre ami, voici l'application.

Salutations.
 

Pièces jointes

  • TcdListeCascadeV01.xlsm
    28.3 KB · Affichages: 19

Jouxte

XLDnaute Occasionnel
Bonjour bcharef, piga25, jb, & Job75 et le forum,
Merci pour vos propositions qui conviennent toutes parfaitement.
Je suis parti avec la solution de jb que je viens d'installer sur le fichier réel.
J'ai commis une petite erreur dans les données à coller dans Adh.
Le userbox est parfait (produit et conditionnement) mais les données à coller sont produit (en colonne B), la Ref (en colonne D) et le volume de la colonne D du tarif (en colonne E ) au lieu du Cond.
Merci par avance.
 

Discussions similaires

Réponses
9
Affichages
153

Statistiques des forums

Discussions
312 145
Messages
2 085 762
Membres
102 966
dernier inscrit
InitialPP