Copies de cellules excel

Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022 - 30 déc. 2009 à 09:14
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 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.


Merci par avance pour votre attention

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Lameche15 Messages postés 156 Date d'inscription mardi 9 septembre 2008 Statut Membre Dernière intervention 15 septembre 2022
30 déc. 2009 à 10:44
Merci beaucoup, j'ai finalement trouvé la solution, je me mélangeat simplement les pinceau entre les feuilles actives et inactive

For numfich = 1 To 52 'Début ouverture des fichiers Galan

Workbooks.Open Filename:="C:\PLANNING ACTIVITE\Galan\Activité Réalisée par semaine\Semaineréel" & numfich & ".xls", ReadOnly:=True
ActiveWorkbook.Worksheets("Activité Semaine").Activate

'///////////////////////////////////////////
Range("S4:T8").Select

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

Range("B" & fin).Value = Cellule.Value 'Workbooks("Semaineréel" & numfich & ".xls").ActiveSheet.ActiveCell.Value
Range("A" & fin).Value = Application.Workbooks("Semaineréel" & numfich & ".xls").ActiveSheet.Range("K5").Value
Range("C" & fin).Value = Application.Workbooks("Semaineréel" & numfich & ".xls").ActiveSheet.Range("H1").Value
Range("D" & fin).Value = "GAL"
End If
Next Cellule
'///////////////////////////////////////////
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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
0
Rejoignez-nous