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

Combiner plusieurs plages de données pour faire une liste

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 !

William77

XLDnaute Nouveau
Bonjour à tous,

Est-il possible de combiner plusieurs plages de données (de préférence sans VBA si possible), tel que le fichier joint?

Je précise que j'ai fait des recherches, mais je ne dois pas utiliser les bons mots clés.....

S'il n'y a pas le choix que d'utiliser le VBA je suis preneur 😉.

Si oui, serait-il possible d'avoir une aide?

Cordialement.
 

Pièces jointes

Bonjour William, et bienvenu sur XLD, Bonjour Bruno,
utiliser le VBA je suis preneur
Donc une macro en PJ :
VB:
Sub ConstruitTableau()
Range("K3:K1000").ClearContents ' Efface tableau de sortie
Lwrite = 3                      ' Première ligne d'écriture
ColK = 11                       ' N° colonne tableau de sortie
tablo = Range("B3:H9")          ' Transfert de tout le tableau dans une table
For j = 1 To UBound(tablo)      ' Pour toutes les colonnes du tableau
    For i = 1 To UBound(tablo, 2) ' Pour toutes les lignes du tableau
        If tablo(i, j) <> "" And Left(tablo(i, j), 4) <> "Test" Then    ' Si non vide et si ne contient pas Test
            Cells(Lwrite, ColK) = tablo(i, j)                           ' On tarnfert dans le tableau de sortie
            Lwrite = Lwrite + 1                                         ' On incrémente l'indice d'écriture
        End If
    Next i
Next j
End Sub
🙂
 

Pièces jointes

Bonjour et merci Sylvanu,

Effectivement, le code fonctionne parfaitement, mais est-il possible d'utiliser les noms (exemple: Tableau2[Test 1], Tableau3[Test 2], Tableau4[Test 3]) en lieu et place du range("K3:K1000"), si ceux-ci ne se trouve pas dans la même feuille?
Je ne sais pas si je suis assez explicit 🙁

Merci de prendre le temps de m'aider 🙂

Cordialement.
 
Dernière édition:
Bonjour William77, lefil,

Je propose le fichier ci-dessous ; Ctrl e ➯ travail effectué
VB:
Option Explicit

Dim lg2&

Private Sub Job(Tbl$)
  With Worksheets("Test").ListObjects(Tbl)
    .DataBodyRange.Copy Cells(lg2, 11): lg2 = lg2 + .ListRows.Count
  End With
End Sub

Sub Essai()
  lg2 = 3: Application.ScreenUpdating = 0
  Worksheets("Test").ListObjects("Tableau5").DataBodyRange.ClearContents
  Job "Tableau2": Job "Tableau3": Job "Tableau4"
End Sub
soan
 

Pièces jointes

Re Bonjour tout le monde,
@soan
Tant qu'à faire, mettre avec lg2 = 1 en init :
VB:
  With Worksheets("Test").ListObjects(Tbl)
    .DataBodyRange.Copy [Tableau5].Cells(lg2, 1): lg2 = lg2 + .ListRows.Count
  End With
End Sub
Cela évite le 11 arbitraire. Cf post #6.😉
 
Bonjour Sylvanu,

Merci encore pour le travail qui tu as produit pour m'aider, mais cette solution est plus complexe que je ne l'aurais pensé.......
Après plusieurs essais infructueux, je me tourne vers la solution de Chris et JHA, avec Power Query que je ne connaissais pas.

Encore merci pour tout.

Cordialement.

Edit: je viens de m'apercevoir que je n'avais pas lu le post 9 😱😱😱
 
Bonsoir William77, sylvanu,

Tu as écrit : « Edit: je viens de m'apercevoir que je n'avais pas lu le post 9 😱😱😱 »

Alors ? quel est ton avis sur mon code VBA ? 😉 ça te convient ou pas ?


----------------------------------------------------------------------------------------------

Je mets ici mon code VBA, avec la petite modif proposée par sylvanu :
VB:
Option Explicit

Dim lg2&

Private Sub Job(Tbl$)
  With Worksheets("Test").ListObjects(Tbl)
    .DataBodyRange.Copy [Tableau5].Cells(lg2, 1): lg2 = lg2 + .ListRows.Count
  End With
End Sub

Sub Essai()
  lg2 = 1: Application.ScreenUpdating = 0
  Worksheets("Test").ListObjects("Tableau5").DataBodyRange.ClearContents
  Job "Tableau2": Job "Tableau3": Job "Tableau4"
End Sub
Attention : avec dans la sub Job() .Copy [Tableau5].Cells(lg2, 1) :
dans la sub Essai(), lg2 doit être initialisé à 1 (ce n'est plus à 3).

soan
 

Pièces jointes

Dernière édition:
Bonjour,

Je me permets de "m'insérer" dans ce post, ma question est presque ça, j'ai juste deux petites différences:

1° dans mes colonnes (participants 1 à 4) j'ai des cellule vides qui se mettent également dans le tableau Total
2° Dans le tableau Total, j'aimerais avoir qu'une seul fois chaque participants

Je vous remercie.

P.S. C'était la question que je posais (sûrement pas aussi clairement) dans ce post. faut-il que j'y mette un lien?
 

Pièces jointes

Bonjour litelsousa,

Tu as écrit : « j'ai juste deux petites différences » ; mais ces 2 petites différences
font que ce n'est plus possible d'utiliser la même méthode ! on peut réutiliser
uniquement l'effacement du tableau résultat (ton tableau nommé "Total").

Aussi, j'ai utilisé une autre méthode ; fais Ctrl e ➯ travail effectué ! 🙂

À te lire pour avoir ton avis ; si tu veux une adaptation,
n'hésite pas à demander.
😉

soan
 

Pièces jointes

Et bien oui, c'est exactement ça.

Est-ce que c'est "à peu près juste" si je rajoute ça pour y trier par ordre alphabétique?
(j'imagine bien que c'est pas bien, c'est le 2ème que je fait🙄)
VB:
' trier par ordre alphabétique  
     ' sélectionner Total
    Application.Goto Reference:="Total"
    ActiveWorkbook.Worksheets("Décompte_heures").ListObjects("Total").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("Décompte_heures").ListObjects("Total").Sort. _
        SortFields.Add2 Key:=Range("B17:B27"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Décompte_heures").ListObjects("Total").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
J'ai fais ça en faisant des enregistrement d'action... mais je ne sais pas comment dire que je veux trier le tableau "Total", ça me sort toujours ça:
Code:
 SortFields.Add2 Key:=Range("B17:B27"), SortOn:=xlSortOnValues, Order:= _
 
- 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
4
Affichages
276
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…