Création automatisée de tableaux

Bonjour à tous,

Je poste mon message ici afin de vous exposer mon problème.

J'ai une application qui me génère tous les jours un tableau excel A.

Une deuxième autre application me génère, avec la même fréquence un tableau excel B.

Je dois réaliser, à partir des données contenues dans le tableau A et le tableau B, un tableau C.

À la fin de la semaine, je disposerai donc d'un tableau A, B et C pour chaque jour (il ne s'agit pas de mise à jour des tableaux, mais bien de création de nouveaux).

La réalisation ne s'arrête malheureusement pas là..

En effet, tout ce mécanisme doit être automatisé: le tableau C doit se générer tous les jours.

Je visualise la voie à suivre pour créer mon tableau C, d'autant que les opérations à effectuer à partir de A et B sont simples (addition, soustraction, moyenne).

En revanche, je ne sais pas quel chemin prendre, pour automatiser/planifier cela ? Est-ce avec Excel seul ? Faut-il réaliser un script VBA qui s'exécute via le planificateur windows ? Est-ce seulement possible ?

Merci de votre aide par avance.

Bonjour,

Depuis ton fichier A dans lequel tu aurais ta macro ...

1. ta macro ouvrirait le Fichier B

2. ensuite elle effectuerait toutes les opérations qui te nécessaires

3. finalement, elle sauverait dans un Fichier C, les éléments qu'elle aurait préparé ...

En conclusion, ton traitement peut entièrement être automatisé ... dans Excel ...

Bonjour James007 et merci pour la réponse.

Si je suis bien, le fichier A devrait contenir la macro.

Cependant, le fichier A va être généré tous les jours par une application qui ne fait rien d'autre qu'écrire des données de statistiques (de la journée). Je n'ai pas la main sur la façon dont est généré ce fichier.

J'aurai bien la possibilité de créer la macro dans le fichier A du jour J, mais cela ne serait alors plus automatisé. En effet, il faudrait alors recréer la macro dans le fichier A du J+1, J+2 ...

Pour continuer sur ce chemin-là, est-il possible par exemple, de créer un script qui exécuterait une macro avec pour argument le fichier A et B ?

Re,

Si le Fichier A comme le Fichier B sont des fichiers sources ... il ne te reste qu'à créer le Fichier Z qui sera la tour de contrôle... avec la macro qui ouvrira A, puis B ... et qui engendra C ...

Ok, on y vient.

Prenons un exemple concret mais simplifié:

Ce mardi, mes deux applications ont créés deux fichiers: "fichierA_mardi.xls" et "fichierB_mardi.xls"

Je crée un tableau "fichierC_mardi.xls" avec la macro qui va chercher les infos dans "fichierA_mardi.xls" et "fichierB_mardi.xls".

Demain, mes deux applications vont créer deux fichiers: "fichierA_mercredi.xls" et "fichierB_mercredi.xls".

Il en ira de même pour les autre jours de la semaine.

Comment faire pour obtenir fichierC_jour.xls de façon automatique ? Sans que j'ai besoin de créer ce fichier moi-même et d'exécuter une macro ?

Merci en tout cas de l'intérêt que tu portes à mon problème.

Re,

Je comprends ta question ... il existe plusieurs façons de "scheduler" une macro ...

Cela étant dit ... Tu as intérêt à saucissonner ton projet ... et à le bâtir ... étape après étape ...

Ce que tu dois savoir, avant de t'investir ... c'est que ton idée est structurellement tout à fait réalisable ...

Merci de la réponse.

