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

XL 2019 Validation de Données sur plusieurs colonnes

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 !

Caninge

XLDnaute Accro
Bonjour à tous,

Je n'arrive pas à trouver la solution.
Je viens donc vous demander naturellement la réponse.
Dans mon vrai tableau j'ai plusieurs colonnes de produits : Colonne B : AQ. Les colonnes ne sont pas identiques en nombre de lignes.
Dans mon exemple seulement 3.
Le but est de réunir ces 3 colonnes dans une seul colonne et dans l'ordre alphabétique.
Ensuite nommer la plage pour l'utiliser avec Validation de Données.
Mais voilà je coince. Pouvez-vous m'aider ?
Merci
CANINGE
 

Pièces jointes

Bonjour,
De mon coté je vois 4 colonnes ...
Par formule ce serait possible mais très long.
Par VBA, mais avant de vous proposer quelque chose qui vous convient, êtes-vous d'accord sur le principe d'utiliser VBA ?
Si oui où allez vous placez la liste de validation ? en H1 ? ou ailleurs

Cordialement

Edit : avec VBA
- Deplacez la liste de validation en H1
- Allez dans la formule ListeProduits
- Mettez cette formule --> =DECALER(Feuil1!$F$3;;;NBVAL(Feuil1!$F:$F))
- Allez ensuite dans l'éditeur VBA
- Insérer un module et collez le code ci-dessous
- Pour l'exécuter, cliquez sur Test puis appuyez sur la touche F5 (ou FN + F5)
Code:
Sub test()
Dim i As Byte
Dim tablo()
Dim dlg As Byte

For i = 2 To 5
    tablo = Range(Cells(3, i), Cells(Cells(Rows.Count, i).End(xlUp).Row, i)).Value
    dlg = Cells(Rows.Count, 6).End(xlUp).Row + 1
    If dlg < 3 Then dlg = 3
    Cells(dlg, 6).Resize(UBound(tablo)) = tablo
Next i
End Sub
 

Pièces jointes

Dernière édition:
Bonsoir @Caninge🙂, @Dan🙂, @Eric KERGRESSE😉, @Cousinhub🙂,

Autre solution VBA : Cliquer sur le bouton Hop!

J'ai aussi changé la définition de ListeProduits :
=DECALER(Feuil1!$F$3:$F$9999;0;0;NBVAL(Feuil1!$F$3:$F$9999);1)

Le code est dans le module de Feuil1.
VB:
Sub ListeValidation()
Dim j&
   Range("f3:f" & Rows.Count).Clear
   Range(Cells(3, "b"), Cells(Rows.Count, "b").End(xlUp)).Copy Cells(3, "f")
   For j = [c1].Column To [e1].Column
      Range(Cells(3, j), Cells(Rows.Count, j).End(xlUp)).Copy Cells(Rows.Count, "f").End(xlUp).Offset(1)
   Next j
   Range(Cells(3, j), Cells(Rows.Count, j).End(xlUp)).Sort key1:=[f3], order1:=xlAscending, MatchCase:=False, Header:=xlNo
   With Range(Cells(3, j), Cells(Rows.Count, j).End(xlUp))
      .ClearFormats: .Borders.LineStyle = xlContinuous: .Interior.Color = RGB(230, 250, 230)
   End With
End Sub
 

Pièces jointes

Dernière édition:
Bonjour,

j'ai essayé de mettre vos solutions avec de plus ou moins de succès. Pas facile.
Mais comme mon fichier est déjà gros et qu'il peine à s'ouvrir le fait de rajouter des formules cela a empiré les choses. Sur une des pages il y a 7140 lignes.
Ce fichier regroupe toutes mes dépenses alimentaires depuis juin 2016. Quand on sait le budget qu'il faut pour manger il n'est pas étonnant que le fichier soit énorme. Il y a peut-être une autre façon de faire autrement, je ne sais pas.
CANINGE
 
Bonjour à tous, bonjour Dan.
J'ai réussi à réduire le fichier et il pourra être joint.
Les plages à réunir sont sur la feuille PRODUIT et la plage se nomme également PRODUITS.
La validation de données se trouve dans la cellule E3 de la plage OBSERVATION.
En fait il ne faut peut-être pas changer ou modifier la validation de données.
Il faut simplement si j'ose dire rassembler toutes les colonnes de la plage PRODUITS dans l'ordre alphabétique.
Bon courage er merci.
 

Pièces jointes

Bonjour,
Un début suite à la livraison de ton fichier d'essai. Proposition de la constitution d'un référentiel des produits par catégories.
Pour cela il faut transformer ton tableau


en tableaux structuré comme le monte l'image écran.
Puis Pwq arrive à ton secours en dépivotant les colonnes en lignes pour arriver à ceci



et ainsi le gros avantage tu peux faire ensuite des listes, sous-listes, requêtes etc. par catégories etc etc faire des filtres, bref tu as des listes de validation à tiroir 🙂

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="TB_REFERENCES_PRODUITS"]}[Content],
    UNPIVOT = Table.UnpivotOtherColumns(Source, {}, "Attribut", "Valeur"),
    REN_COLONNES = Table.RenameColumns(UNPIVOT,{{"Valeur", "PRODUIT"}, {"Attribut", "CATEGORIE"}}),
    REORG_COLONNES = Table.ReorderColumns(REN_COLONNES,{"PRODUIT", "CATEGORIE"}),
    TRI_PAR_PRODUIT = Table.Sort(REORG_COLONNES,{{"PRODUIT", Order.Ascending}})
in
    TRI_PAR_PRODUIT



Juste une suggestion : quand cela est possible utiliser les tableaux structurés sans modération 🙂 bien souvent c'est source de solutions 🙂
 

Pièces jointes

Dernière édition:
- 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
3
Affichages
224
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…