Copier / Coller ligne entre fichiers excel

Copier / Coller ligne entre fichiers excel - VB/VBA/VBS - Programmation

Marsh Posté le 14-05-2009 à 09:48:06    

Bonjour,
Je tente de créer une macro me permettant d'aller chercher des  lignes dans différents fichiers excel et de les recopier dans un fichier de destination. J'ai élaboré un début de macro mais mon pb est du fait que quand il va chercher le 2 ème fichier, cela les recopies sur les lignes du 1 er fichier et ainsi de suite...
 
Je n'arrive pas à résoudre ce pb merci de m'aider.
 
Cdlt

Code :
  1. Private Sub copiecollesave_Click()
  2. Application.ScreenUpdating = False
  3. Rep = "C:\Documents and Settings\desbfl01\Mes documents\Exemple VBA\"
  4. FichD = ActiveWorkbook.Name
  5. FichS = "FA.xls"
  6. Workbooks.Open Rep & FichS
  7. With Workbooks(FichS)
  8.         .Sheets("Feuil1" ).Range("A2:H65536" ).Copy _
  9.             Workbooks(FichD).Sheets("Feuil1" ).Range("A65536" ).End(xlUp).Offset(1, 0)
  10.         Workbooks(FichD).Save
  11.         Workbooks(FichS).Close
  12. End With
  13. Application.ScreenUpdating = False
  14. Rep = "C:\Documents and Settings\desbfl01\Mes documents\Exemple VBA\"
  15. FichD = ActiveWorkbook.Name
  16. FichS = "SB.xls"
  17. Workbooks.Open Rep & FichS
  18. With Workbooks(FichS)
  19.         .Sheets("Feuil1" ).Range("A2:H65536" ).Copy _
  20.             Workbooks(FichD).Sheets("Feuil1" ).Range("A65536" ).End(xlUp).Offset(1, 0)
  21.         Workbooks(FichD).Save
  22.         Workbooks(FichS).Close
  23. End With
  24. Application.ScreenUpdating = True
  25.            
  26. Application.ScreenUpdating = False
  27. Rep = "C:\Documents and Settings\desbfl01\Mes documents\Exemple VBA\"
  28. FichD = ActiveWorkbook.Name
  29. FichS = "MJ.xls"
  30. Workbooks.Open Rep & FichS
  31. With Workbooks(FichS)
  32.         .Sheets("Feuil1" ).Range("A2:H65536" ).Copy _
  33.             Workbooks(FichD).Sheets("Feuil1" ).Range("A65536" ).End(xlUp).Offset(1, 0)
  34.         Workbooks(FichD).Save
  35.         Workbooks(FichS).Close
  36. End With
  37. Application.ScreenUpdating = True
  38.            
  39.            
  40.            
  41.            
  42. End Sub

Reply

Marsh Posté le 14-05-2009 à 09:48:06   

Reply

Marsh Posté le 14-05-2009 à 09:57:00    

Il te manque un workbook(FichD).Activate ou qq chose du genre pour bien rendre actif ton fichier de destination.

Reply

Marsh Posté le 14-05-2009 à 12:46:51    

et je devrais le mettre ou?

Reply

Marsh Posté le 14-05-2009 à 13:04:09    

DTC ? :D
 
plus sérieusement, avant la ligne 40 !
 
bizarre ta ligne là d'ailleurs ? le collage, tu le fais surs FichD ? (D comme Destination) non ?? j'ai pas l'impression que ta ligne fasse ça en fait, d'où sûrement ton souci)
 
et ton "paste", tu n'en fais pas ?!???

Reply

Marsh Posté le 14-05-2009 à 16:24:22    

oui je fais le collage sur FichD et le collage marche pas le problème vient du fait que vu qu'il y a plusieurs fichiers à chaque fois ca écrit sur les lignes recopier de l'autre fichier, ca ne les mets pas à la suite.

Reply

Marsh Posté le 15-05-2009 à 09:38:07    

J'ai sûrement lu trop vite, alors du coup, pas bien sûr d'avoir saisi donc souci...
 
Tu pourrais reprendre ton code en le commentant pour dire ce que tu veux faire ?

Reply

Marsh Posté le 15-05-2009 à 16:17:36    

J'ai trouvé en changeant mon code
Cdlt  
merci de l'aide qd meme
 
 

Code :
  1. Sub Macro()
  2. 'Disons que tu places ta macro dans un fichier destination nommé Test.xls disposé sur le bureau ou autres que tu dois ouvrir pour la lancer
  3.     Dim FichD As String
  4.     Dim FichS As Long
  5.    
  6.     FichD = "Fichier_final.xls"
  7.     Application.ScreenUpdating = False
  8.     With Application.FileSearch
  9.         .NewSearch
  10.         .RefreshScopes
  11.         .LookIn = "C:\Documents and Settings\desbfl01\Mes documents\Exemple VBA\A\" 'Tous les fichiers du répertoire sont passés en revue
  12.         .Filename = "*.xls"
  13.         .SearchSubFolders = False
  14.         .Execute
  15.         For Ctr = 1 To .FoundFiles.Count
  16.             FichS = Ctr
  17.             Workbooks.Open (.FoundFiles(FichS)) 'Ouverture
  18.             Sheets("Feuil1" ).Range("A2:" & Range("H65536" ).End(xlUp).Address).Copy 'Copie
  19.             ActiveWorkbook.Close
  20.             Workbooks(FichD).Sheets("Feuil1" ).Range("A65536" ).End(xlUp).Offset(1, 0).Activate
  21.             ActiveSheet.Paste 'Collage
  22.         Next
  23.     End With
  24.     Range("A1" ).Activate
  25.     Application.CutCopyMode = False
  26.     Application.ScreenUpdating = True
  27.    
  28. End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed