Combiner plusieurs plages de données pour faire une liste

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

  • Test combiner.xlsx
    14 KB · Affichages: 31

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Test combiner .xlsm
    19.3 KB · Affichages: 5

William77

XLDnaute Nouveau
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:

soan

XLDnaute Barbatruc
Inactif
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

  • Test combiner.xlsm
    19.5 KB · Affichages: 6

William77

XLDnaute Nouveau
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 :eek::eek::eek:
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir William77, sylvanu,

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

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

  • Test combiner.xlsm
    19.5 KB · Affichages: 4
Dernière édition:

litelsousa

XLDnaute Occasionnel
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

  • décompte heures_V_macro.xls
    108.5 KB · Affichages: 2

soan

XLDnaute Barbatruc
Inactif
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

  • décompte heures.xls
    120 KB · Affichages: 10

litelsousa

XLDnaute Occasionnel
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:rolleyes:)
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:= _
 

Discussions similaires

Réponses
6
Affichages
305

Statistiques des forums

Discussions
312 104
Messages
2 085 330
Membres
102 862
dernier inscrit
Emma35400