Lameche15
Messages postés156Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention15 septembre 2022
-
30 déc. 2009 à 09:14
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
30 déc. 2009 à 12:36
Bonjour à tous,
Mon souci ne va pas etre simple à expliquer mais je vais essayer.
J'ai un classeur excel avec une feuille nommée "Activité semaine". Tout au long de l'année je saisi dans ce classeur que j'enregistre à chaque fois sous le nom "semaineréelxx.xls". Au final je me retrouve avec 52 classeurs correspondant au nombre de semaines.
Maintenant je voudrais faire un bilan automatisé de ces classeurs et mettre le résultat dans un autre fichier nommé "bilan activité".
Ce que j'aimerais arriver à faire, c'est sur une plage présélectionnée de mon semaineréelxx.xls par exemple Range(S4:T8), je voudrais reporter toutes les valeurs non vide vers la colonne B (à partir de la ligne16) de mon fichier "Bilan activité".
Je ne sais pas si c'est très clair.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 déc. 2009 à 10:41
Salut
Extraire des données de classeurs vers un autre classeur : où est ton problème ?
En enregistrant une macro pendant que tu le fais à la main serait déjà un point de départ !
Par exemple, tu peux mettre cette formule dans une cellule de ton classeur récapitulatif :
= 'C:\mon répertoire\[mon fichier semaine.xls]ma Feuille'!$A$2
Il n'y a donc plus qu'à :
- Compter de 1 à 52 (ou 53 ?)
For-Next
- Calculer le nom du fichier correspondant à un numéro de semaine
Dim monFichier As String
monFichier = "semaineréel" & Cstr(monCompteur) & ".XLS"
- Ouvrir un classeur
Enregistre une macro pendant que tu le fais à la main, tu auras la syntaxe exacte
- Nom de la feuille source
Je pense que c'est une constante
- Calculer le numéro de ligne où insérer la donnée
Puisque tu sembles lire 2 lignes par semaine :
monNoLigne = 16 -2 + (monCompteur * 2)
- Copier/Coller les cellules S4:T8 depuis le classeur semaine vers la ligne précédemment calculée de ta feuille de récap
Enregistre une macro pendant que tu le fais à la main, tu auras la syntaxe exacte
Il faut décomposer tout ce que tu as à faire et résoudre chaque problème individuellement.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
For Each Cellule In Selection
If Cellule.Value <> Empty Then
Workbooks("Bilan Activité.xls").Worksheets("Bilan").Activate
fin = Range("B65536").End(xlUp).Row
fin = fin + 1
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 déc. 2009 à 12:36
Petite note.
Si tu veux utiliser tes macros dans les versions 2007 et supérieures, tu devrais modifier cette ligne qui ne considère que 65536 lignes.
fin = Range("B65536").End(xlUp).Row fin = Cells(Rows.Count, "B").End(xlUp).Row + 1
De cette façon tu pourras trouver la dernière ligne peu importe le nombre de lignes que le classeur contient.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI