Récupérer chaque jour des donées dans un nouveau fichier Excel

Tang2006 Messages postés 1 Date d'inscription vendredi 28 juillet 2006 Statut Membre Dernière intervention 28 juillet 2006 - 28 juil. 2006 à 11:50
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 28 juil. 2006 à 13:36
Bonjour, 

 Je calcule au jour le jour la valeur d'un bien, pour cela je doit créer chaque jour un fichier Excel nommé selon le shémat suivant : "nom, datedujour"
Ces fichiers se composent de plusieurs onglets dont le dernier reprend tous les éléments de la valeur du jour (nommé "valo" ).
Je cherche à créer, dans un nouveau classeur, un historique me permettant de mettre en liste les valeurs de chaque jour en face de la date correspondante.
Pourriez vous m'aider à créer la macro qui m'éviterais de faire un copier coller chaque jour ?
 
D'avance merci





Tang2006

2 réponses

tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
28 juil. 2006 à 13:28
Peut-être un début de réponse. Dans la cellule dans laquelle tu as besoin de la valeur (en face de la date concernée), tu mets la formule


dtDate = cells("A1")
NomFeuille = "Feuil" & dDate


Cells("B1").Formula = "=[Fichier " & dtDate & "]" & NomFeuille & "!$A$1"

Le projet est trop vague pour donner une explication plus précise. Excel est capable d'aller chercher une valeur dans un autre classeur avec une formule très simple (=[NomduClasseur][NomdeLaFeuille]!Range). Le tout est de construire la formule avec VB en fonction de la date.
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
28 juil. 2006 à 13:36
L'idée est de créer dans ton fichier historique une interface :

Faisons simple :
Feuille "Historique" : la colonne A te sert à indiquer les dates, la colonne B à mettre la valeur en face.

A toi de gérer la date (soit tu crées d'avances un calendrier avec toutes les dates qui t'intéresse, soit tu alimentes au fur et à mesure de tes besoins : je ne sais pas s'il te faut tous les jours même les dimanches, etc ...)

Exemple :
A1: Date B1: Valeur
A2: 25/07/2006 B2: 100
A3: 26/07/2006 B3: 150
A4: 27/07/2006 B4:
A5: 28/07/2006 B5:

Une contrainte : Tous tes fichiers Excel Quotidien doivent avoir leur nom avec une même norme, et être dans un même dossier pour que ce soit plus pratique (et logique).

Tu vas créer un bouton.
Le code associé doit faire 4 choses :
1 - Repérer la première cellule vide (ici B4).
Plusieurs solutions existent, créer une boucle sur la colonne et sortir à la première cellule vide; positionner ta cellule active et faire aller en relatif à la dernière cellule pour récupérer l'adresse; ou alors en Excel, dans une colonne C par ex, mettre en face de chaque cellule une formule à base de SI, ESTVIDE, NB.SI ou encore CELLULE("adresse",...)
Comme tu le vois, ce ne sont pas les solutions qui manquent :)

2 - Quand tu as cette cellule non vide, tu connais la première date où il te manque la valeur (les colonnes de changent pas, tu peux jouer sur une variable et la propriété Range ou Cells pour réconstituer l'adresse, et ainsi récupérer la date en variable.

3 - Avec la date, tu peux reconstituer le nom de ton fichier Excel contenant ta donnée, et tu connais le chemin (tu peux utiliser la commande Application.Path pour déterminer le chemin relatif).
Tu ouvres donc ton fichier Excel cible en créant un objet Excel et en donnant pour chemin une variable du type Application.Path & "\Nomfichier" & DateRécupérée & ".xls"

4 - Tu possèdes 2 fichiers Excel d'ouvert.
Tu joues aves les Workbook pour déterminer les fichiers, Worksheets pour déterminer les Feuilles et les méthodes Copy et Paste si tu veux les formats, ou les propriétés Value pour juste la valeur de la cellule, et tu mets à jour ton fichier Historique.

5 - Tu fermes le fichier Excel que tu as crées.

Voilà ... Avec ce code, tu le fais pour une date. Ou alors, tu y rajoutes une boucle pour qu'il ouvre les fichiers Excel cibles tant que les zones sont vides.


Avec ça, tu as toutes les pistes : tu n'as plus qu'à créer ton fichier Excel interface et à coder l'opération.

Bon courage,

Molenn
0
Rejoignez-nous