XL 2013 Rassembler des colonnes issues de différentes feuilles en une colonne actualisable

yumenodoka

XLDnaute Nouveau
Bonjour à tous,

Grande débutante dans le domaine, je me retrouve bloquée avec mon fichier.

Mon fichier comporte 4 feuilles:

- 3 de ces feuilles comportent des colonnes dont l'intitulé est similaire et des colonnes spécifiques à chaque feuille.

- la 4ème feuille est une feuille qui devrait offrir une vue d'ensemble du contenu des colonnes communes à chacune.

J'avais réussi à utiliser un code permettant de copier coller le contenu des colonnes importantes de ma Feuille1 sur ma feuille 4 tout en prenant en compte les actualisations.

Cependant si j'applique ce code à ma feuille2, alors le contenu de la feuille 2 vient se coller en remplacement des données précédemment collées en provenance de ma Feuille 1.

Je ne sais pas si j'ai réussi à être claire mais pour récapituler :

- Feuille1, Feuille2 et Feuille 3 ont des colonnes en commun avec du contenu différent : colonnes Nom, Age, Ville.
En Feuille 4 je voudrais voir apparaître le contenu de ces mêmes colonnes en cumulant le contenu de Feuille1, Feuille 2 et Feuille 3 et que tout puisse être actualisable : ex si j'ajoute un Nom sur ma Feuille1 je veux pouvoir le voire dans ma feuille récapitulative (Feuille4) sans qu'il n'efface les prénoms déjà inscrits (sauf si j'efface ce prénom bien sûr de ma feuille1)

Je vous joins mon fichier d'exemple je pense que cela sera plus clair.

Je vous remercie vraiment de vos réponses, cela me sauvera !!!

Toutes mes excuses si le problème avait déjà été posé et résolu précédemment, j'ai effectué plusieurs recherches mais je n'ai pas réussi à trouver la réponse adéquate ou bien je n'ai pas été en mesure d'adapter le code à mon fichier...

Bon après-midi !
 

Pièces jointes

  • testvba.xlsx
    10.9 KB · Affichages: 24

Efgé

XLDnaute Barbatruc
Re : Rassembler des colonnes issues de différentes feuilles en une colonne actualisab

Bonjour yumenodoka et bienvenue sur le forum

Une proposition à mettre dans le module de la feuille de récap :
VB:
Private Sub Worksheet_Activate()
Dim i&, TTmp As Variant, TListe As Variant

'Mettre les feuilles à prendre en compte
TListe = Array(Sheets("Feuil1"), Sheets("Feuil2"), Sheets("Feuil3"))

With Me.Cells(1, 1)
    .Resize(Me.UsedRange.Rows.Count, 7).ClearContents
    .Resize(, 7).Value = TListe(1).Cells(1, 1).Resize(, 7).Value
End With

For i = LBound(TListe) To UBound(TListe)
    TTmp = TListe(i).Cells(2, 1).Resize(TListe(i).UsedRange.Rows.Count - 1, 7)
    Me.Cells(Me.Rows.Count, 1).End(3)(2).Resize(UBound(TTmp, 1), 7) = TTmp
Next i

End Sub

Cordialement
 
Dernière édition:

yumenodoka

XLDnaute Nouveau
Re : Rassembler des colonnes issues de différentes feuilles en une colonne actualisab

Bonjour yumenodoka et bienvenue sur le forum

Une proposition à mettre dans le module de la feuille de récap :
VB:
Private Sub Worksheet_Activate()
Dim i&, TTmp As Variant, TListe As Variant

'Mettre les feuilles à prendre en compte
TListe = Array(Sheets("Feuil1"), Sheets("Feuil2"), Sheets("Feuil3"))

With Me.Cells(1, 1)
    .Resize(Me.UsedRange.Rows.Count, 7).ClearContents
    .Resize(, 7).Value = TListe(1).Cells(1, 1).Resize(, 7).Value
End With

For i = LBound(TListe) To UBound(TListe)
    TTmp = TListe(i).Cells(2, 1).Resize(TListe(i).UsedRange.Rows.Count - 1, 7)
    Me.Cells(Me.Rows.Count, 1).End(3)(2).Resize(UBound(TTmp, 1), 7) = TTmp
Next i

End Sub

Cordialement

Merci beaucoup Efgé pour cette réponse rapide qui fonctionne à la perfection !!

Si vous avez le temps, pourriez-vous m'indiquer ce que désigne les chiffres dans la partie suivante du code :
With Me.Cells(1, 1)
.Resize(Me.UsedRange.Rows.Count, 7).ClearContents
.Resize(, 7).Value = TListe(1).Cells(1, 1).Resize(, 7).Value
End With

For i = LBound(TListe) To UBound(TListe)
TTmp = TListe(i).Cells(2, 1).Resize(TListe(i).UsedRange.Rows.Count - 1, 7)
Me.Cells(Me.Rows.Count, 1).End(3)(2).Resize(UBound(TTmp, 1), 7) = TTmp

Est-ce que cela désigne les colonnes ou des lignes précises que je devrai modifier si je souhaite adapter le code à d'autres fichiers ?

Je vous remercie infiniment !
 

Efgé

XLDnaute Barbatruc
Re : Rassembler des colonnes issues de différentes feuilles en une colonne actualisab

Re

Comme on utilise une Worksheet_Activate() "Me" désigne la feuille que l'on active.
Avec Cells on utilise Cell(Lignes, Colonnes)
UsedRange désigne la zone utilisée dans la feuille.
La ligne
Me.Cells(Me.Rows.Count, 1).End(3)(2)
Donne la première cellule vide de la feuille en colonne A:
En francais: La cellule en partant de la dernière ligne de la feuille (Me.Rows.Count) . en colonne A (Me.Cells(Me.Rows.Count, 1) et en remontant .End(3) décaler d'une cellule en dessous ( (2) )

Le 7 utilisé donne le nombre de colonnes à prendre en compte.

Cordialement
 
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Re : Rassembler des colonnes issues de différentes feuilles en une colonne actualisab

Bonjour, yumenodoka, Efgé :D, le Forum,

Une autre suggestion, sans m:eek:dit tabl:mad:...

Code:
Option Explicit
Private Sub Worksheet_Activate()
    Dim o As Worksheet
    Application.ScreenUpdating = False
    Range("a2", Cells(Rows.Count, "g").End(xlUp)).Clear
    For Each o In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))
        With o: .Range("a2", .Cells(Rows.Count, "g").End(xlUp)).Copy Sheets("Synthèse") _
                                                                     .Range("a" & Rows.Count).End(xlUp)(2): End With
    Next o
    Application.ScreenUpdating = True
End Sub

A bientôt :)
 

Efgé

XLDnaute Barbatruc
Re : Rassembler des colonnes issues de différentes feuilles en une colonne actualisab

Bonjour yumenodoka Bonjour 00 :)

Pour taquiner notre chère annesse :

For Each o In Sheets(Array("Feuil1", "Feuil2", "Feuil3"))

C'est un tableau :D

Cordialement
 

yumenodoka

XLDnaute Nouveau
Re : Rassembler des colonnes issues de différentes feuilles en une colonne actualisab

Bonjour Efgé et DoubleZero,

Je reviens vers vous un peu tardivement puisque je me remets seulement dans Excel, c'est plus compliqué que je ne pensais (du moins pour moi ;) ) mais grâce à votre aide j'espère parvenir au résultat souhaité. Je pense qu'il va encore falloir que je m'accroche dès que j'essaye de réutiliser l'un ou l'autre des codes dans un autre fichier je fais un peu tout planter :rolleyes:

Bonne journée et encore merci !
 

Discussions similaires