"Concaténer" des colonnes depuis plusieurs feuilles sur une synthèse

cdx81

XLDnaute Nouveau
Bonjour à tous,

J'erre sur les forums depuis quelques heures déja, et du coup je m'adresse à vous pour trouver une solution à ma problématique :
Je souhaite faire une sorte de plan haut niveau dans un onglet "Récap" qui reprendrait les 3 premières colonnes de chaque autre feuilles (ce n'est pas obligatoirement que ce soit dynamique, je ne vais pas être amené à en ajouter/supprimer à la volée).
Avec si possible les options suivantes :
- mise à jour auto quand le contenu des feuilles changent
- ne pas afficher les lignes vides (générés pas des niveaux de détails non inclus dans le récapitulatif)
- ne pas afficher les en-têtes (après il est possible que je les supprime, je ne sais pas encore, donc ça peut-être modulable)

Infos (importantes ou pas) :
- les données seront bien uniquement des textes


Je vous joins un exemple avec ce que j'aimerais comme résultat dans la feuille "Récap" avec des données que j'ai générées.
N'hésitez pas si je n'ai pas été claires dans mes explications et milles merci par avance.
 

Pièces jointes

  • ExempleConcatenationAuto.xlsx
    16.8 KB · Affichages: 11

job75

XLDnaute Barbatruc
Bonjour cdx81, bienvenue sur XLD,

Placez cette macro dans le code de la feuille "Récap" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Activate()
Dim resu(), w As Worksheet, tablo, i&, n&
ReDim resu(1 To Rows.Count, 1 To 3)
For Each w In Worksheets
    If w.Name <> Me.Name Then
        tablo = w.UsedRange.Resize(, 3) 'matrice, plus rapide
        For i = 2 To UBound(tablo)
            If tablo(i, 1) <> "" Then n = n + 1: resu(n, 1) = tablo(i, 1)
            If tablo(i, 2) <> "" Then n = n + 1: resu(n, 2) = tablo(i, 2)
            If tablo(i, 3) <> "" Then n = n + 1: resu(n, 3) = tablo(i, 3)
        Next
    End If
Next
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A4] 'cellule à adapter
    If n Then .Resize(n, 3) = resu
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 3).ClearContents 'RAZen dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Elle se déclenche quand on active la feuille, voyez le fichier joint.

A+
 

Pièces jointes

  • ExempleConcatenationAuto(1).xlsm
    27.8 KB · Affichages: 12

cdx81

XLDnaute Nouveau
Bonjour Job75,

Merci beaucoup pour ton aide, avec le code expliqué, c'est top !
J'ai même réussi à le modifier un peu car j'avais séparé la référence du titre dans 2 celulles mitoyennes et ça fonctionne !

Encore merci,
Bonne journée.
A+
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 011
Membres
101 866
dernier inscrit
XFPRO