manipulation de plages de données dans excell

B

Bigdeal

Guest
Bonjour

Je dois automatiser une exportation de données d’un fichier source xls vers un fichier cible xls.

Le fichier source est un fichier xls que je reçois par mail tous les quinze jours.
A chaque transmission ce fichier change de nom.
Ce fichier source comporte plusieurs feuilles.
Le nombre de feuilles est variable, ainsi que leur nom à chaque réception d’une mise à jour.

Le fichier cible est un fichier nommé «CumulData.xls» que j’ai enregistré dans un répertoire de mon disque.
Le fichier cible ne comporte qu’une seule feuille nommée «Cumul».

Les données à exporter concerne deux champs toujours les mêmes : Identifiant, Montant.
Ces deux champs sont renseignés sur toutes les feuilles que peut comporter le fichier source.
Le nombre d’enregistrement est lui aussi variable à chaque mise à jour.

L’idée (ou plutôt la difficulté) serait de créer une macro exécutable de n’importe quel fichier excel.
Cette macro devrait :
- contrôler la présence d’un fichier *.xls (fichier source) que j’aurais placé dans répertoire nommé «BAL».
- Ouvrir ce fichier
- repérer sur chacune des feuilles du fichier la présence des deux champs (Identifiant, Montant)
- Copier les enregistrement renseignés au droit de ces champs.
- Les coller par ajout dans la feuille «Cumul» du fichier cible «CumulData.xls»
- Répéter l’opération tant qu’il y a de feuilles sur le fichier source.
-

EXP : si le fichier source comporte 3 feuilles distinctes, sur ces 3 feuilles ont repère les deux champs qui comporte 2 enregistrements chacun :
On obtient alors le résultat dans la feuille du fichier cible 3 feuilles * 2 enregistrements = 6 enregistrements.

Le résultat me permettra de lier ce fichier cible xls dans une base Access qui elle même mettra à jour une table par le biais d’une requête.

Je suis preneur de toute information sur le sujet, même partielle. Vos informations me seront précieuses pour me permettre de réaliser ce projet, n’hésitez pas à m’en parler.

Merci d’avance.
 
M

michel_m

Guest
Salut Bigdeal et le forum

Ci joint une proposition utilisant ADO (ton fichier source reste fermé)

il est IMPERATIF que tu coches la référence Microsoft activeX data object 2.x library dans l'éditeur Visual basic (outils-référence) x dépend des versions Excel (Xl2000 x=1)

j'ai considéré qu'il y avait qu'un seul fichier dans "bal"
donc à la fin, je range le fichier "source"en archives et j'emploie la méthode "movecopy": il se peut que ton antivirus râle comme quoi c'est suspect ce movecopy (ce n'est pas un virus, rassures toi)... a toi de voir si tu enlèves le fichier source manuellement ou pas.


nota: modifie la constante "chemin" pour l'adapter à ta config:
le dossier bigdeal est placé dans ma démo dans "mes documents" et comporte 2 sous dossier :
"bal" avec dedans "old"
"cumul" avec le fichier "source"

A+
Michel
 

Pièces jointes

  • bigdeal_xld.zip
    20.5 KB · Affichages: 186
B

Bigdeal

Guest
Bonjour Michel

Je te remercie à nouveau pour ton aide, elle m’est précieuse car ma situation est un peu ambiguë.
En effet je suis « autodidacte » et à l’origine mon métier n’est pas l’informatique. Jusqu’à présent mes fonctions relevaient plus de la planification et de la gestion de projet que de développement en VBA.
Cependant, au fil du temps, j’ai réalisé des applications (assez importantes) sous access notamment concernant la planification.
Je ne sais pas comment je me suis débrouillé, mais sans connaître le VBA, j’ai obtenu des résultats qui n’ont rien à envier ceux qui développent en VBA. Ces applications tournent toujours.
Il faut admettre que je dois sérieusement envisager l’achat d’ouvrage VBA et une bonne formation, car je ne pourrais pas tenir longtemps.
Voilà pour la partie qui m’est personnelle.

Professionnellement, j’ai perdu un peu de terrain sur la planification (contrats de la société en chute) et maintenant pour conserver mon boulot sur la région, on me propose de réaliser en marge quelques applications en sous-traitance.
C’est ce qui en fait ce m’amène à réaliser quelques petites prestations pour une client de mon chef.
A l’origine, il s’agissait de réaliser quelques requêtes de mise à jour dans une base de données acces, à l’aide de fichiers excel liés dans la bdd. Mais comme tu dois bien le savoir le "cahier de charges" est plus élastique que prévu !!!

L'ultime problème que je rencontre après avoir travaillé sur access est celui que j'ai exposé la semaine dernière, et à auquel tu as apporté un avancée considérable.

Je te transmets une copie du dossier, avec un échantillon de la bdd.

Ton code fonctionne correctement
C’est plutôt moi qui n’ai pas assez détaillé mes contraintes de gestion et il reste deux points qui me semble incontournables pour finaliser la procédure

1.- Les noms d’onglets sont de type alphanumériques mais comportent un – séparateur, exemple 32123-02D
par conséquent il y a un petit problème car le code ne prend en compte que les suites alphanumériques dans l'ordre (il me semble).
Est-il possible que la procédure parcoure les onglets sans consédérer la structure de leur nom, car elle ne trie pas lorsqu'il y a un tiret dans la suite numérique ?

2.- Les champs « Identifiant » et « Montant » ne se situent pas forcément dans les colonnes A et B.
Elles peuvent se situer à n’importe quel rang de la feuille.
Est-ce qu'il est possible de les repérer par leur nom plutôt que par leur p osition ?

3.- Le fichier xls cumul est lié dans les tables access,
afin que la requête de MAJ access ne soit pas perturbée par d'évenuels doublons,
il serait préférable que le fichier cumuldata.xls soit purgé avant chaque chargement des nouveaux identifiants et leurs montants.

Voilà, ces 3 points me semble très importants mais je ne suis vraiment pas à la hauteur pour y parvenir.

Je n'ai pas pu transmettre la bdd car "trop volumineux pour le forum" mais bon, ça ne représente qu'un échantillon et éventuellement une idée de la finalité du projet. Je la tiens en tous cas à disposition.


Donc voici ce que j'ai pu faire avec ton aide.
J'apprécierai bien sûr tes commentaires sur les 3 points que je viens d'écrire, si toutefois il y a une réponse au problème.
en tous cas si tu as lu jusqu'ici je te remercie, (je suis un peu bavard).
Ce qui est certain c'est que je prends vraiment conscience de mes lacunes en VBA.

Merci quand même pour tout !!!!

@ +
 

Pièces jointes

  • bigdeal.zip
    22.5 KB · Affichages: 100
  • bigdeal.zip
    22.5 KB · Affichages: 101
  • bigdeal.zip
    22.5 KB · Affichages: 103
B

Bigdeal

Guest
re .....
voilà : je dois te dire que j'ai pu régler le point 3 : problème de purge du fichier cumul.

je joins donc le nouveau répertoire zippé.
 

Pièces jointes

  • Bigdeal.zip
    25.4 KB · Affichages: 197
  • Bigdeal.zip
    25.4 KB · Affichages: 185
  • Bigdeal.zip
    25.4 KB · Affichages: 191

Discussions similaires

Réponses
9
Affichages
127
Réponses
5
Affichages
438
Réponses
2
Affichages
437
Réponses
46
Affichages
1 K

Statistiques des forums

Discussions
312 962
Messages
2 093 996
Membres
105 906
dernier inscrit
Evolugame