XL 2019 Tri dans une même colonnes de valeurs contenues dans plusieurs colonnes

fabienb

XLDnaute Nouveau
Bonjour,

je souhaiterais pouvoir rassembler dans une même colonne des données contenues dans différentes colonnes afin d'ensuite pouvoir faire un tri.
Mon problème est qu'il n'y a pas toujours des données dans chaque colonne.
Je n'ai pas réussi à faire ce que je souhaitais en utilisant un tableau croisé dynamique, j'imagine qu'il doit exister une formule excel permettant de réaliser cela...
Le fichier joint est plus parlant pour comprendre ce que je souhaite arriver à faire: le tableau 1 est mon tableau tel que je le récupère quand je fais une extraction de données et le tableau 2 est ce que j'aimerais obtenir via l'utilisation d'une formule (et non pas manuellement comme j'ai fait là)
Merci d'avance pour l'aide qu'une personne sympa va pouvoir me fournir :)

Fabien
 

Pièces jointes

  • Tri de données excel.xlsx
    10.3 KB · Affichages: 9

Dranreb

XLDnaute Barbatruc
Bonsoir.
Cette macro le fait :
VB:
Sub Essai()
   Dim TDon(), LD As Long, TRés(), LR As Long, C As Integer
   TDon = Feuil1.[D5:I9].Value
   ReDim TRés(1 To UBound(TDon, 1) * (UBound(TDon, 2) - 1), 1 To 2)
   For LD = 1 To UBound(TDon, 1)
      For C = 2 To UBound(TDon, 2)
         If TDon(LD, C) <> "" Then
            LR = LR + 1
            TRés(LR, 1) = TDon(LD, 1)
            TRés(LR, 2) = TDon(LD, C)
            End If: Next C, LD
   Feuil1.[L4].Resize(UBound(TRés, 1), 2).Value = TRés
   End Sub
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Autre solution, par le biais de Power Query
Le nom du TS contenant la liste initiale est "T_Tel"
Clic droit dans la requête, "Actualiser", pour mettre à jour
Bonne apm
 

Pièces jointes

  • PQ_Tel.xlsx
    18.9 KB · Affichages: 4

fabienb

XLDnaute Nouveau
Bonjour,
Autre solution, par le biais de Power Query
Le nom du TS contenant la liste initiale est "T_Tel"
Clic droit dans la requête, "Actualiser", pour mettre à jour
Bonne apm
Bonjour Cousinhub, merci pour la solution utilisant Power Query, je découvre cela car je ne connais pas vraiment...
En fait mon besoin final est un peu plus complexe (pour moi...) que celui que j'ai envoyé, je pensais être capable d'adapter la requête que tu m'as envoyé pour répondre à ce besoin mais en fait je sèche encore...
J'ai joint mon fichier de besoin final (plus complet que le précédent) avec là encore les données que j'ai (Tableau 1) et comment je voudrais qu'elle soit traitées (Tableau 2). Si je peux encore abuser d'un peu de ton temps... :rolleyes:, merci d'avance

Fab
 

Pièces jointes

  • PQ_Tel (2).xlsx
    20 KB · Affichages: 4

fabienb

XLDnaute Nouveau
Bonsoir.
Cette macro le fait :
VB:
Sub Essai()
   Dim TDon(), LD As Long, TRés(), LR As Long, C As Integer
   TDon = Feuil1.[D5:I9].Value
   ReDim TRés(1 To UBound(TDon, 1) * (UBound(TDon, 2) - 1), 1 To 2)
   For LD = 1 To UBound(TDon, 1)
      For C = 2 To UBound(TDon, 2)
         If TDon(LD, C) <> "" Then
            LR = LR + 1
            TRés(LR, 1) = TDon(LD, 1)
            TRés(LR, 2) = TDon(LD, C)
            End If: Next C, LD
   Feuil1.[L4].Resize(UBound(TRés, 1), 2).Value = TRés
   End Sub
Merci!!! ça parait facile quand je vois la vitesse à laquelle tu m'as répondu!!!
C'est sympa en tout cas, merci pour ce code
Bonne journée

