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 -
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
pouvez vous m'aider a trouver la bonne solution, Merci a vous !
Amicalement,
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:
- Copier un tableau dont le nombre de ces lignes est variable
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
2 réponses
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 :
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 :
Ensuite, inutile de boucler ! Tu copies/colles le tableau en une seule fois :
Évite autant que tu le peux les Select qui ne font que ralentir l'exécution du code...
À plus,
ThauTheme
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
lahitnihad
Merci infiniment!! ça marche