Macro excel / vba

Résolu/Fermé
matbleu
Messages postés
3
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
21 novembre 2012
- 21 nov. 2012 à 12:03
matbleu
Messages postés
3
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
21 novembre 2012
- 21 nov. 2012 à 14:12
Bonjour,

Pour faire simple. Je suis débutant en création de macro et j'ai besoin d'aide pour l'un de mes fichiers.

J'ai un fichier excel avec 2 feuilles :
1 feuille "retard"
1 feuille "recap"

la feuille "retard" est mise à jour régulièrement. Elle contient 1 tableau dont la 1ère cellule est en C3 et qui a 7 colonnes fixes (il va jusqu'à la colonne I ) MAIS son nombre de lignes peut varier légèrement à chaque nouvelle alimentation.

à chaque alimentation, je souhaite copier ce tableau à lignes variables vers ma feuille "recap" (en quelques sortes j'archive mes données sur cet onglet) à la suite des autres données à partir de la colonne B... actuellement ma première ligne vide est en B710

là j'ai fait :

Worksheets("retard").Range("C3:I23").Copy Worksheets("recap").Range("B710")

ça fonctionne mais ce n'est pas ce que je veux puisque je veux selectionner une plage variable et que je veux la coller sur l'autre onglet sur la dernière ligne vide...

Aussi, la dernière ligne de mon tableau de la feuille "retard" est un total, j'aimerai qu'elle ne soit pas copiée dans l'onglet recap

Comment faire?

Par avance merci!

2 réponses

pijaku
Messages postés
12259
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
9 août 2022
2 701
21 nov. 2012 à 12:09
Bonjour,

Alors on va, pour chaque feuille, calculer le numéro de la première ligne vide colonne C (Columns(3)) ou B (Columns(2)), stocker ces nombres dans deux variables et les utiliser dans le copié-collé :

Dim DernLigneRetard As Long, DernLigneRecap As Long
With WorkSheets("retard")
    'Ici, feuille retard, derniere ligne colonne C = .Columns(3)
    DernLigneRetard = .Columns(3).Find("*", , , , xlByColumns, xlPrevious).Row + 1
 End With
 With WorkSheets("recap")
    'Ici, feuille recap, derniere ligne colonne B = .Columns(2)
    DernLigneRecap = .Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row + 1
 End With
Worksheets("retard").Range("C3:I" & DernLigneRetard).Copy Worksheets("recap").Range("B" & DernLigneRecap) 

1
matbleu
Messages postés
3
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
21 novembre 2012

21 nov. 2012 à 14:10
Merci Pijaku!!!

J'ai adapté à mon fichier... tout fonctionne à merveille!

bon travail!
0
pijaku
Messages postés
12259
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
9 août 2022
2 701
21 nov. 2012 à 14:11
Mais de rien.
A+
0
matbleu
Messages postés
3
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
21 novembre 2012

21 nov. 2012 à 14:12
c'est parfait! mes remerciements!
0