Fabien
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
La requête est un peu plus complexe, mais fonctionne quel que soit le nombre de forfaits que possède une personne (j'ai rajouté un forfait à Bernard, pour tester).
Si ça te convient
Bonne fin d'apm
 

Pièces jointes

  • PQ_Tel_V2.xlsx
    20.9 KB · Affichages: 11

fabienb

XLDnaute Nouveau
Re-bonjour,
ça me convient carrément!!! c'est exactement le besoin que j'avais et j'ai même compris comment ajouter des données dans la requête sans que ça plante, c'est un grand pas pour moi!!!
Vraiment un grand merci pour ton aide et ta rapidité pour répondre 👍
Bien cordialement

Fab
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re-bonjour,
ça me convient carrément!!! c'est exactement le besoin que j'avais et j'ai même compris comment ajouter des données dans la requête sans que ça plante, c'est un grand pas pour moi!!!
Vraiment un grand merci pour ton aide et ta rapidité pour répondre 👍
Bien cordialement

Fab
Déjà, grand bravo d'avoir pu mettre à ta sauce la requête...
Et ensuite, "rapidité, rapidité....." comme je débute également (à peine 1 an d'ancienneté dans PQ), j'ai un peu cravaché, mais c'est que du Kif....
Bonne soirée
 

fabienb

XLDnaute Nouveau
Salut Cousinhub,
est ce que je pourrais encore abuser de ton aide au sujet des requêtes sur excel?
j'ai bricolé le fichier que tu m'avais fourni et j'ai quelques petits soucis:
- j'ai rajouté une colonne "Date ouverture forfait" qui est au format de date mais ça pose problème dans la requête qui attend un format texte pour toutes les cellules de mon tableau. Possible de modifier cela?
- si une cellule du tableau n'est pas complétée alors la requête la complète avec la valeur de la cellule suivante, pour être plus clair par exemple si le forfait Tel 1 de Chloé (H6) n'est pas complété, alors la requête va aller chercher la valeur du forfait tel 2 (L6) pour la mettre à la place ce qui décale tout dans le tableau final.
Possible de modifier la requête pour lui dire que si la cellule est vide il faut renvoyer une cellule vide dans le tableau et non pas la valeur suivante (si elle existe)?
Merci d'avance pour ton aide, et si tu ne peux/veux pas y regarder pas grave du tout car tu m'as déjà bien aidé...

Fab
 

Pièces jointes

  • PQ_Tel_V3 (1).xlsx
    21.8 KB · Affichages: 2

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Là, je ne vais pouvoir faire du propre, mais déjà, tu cliques sur la 1ère étape "Source", et tu modifies le type de données des colonnes "Date d'ouverture forfait 1, 2 et 3)" en "Texte" (un msg d'alerte va te demander de confirmer l'insertion d'une étape supplémentaire, que tu valides)
Je regarderai plus tard pour restituer quelque chose de plus "clean"
Bon courage
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re-,
Une version un peu plus aboutie...
Dans ton dernier fichier, tu avais une pseudo-date (cellule I6 - Les autres, PQ les reconnaît)
Donc, comme dit Chris, en infor, "Merde-in" -> "Merde-Out"
Il faut donc de véritables dates dans ces colonnes.
Ici, je m'affranchis presque totalement des noms de colonne (Sauf Nom-Ville et Age)
Toutes les colonnes commençant par "Date" sont typées en "Date" (ce qui permet de mettre le nombre de forfaits qu'on veut).
J'ai (comme précisé supra), remplacé les "null" par "" (rien), ce qui permet de conserver toutes les lignes lors du dépivotage, puis tout typé en "Text"
Et à la fin, supprimé les lignes ne comportant pas de numéro de Tel.
Si ça te convient
Bonne fin d'apm
 

Pièces jointes

  • PQ_Tel_V3_1.xlsx
    23.2 KB · Affichages: 4

fabienb

XLDnaute Nouveau
Bonjour,
Là, je ne vais pouvoir faire du propre, mais déjà, tu cliques sur la 1ère étape "Source", et tu modifies le type de données des colonnes "Date d'ouverture forfait 1, 2 et 3)" en "Texte" (un msg d'alerte va te demander de confirmer l'insertion d'une étape supplémentaire, que tu valides)
Je regarderai plus tard pour restituer quelque chose de plus "clean"
Bon courage
Hello, étape ajoutée mais ça plante encore... :-(

Fab
 

Pièces jointes

  • PQ_Tel_V4 (1).xlsx
    22 KB · Affichages: 4

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Tu es resté sur ma 1ère réponse de samedi....(la date dans la cellule I6 n'était pas conforme, et tu n'as pas modifié le type après le dépivotage)
Regarde la dernière, notamment le type de données à insérer dans les colonnes "Date"
Bonne journée
 

fabienb

XLDnaute Nouveau
Hello,
oui effectivement je n'avais pas vu ton second message de samedi... Là j'ai eu du temps pour tout bien analyser ce que tu m'as fourni, j'ai transféré le code pour un autre fichier équivalent et tout fonctionne à merveille!!!
Tu m'as dit que tu débutais dans PQ, j'aimerais bien être débutant comme toi :)
D'ailleurs tu t'es formé comment? tutos? car après tous ces échanges je me dis que ce serait bien que je sois un peu moins une brêle sur le sujet...
Encore une fois, et peut être enfin la dernière cette fois-ci : Merci pour tout!!!

Fab
 

Discussions similaires

Statistiques des forums

Discussions
315 090
Messages
2 116 101
Membres
112 661
dernier inscrit
ceucri