Copier un tableau dont le nombre de ces lignes est variable

Résolu
nihadlahit -  
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je suis débutante en vba et je suis en train de créer une macro pour mon stage. Le but est de copier un tableau et de le mettre dans une autre feuille . Le problème est que le nombre de lignes de mon tableau est variable.
j'ai essayé le code suivant mais ça ne marche pas du tout
For i = 2 To Cells(Rows.Count, 8).End(xlUp).Row
Sheets("F1").Select
Range("H" & i & ":J" & i).Select
Selection.Copy
Sheets("F2").Select
Range("H" & i & ":J" & i).Select
ActiveSheet.Paste
next i


pouvez vous m'aider a trouver la bonne solution, Merci a vous !

Amicalement,

A voir également:

2 réponses

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Nihadlahi, bonjour le forum,

Deux options pour commencer :
Si les deux colonnes I et J reçoivent chacune obligatoirement une donnée, tu détermine la dernière ligne éditée de la colonne (I ou J c'est pareil). Avec un code du style :
Dim DL as Integer

DL = Sheets("F1").Range("H" & Application.Rows.Count).End(xlUp).Row
'ou DL = Sheets("F1").Range("I" & Application.Rows.Count).End(xlUp).Row


Si une des deux colonnes peut ne pas recevoir de données, il faut prendre celle qui reçoit obligatoirement une donnée pour définir la dernière ligne du tableau. Par exemple tu as "Prénom" en H et "Nom" en I. Le prénom n'est pas toujours renseigné alors que le nom, lui, l'est toujours. Tu auras :
Dim DL as Integer
DL = Sheets("F1").Range("I" & Application.Rows.Count).End(xlUp).Row


Ensuite, inutile de boucler ! Tu copies/colles le tableau en une seule fois :
Range("H2:I" & DL).Copy Sheets("F2").Range("H2")


Évite autant que tu le peux les Select qui ne font que ralentir l'exécution du code...
À plus,
ThauTheme
0
lahitnihad
 
Merci infiniment!! ça marche
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Tiens un pseudo anagrammesque !... Je ne connaisais pas.
0