copier coller plusieurs feuilles dans une feuille

copier coller plusieurs feuilles dans une feuille - VB/VBA/VBS - Programmation

Marsh Posté le 06-11-2018 à 16:34:05    

Bonjour,
j'ai un fichier de XXX feuilles (1 par jour ouvré depuis le 1er janvier 2018)  
et j'aurais besoin de copier toutes les datas de toutes les feuilles dans une seule feuille
pour ensuite fait du traitement de données dans cette nouvelle feuille
 
j'avais essayé de faire une macro pour récupérer  sur chaque feuille ce dont j'ai besoin
mais tout au long de l'année on a changé parfois les termes...
 
Merci si QQun a une petite macro pour copier/coller tout en une fois...

Reply

Marsh Posté le 06-11-2018 à 16:34:05   

Reply

Marsh Posté le 06-11-2018 à 16:42:29    

je corrige en fait mon tableau sur chaque page fait bien la même taille
A1-K19
et je viens de voir aussi que j'ai 5 cellules qui font référence à une autre cellule (B1) ce qui fait que quand je colle à la main mes feuilles les unes apres les autres
je récupère toujours la valeur de la cellule B1... (qui est une date de chaque page....

Reply

Marsh Posté le 06-11-2018 à 16:59:56    

j'aimerais faire ceci pour toutes les feuilles de mon classeur en VBA
'   Range("A1:K19" ).Select
'   Selection.Copy
'   Sheets("Feuil1" ).Select
'   Dim Lig As Long
'       Lig = 1 'première ligne à vérifier
'       Do While Not IsEmpty(Range("A" & Lig))
'       Lig = Lig + 1
'       Loop
'   Range("A" & Lig).Select
'   ActiveSheet.Paste

Reply

Marsh Posté le 06-11-2018 à 17:12:50    

je sais pas si c'est la meilleur méthode et si elle est bonne...
mais...
ceci à l'air d'avoir fonctionner
 
Sub Copie()
Dim k As Integer, i As Integer
k = Sheets.Count
 
For i = 1 To k
    Sheets(i).Activate
   Range("A1:K19" ).Select
   Selection.Copy
   Sheets("Feuil1" ).Select
   Dim Lig As Long
       Lig = 1 'première ligne à vérifier
       Do While Not IsEmpty(Range("A" & Lig))
       Lig = Lig + 1
       Loop
   Range("A" & Lig).Select
   ActiveSheet.Paste
Next i
End Sub

Reply

Marsh Posté le 06-11-2018 à 17:59:38    

Bonjour,
 
Déjà il est conseillé de virer tous les .Select qui ne servent à rien en général à part ralentir le script. Ainsi :

Code :
  1. Range("A1:K19" ).Select
  2. Selection.Copy


Peut devenir :

Code :
  1. Range("A1:K19" ).Copy


etc.
 
Pour détecter les fins de colonne il existe .End avec la direction xlDown ou alors utiliser .currentRegion qui permet de connaître une zone rectangulaire dont les bords sont limités par uniquement des cellules vides du côté extérieur.
Du coup ça permet de virer la boucle while.
Si tu as plein de feuilles, tu peux éventuellement utiliser une boucle "for each" en y introduisant un "if" qui permet d'éliminer la première feuille, c'est plus simple à manipuler.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Sujets relatifs:

Leave a Replay

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