Re: fichier sommaire incluant data de plusieurs classeurs
Bonjour,
ma question fait référence à une macro proposée afin de rasembler dans un seul classeur, certaines données ciblées provenant de plusieurs classeurs dans un répertoire. Voici la référence:[url]
https://forum.excel-pratique.com/viewtopic.php?t=12177
J'ai tenté 2 petites variantes d'affichage effectuées par la macro mais malheureusement je reçois des messages de bog à mes tentatives.
Dans le fichier: Sommaire.xls (par soucis de simplicité, je reprend l'exemple initial):
1. j'ai tenté de déplacer les commandes des colonnes: I, J, K vers les colonnes A, B, C (en décalant le tableau de 3 colonnes vers la droite).
2. j'ai tenté d'ajouter une double-colonne de valeurs au sommaire (en fait j'aimerais savoir comment en ajouter plusieurs autres colonnes de données issues des fichiers quotidiens).
Je vous remercie en avance pour votre précieuse aide
JL
Bonjour,
Regarde le fichier joint..
le tableau décalé de 3 colonnes vers la droite.
Toujours bâti sur le même principe...
Par contre, pour rajouter des données, il faut que tu entres dans la boucle :
For Each Obj In .OLEObjects
...
....les cellules rapatriées sont dans ces lignes :
OldWbk.Sheets(1).Range("B6:B7")(1).Resize(2, 1).Copy
.Cells(DerLig, 6).PasteSpecial Paste:=xlPasteAll, Transpose:=TrueComme ces données sont fusionnées dans tes classeurs "Source", il a fallu que je passe par cet artifice : Range("B6:B7")(1) qui ne prend que les valeurs des cellules B6 et B7 (le (1) signifiant la première cellule des cellules fusionnées, soit B6) et Resize(2, 1), qui permet de prendre en compte les cellules B6 et B7...
Ensuite, il faut les transposer par le PasteSpécial..
Si tes autres données à récupérer sont dans des cellules non fusionnées, on peut faire autrement..
Il faudrait que tu précises quelles autres valeurs tu veux récupérer...
PS, tu n'as toujours pas répondu à une de mes questions, concernant ton fuseau horaire....
Edit, zut, avec le fichier, c'est mieux...
Bonsoir,
le tableau a été décalé vers la gauche et tout fonctionne bien.
Quant à la deuxième partie... "rapatrier d'autres données des fichiers sources"
Il faut préciser que:
- les fichiers sources sont en réalité beaucoup plus gros que dans l'exemple simplifié (de façon à être moins de 100K). Chaque classeur comporte 400 lignes par plus de 35 colonnes.
- toutes les données à transposer proviennent de cellules fusionnées dans les fichiers sources
- dans le fichier joint, j'ai mis un exemple du gabarit final du sommaire
- de plus, j'ai rajouté un feuillet: "code" qui inclut les lignes de codes dont je crois vous aurez besoin dans le VBA
Néanmoins, je sais que le code du VBA doit être modifié quelque part ailleurs (et voilà mon problème) pour que la macro fonctionne.
Une dernier détail avant de terminer, je crois saisir que la macro fait un tri par date à la fin. Toutefois, ce dernier ne semble pas bien fonctionner car les dates d'une ligne à la suivante ne se suivent pas toujours correctement. Si le tout se règle, il serait bien que les dates les plus récentes soient en premier (tri inversé).
Pour terminer, je suis dans le fuseau horaire de l'est du Canada.
Fichier::
https://www.excel-pratique.com/~files/doc2/sommaire_complet.xls
Merci encore
JL
Bonjour,
normalement, si tu as inséré les lignes de code entre :
Set OldWbk = ActiveWorkbooket :
OldWbk.Close Falseça devrait fonctionner...
Si non, peux-tu donner l'erreur générée, ou le dysfonctionnement observé?
Comme je n'ai pas envie de créé un fichier avec 35 colonnes, les essais ne sont pas concluants....
Bonjour,
j'ai bien fait tel que vous aviez recommandé...
la dernière ligne du code ci-dessous est surlignée en jaune:
OldWbk.Sheets(1).Range("R382:R383")(1).Resize(2, 1).Copy
.Cells(DerLig, 84).PasteSpecial Paste:=xlPasteAll, Transpose:=True
OldWbk.Close False
.Cells(DerLig, 4).Value = Format(LaDate, "yyyy-mm-dd")
.Cells(DerLig, 5).Value = Periode
.Cells(Obj.TopLeftCell.Row, 1).Resize(1, 2).Delete Shift:=xlUp
Obj.Delete
End If
End If
Next Obj
.Columns(4).NumberFormat = "yyyy-mm-dd"
With .Range(.Cells(4, 4), .Cells(DerLig, 11))PS. j'ai aussi modifié la ligne: With .Range(.Cells(4, 4), .Cells(DerLig, 11))
par With .Range(.Cells(4, 4), .Cells(DerLig, 85))
mais j'obtiens le même message d'erreur.
JL
Re-,
tu confirmes que la colonne D passe bien au format "2009-07-20"?
Il n'y a donc pas de Bug à cette ligne :
.Columns(4).NumberFormat = "yyyy-mm-dd" Bizarre..
Peux-tu m'envoyer ton code en entier?
Pour ce faire, tu fais un clic droit sur le module "Importation", à gauche, et tu fais "Exporter un fichier"
Tu laisse le nom par défaut, et tu l'enregistres là ou tu vas le retrouver facilement.
Puis tu le zippes, et tu le joins ici (on ne peut pas joindre de fichier .bas)
Je vais essayer de voir....
Bonjour,
désolé mais je dois admettre que c'est moi qui était en faute et non la macro qui fonctionne parfaitement. L'erreur provenait du fait que j'oubliais parfois de cocher
un ou plusieurs fichiers (ou l'option: tous).
Puis-je demander un dernier service ou quelques conseils de départ...
j'aimerais continuer sur le même principe et copier les scores bruts des classeurs sources dans des feuillets distincts propre à chaque aéroport (il y a 14 aéroports, donc 14 feuillets). Chaque données des fichiers sources appartiennent à une cellule unique (cellule non fusionnée).
J'ai joint un fichier (avec seulement 3 feuillets pour me limiter à 100k) pour illuster un peu mieux ce que je désire. Sur la ligne: 2004-04-13.... j'ai indiqué les références (ex: B43)des cellules des fichiers sources dont les valeurs doivent être copiées dans le feuillet.
Je ne veux pas que tout le code soit écrit (ce qui risque d'être long, je peux m'en occuper) mais seulement 2 ou 3 exemples sur la façon de copier
- les données dans leur feuillet respectif
- et ce pour plusieurs dates.
https://www.excel-pratique.com/~files/doc2/sommaire_v4.xls
Merci d'avance,
JL
Bonsoir;
désolé mais je dois admettre que c'est moi qui était en faute et non la macro qui fonctionne parfaitement. L'erreur provenait du fait que j'oubliais parfois de cocher
un ou plusieurs fichiers (ou l'option: tous).
J'aurai du gérer ce type d'erreur...... Scuse
Pour le reste, je regarde....
Boujour,
je reviens à la charge avec ma requête mais d'une façon (je l'espère, plus conviviale à traiter).
Le prochain lien:
https://www.excel-pratique.com/~files/doc2/klk9Tsommaire_v4_simplifie.xls
inclut un fichier avec une macro qui copie dans un feuillet: "sommaire" certains scores ciblés de fichiers quotidiens. La macro a été développée par CousinHub. J'ai ajouté à ce fichier 3 autres feuillets: YUL, YMX, YUY.
Ce fichier doit être mis dans un répertoire à la suite de 4 sous-répertoires nommés:
AM_ete, PM_ete, AM_hiver, PM_hiver.
Les 3 prochains liens comprtent les fichiers sources ou quotidiens (pour les fins de l'exercice, ces derniers sont un peu plus élaborés que les premiers envoyés).
https://www.excel-pratique.com/~files/doc2/0EwWxQUERGN1_AM_ISSUE_pour_ete_2009_07_07scores_score.xls
https://www.excel-pratique.com/~files/doc2/MEniNQUERGN1_AM_ISSUE_pour_ete_2009_07_08scores_score.xls
https://www.excel-pratique.com/~files/doc2/8m7mnQUERGN1_AM_ISSUE_pour_ete_2009_07_09scores_score.xls
Ces derniers fichiers devront être placés dans le sous-répertoire: AM_ete.
Ce que je désire:
j'aimerais continuer sous le même principe de fabrication du feuillet: "sommaire" et copier les scores bruts des classeurs sources dans des feuillets distincts propre à chaque aéroport (dans ce cas-ci: YUL, YMX, YUY). Dans les fichiers sources, j'ai rehaussé en couleur les cellules à copier tandis que dans les feuilletsYUL, YMX, YUY, j'ai indiqué les références (ex: B43) des cellules des fichiers sources.
Voilà, en espérant être plus clair
Merci de votre aide
JL
Bonjour,
désolé d'insister mais je n'ai reçu aucune réponse depuis plus d'une semaine.
Pour le reste, je regarde....
Cousinhub, vous n'auriez pas quelques trucs à me conseiller pour que je puisse débloquer.
Merci
JL