Regrouper des donnees de feuilles differentes sur une meme feuille

D

dj.run

Guest
Bonjour à toutes et à tous,

j'avais envoyé un post la semaine derniére, et n'ayant pas eu un grand succes, je me permets de refourmuler ma demande .

je cherche depuis pas mal de temps à regrouper des données d'un fichier (debut) dans un autre fichier (arrivée) .

En fait je voudrai pouvoir recuperer les données contenues dans plusieurs onglets de debut et de les regroupées (à la suite) sur une feuille du fichier arrivée . et j'aimerai le faire avec une macro; mais je n'y arrive pas .

j'arrive à ouvrir le fichier debut et si besoin le refermer mais je n'arrive pas à recuperer les données .

merci, si quelqu'un peut m'aider .

@+ dj.run
 

Pièces jointes

  • pb_dj.zip
    4.8 KB · Affichages: 148
  • pb_dj.zip
    4.8 KB · Affichages: 148
  • pb_dj.zip
    4.8 KB · Affichages: 142
S

sousou

Guest
Voici un code simple qui situé dans le classeur arrivé, ouvre un classeur début, et copie chaque feuille dans la feuille 1 du classeur arrivé

Evidement j'ai pris en exemple que les données sont l'ensemble des cellules utilisées sur chaque feuille, mais tout ceci est à compléter.

Bonne chance

Sub deb()
Set arrive = ThisWorkbook.Worksheets(1)
arrive.UsedRange.Delete
chemin = ThisWorkbook.Path
Set début = Workbooks.Open(chemin & "\début.xls")

For Each i In début.Worksheets
Set données = i.UsedRange
données.Copy (arrive.Range("a1"))

arrive.UsedRange.Insert (xlShiftDown)
Next

début.Close
End Sub
 
M

Michel

Guest
Bonjour djrun

Peux tu tester la macro ci joint ( à rattacher au bouton du fichier arrivée )

Dans l’exemple j’ai considéré que le fichier DEBUT était fermé lors de l’opération . les deux fichiers doivent être dans le même répertoire

Private Sub CommandButton1_Click()
Dim i As Byte
Dim X As Byte 'ou integer si nb de lignes superieur à 256

ChDir ThisWorkbook.Path
Application.ScreenUpdating = False
X = 1
For i = 1 To 4
Workbooks.Open FileName:="debut.xls"
ActiveWorkbook.Sheets(i).Range("A1:B6").Copy
ThisWorkbook.Sheets(1).Cells(X, 1).PasteSpecial
X = X + 6
Next

ActiveWorkbook.Close
Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub


Bon après midi
Michel
lapin4.gif
 
D

dj.run

Guest
Re à tous,

merci Michel et sousou, avec vos 2 exemples, j'ai reussi à recuperer les donnees . juste une petite question suplementaire si ce n'est pas trop,

dans le code de michel on fait une boucle : for i = 1 to 4,

je suppose que cela correspond au nombre d'onglet du fichier debut, mais si le nombre d'onglet evolu, exemple si de 4 aujourd'hui on passe à 6 puis à 8 etc.. comment faire la boucle sur le nombre d'onglet present au moment de l'ouverture du fichier debut ?

merci encore pour votre aide .

@+ dj.run
 
D

dj.run

Guest
re à tous,

en fait mon exemple est un extrait de mon fichier debut qui en fait contient entre 800 et 1500 ligne par onglet et le nombre d'onglet evolu de jour en jour .

de plus je travaille sur win98se et excel97 .

en vous remerciant encore pour votre aide .

@+ dj.run
 
M

Michel

Guest
rebonjour djrun et sousou

pour compter le nombre de feuilles tu peux utiliser
ActiveWorkbook.Sheets.Count


donc pour ton exemple cela donne :

Private Sub CommandButton1_Click()
Dim i As Byte
Dim X As Byte 'ou integer si nb de lignes superieur à 256

ChDir ThisWorkbook.Path
Application.ScreenUpdating = False
X = 1

Workbooks.Open FileName:="debut.xls"
For i = 1 To ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(i).Range("A1:B6").Copy
ThisWorkbook.Sheets(1).Cells(X, 1).PasteSpecial
X = X + 6
Next

ActiveWorkbook.Close
Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub


bon apres midi
Michel
lapin4.gif
 
S

sousou

Guest
Je n'ai pas suivit la discussion d'hier, mais je rappelle que lors que vous utilisez la collection "worksheets" celle-ci vous renvoi l'ensemble des feuilles du classeur d'où

for each i in worksheets
...

next
 
D

dj.run

Guest
bonjour à tous,

sousou, je ne sais pas pourquoi mais ton code ne marche pas chez moi .

est ce du à la version de l'excel que j'ai (97), c'est la raison pour laquelle, j'ai pris la solution de Michel et je tente de l'adapter à mon fichier .

Pour ce qui est de : for each i in worksheets, ça amrche pas non plus .


merci quand meme pour ton aide .

@+ dj.run
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia