Récupérer des données dans multi-feuilles

BESAC

XLDnaute Nouveau
Bonjour,

Je n'ai pas trouvé de réponses à mon problème dans le forum, alors je poste.

Voilà : je travaille dans un tableur d'une centaine de feuilles. Je voudrais récupérer dans une nouvelle feuille de ce tableur toutes les données d'une même ligne de chacune des 100 feuilles.

Pour être plus clair, je donne un exemple :

feuille1
données dans cellules A1:F2

feuille2
données dans cellules A1:F2

feuille3
données dans cellules A1:F2

etc...

récupération dans feuille101 :
ligne 1 : données cellules A1:F2 feuille1
ligne 2 : données cellules A1:F2 feuille2
ligne 3 : données cellules A1:F2 feuille3
etc...

Pouvez-vous me donner un coup de mains ? Je ne maîtrise pas vraiment les macros ni le langage VBA. Je précise à toutes fins utiles que je suis en excel version 2000.

Merci d'avance pour vos réponses.
 

skoobi

XLDnaute Barbatruc
Re : Récupérer des données dans multi-feuilles

Bonsoir,
test ce code:
Code:
Sub essai()
Dim feuille As Worksheet
Dim suite As Range
Sheets.Add Before:=Worksheets(1) 'cré la feuille 101 au début
ActiveSheet.Name = "feuille101"
For Each feuille In Sheets
    Set suite = Range("a65536").End(xlUp).Offset(1, 0)
    If feuille.Name <> "feuille101" Then
        With feuille
            .Range("a1:f2").Copy suite
        End With
    End If
Next
End Sub
Edit: bienvenue sur XLD Besac
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Récupérer des données dans multi-feuilles

Bonsoir Skoobi, Besac, le Forum

Voici une autre approche afin de mettre réellement en une ligne le retour de la plage "A1:F2" et, de plus uniquement les valeurs de ces cellules, et non leurs formules ou formats. (tout dépend des besoins de Besac)

Code:
Option Explicit
Const FeuilleCollector As String = "Feuil1" '[COLOR=green][B]<<< A ADPATER[/B][/COLOR]
Sub SheetsCollector()
Dim WS As Worksheet, WSCollect As Worksheet
Dim Plage As Range, Cell As Range
Dim Ligne As Long, Col As Byte

Set WSCollect = ThisWorkbook.Worksheets(FeuilleCollector)
Ligne = 1
Col = 1
    For Each WS In ThisWorkbook.Worksheets
            Set Plage = WS.Range("A1:F2")
                If WS.Name <> WSCollect.Name Then
                            For Each Cell In Plage
                             WSCollect.Cells(Ligne, Col) = Cell.Value
                            Col = Col + 1
                            Next Cell
                End If
            Ligne = Ligne + 1
            Col = 1
    Next WS
        
End Sub

Bonne soirée
@+Thierry
 

BESAC

XLDnaute Nouveau
Re : Récupérer des données dans multi-feuilles

Merci skoobi et merci Thierry !

Vous êtes trop forts. J'ai finalement retenu la solution de toi Thierry. Franchement, je vois pas comment j'aurais pu sortir un code pareil. Le résultat est miraculeux pour moi.

Vous me faites gagner un temps précieux. Je suis sûr que cela intéressera d'autres que moi.

Je vous souhaite un excellent we.
 

Discussions similaires

Statistiques des forums

Discussions
312 451
Messages
2 088 517
Membres
103 873
dernier inscrit
Sabin