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

XL 2016 Réunir les données de plusieurs colonnes non contigües

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 !

matamata

XLDnaute Nouveau
Hello à tous,

De façon générale je trouve mon bonheur ce le forum mais là je coince.
J'aimerai regrouper les données du premier tableau Source dans un second Resultat (en jaune) afin de l'analyser à partir de TCD.
Le tableau source étant prévu de s'agrandir en fonction des ID ajoutés.

Dans l'exemple de classeur je veux :
- regrouper les données Noms et Prénoms dans deux colonnes sans cellules vides
- garder les doublons si existant
- mettre sous format tableau pour un traitement via TCD

Le tout par formules, power query ou VBA en dernier recours ou en partie.

J'ai une formule en L3 mais avec des vides (0).

Merci d'avance pour votre aide.
 

Pièces jointes

Bonjour Matamata, bonjour le forum,

Peut-être comme ça :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TS1 As ListObject 'déclare la variable TS (Tableau Structuré 1)
Dim TS2 As ListObject 'déclare la variable TS (Tableau Structuré 2)
Dim PL1 As Range 'déclare la variable PL1 (PLage 1)
Dim PL2 As Range 'déclare la variable PL2 (PLage 2)
Dim TV As Variant 'déclare la variable TV (Tableau des |Valeurs)
Dim TR() As Variant 'déclare la variable TR (Tableau des Résultats)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (Incrément)
Dim K As Integer 'déclare la variable K (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O
Set TS1 = O.ListObjects("Source") 'définit le tableau structuré TS1
Set PL1 = TS1.DataBodyRange 'définit la plage PL1
Set TS2 = O.ListObjects("Resultat") 'définit le tableau structuré TS2
TV = PL1 'définit la tableau des valeurs TV
For J = 2 To UBound(TV, 2) Step 2 'boucle 1 : sur toutes les colonnes J de TV par pas de deux (en partant de la seconde)
    For I = 1 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I de TV
        If TV(I, J) <> "" Then 'condition : si la donnée ligne I colonne J de TV n'est pas vide
            K = K + 1 'incrémente K
            ReDim Preserve TR(1 To 2, 1 To K) 'redimensionne le tableau des résultats TR (2 lignes, K colonnes)
            TR(1, K) = TV(I, J) 'récupère le nom dans la ligne 1 de TR
            TR(2, K) = TV(I, J + 1) 'récupère le prénom dans la ligne 2 de TR
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 1
Next J 'prochaine colonne de la boucle 2
If TS2.ListRows.Count = 0 Then TS2.ListRows.Add 'si le tableau structuré TS2 ne contient aucune ligne, ajoute une ligne au tableau structuré TS2
TS2.DataBodyRange.Delete 'efface toutes les données du tableau structuré TS2
TS2.Resize Range(Range("I2").Resize(K, 2).Address) 'redimensionne le tableau structuré TS2
Set PL2 = TS2.DataBodyRange 'définit la plage PL2
PL2(1, 1).Resize(K, 2).Value = Application.Transpose(TR) 'renvoie dans la première cellule de la plage PL2, redimensionnée, le tableau TR transposé
End Sub
 
Merci à vous

Chris,
Il faut vraiment que je me mettes à Power Query....j'ai commencé mais ne maitrise pas les formules.
J'imagine que l'on peut actualiser le tableau par VBA via un bouton ou à l'ouverture du classeur car la source sera mise à jour en permanence?

Robert,
Pas encore testé le code, je vais voir celà.

Encore merci
 
Non, il est vrai que tu as fait un tri a->z
Je veux dire que dans ta solution on a:

Hochon
Hochon
Maurice...etc donc par ligne, il faudrait

Hochon
Audine
Rouana...etc

La solution VBA fonctionne mais j'aimerai éviter dans un premier temps...

Merci, je ne sais pas si je me fait bien comprendre
 
Trop fort...😉
Bon, hormis la mise en forme et le fait de dépivoter/repivoter, le reste il faut que j'analyse.
Je ne comprends pas trop pourquoi l'ajout des colonnes index mais je cherche..

MErci bcp
 
Oups, désolé je n'avais pas capté le " Si on avait Nom, Prénom, Nom1, Prenom1, Nom2, Prénom2"
J'ai copié cet exemple qui correspondait à mes besoins mais effectivement je suis plutôt dans de le cas que tu décris.
j'essaye de faire celà.
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…