Je ne suis pas (encore) très familier avec Excel et ne connait pas vraiment ses possibilités et ses limites. (Je suis plus à l'aise avec le script shell ou C).

Avant de foncer tête baisser dans ce projet, je cherche vraiment à savoir si c'est réalisable, et par le biais de quel outil tiers, ou quel mécanisme intégré, je peux générer quotidiennement ce fichier.

Le but final étant, en fait, qu'une liste d'utilisateurs reçoivent ce fichier dans sa boite mail tous les matins.

Re,

Je ne sais pas si mon opinion devrait te rasssurer ...(ou t'inquiéter...) mais dans la mesure où tu connais la programmation ...

Excel et le language VBA sont très puissants ...

La seule vraie limite d'Excel ... est la personne qui s'assied devant ...

Bonjour a tous

pour compléter les propos de James, il faudrait savoir comment est fabriquer le nom d'enregistrement des fichiers à partir de tes deux applications ???? tu parles de fichierAmercredi, fichierBmercredi, mais est ce vraiment le cas ?? une solution simple serait si cela est possible de faire en sorte que ces fichiers soient enregistrer sous la forme ficherA_06-01-2015.xlsx

ou quelque que chose comme cela, cela simplifierais les choses

fred

Bonjour fred2406,

Alors c'est pire que ça...

Les fichiers A et B sont nommés de la façon suivante: fichierA_01-06-15 20'20'30.xls

soit la date + heure dans le nom du fichier.

Aucun moyen de modifier le nom de sortie de ces fichiers...

a bah ça c'est pas grave il suffira seulement récupérer le nom su fichier et supprimer des caractères avant et après pour avoir la date.... et la version du fichier (A ou B) avec de la manipulation de chaine de caractère.

donc cela repond a ta question :

Comment faire pour obtenir fichierC_jour.xls de façon automatique ? Sans que j'ai besoin de créer ce fichier moi-même et d'exécuter une macro ?

pour ce qui est de lancer un fichier avec le planificateur de tache ne sais pas, mais je pense que cela reste possible

fred

Re,

Effectivement .... si la date se trouve sous une forme ou sous une autre dans le nom du fichier ... cela facilte le traitement ...

mais si le nom ne change pas ...on peut également travailler avec la date de création du fichier pour être sûr de toujours traiter le plus récent ...

Bonjour,

Mon projet a bien avancé et j'ai décidé de passer en effet par du VBA mais également par du MS Access.

Je récupère les informations utiles dans les différents classeurs excel puis je les incrémente dans une base access.

Je rencontre un soucis (de syntaxe surement) afin d'éviter la création d'entrée en doublon dans la table access.

L'approvisionnement dans la base de données doit être soumis à deux conditions (un nom et une date).

Pour cela j'utilise la méthode suivante:

DCount("*", "[TABLE]", ("[Nom] LIKE '" & oWSht.Cells(i, 1) & "'")) = 0 Then
DCount("*", "[TABLE]", ("[Date] LIKE '" & oWSht.Cells(i, 2) & "'")) = 0 Then

En testant l'existence de l'entrée "Nom" puis l'existence de l'entrée "Date" individuellement, le code passe, mais si j'essaie de réunir les conditions avec "And"... crac!

Quelqu'un saurait-il comment écrire les deux conditions en une fois ?

Merci par avance.

J'ai finalement contourné le problème...

J'ai créé un champ "ID" dans ma table dans lequel je concatène "Nom" avec "Date", me générant une valeur qui devrait être unique.

J'effectue ensuite ma condition sur cette unique valeur.

L'ID n'est pas très "joli", mais ça a le mérite de marcher...

Bonjour,

L'identifiant Unique n'est pas du tout une mauvaise idée comme tu le laisses entendre ...

Bien au contraire, c'est non seulement une excellente idée ... mais certainement la plus pertinente ...

Bonjour,

Le projet se poursuit (et se termine presque) et je coince sur quelque chose de tout bête:

Mes 2 fichiers sont nommés en fonction de la date de la veille.

Je crée donc une variable me permettant de récupérer la date d'hier de la façon suivante:

Dim date_jour As Date
Dim date_hier As Date
date_hier = date_jour - 1

Mon soucis est que dans un de mes fichiers, le format de la date est du type JJ-MM-AA et dans l'autre fichier du type JJ_MM_AA.

J'ai beau indiqué le format comme suit:

date_jour = Format(Now, "dd-mm-yy")

Il m'affiche la date systématiquement de la façon JJ-MM-AAAA.

Où fais-je erreur ?

Bonjour,

Concernant les dates ... tu dois faire attention car ce ne sont jamais des dates ... la preuve tu utilises Format ... pour les formatter ..

Il s'agit de nombres ... et je te conseille dans tes macros d'utiliser DateSerial() pour éviter toutes les confusions possibles ...

Merci pour la réponse.

J'ai donc appliqué la fonction suivante:

date_hier = Format(DateAdd("d", -1, Date), "dd-mm-yy")

Et ça me renvoie encore 29/01/2015 au lieu de mon 29-01-15 attendu.

joreitapo a écrit :

Merci pour la réponse.

J'ai donc appliqué la fonction suivante:

date_hier = Format(DateAdd("d", -1, Date), "dd-mm-yy")

Et ça me renvoie encore 29/01/2015 au lieu de mon 29-01-15 attendu.

je te conseille dans tes macros d'utiliser DateSerial()

Alors je me corrige tout seul.

La fonction me renvoie la date au bon format si je ne déclare pas ma variable "As Date".

Rechercher des sujets similaires à "creation automatisee tableaux"