Lire des fichiers mensuels fermés

Fermé
d1michel Messages postés 3 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 13 novembre 2008 - 13 nov. 2008 à 18:39
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 20 nov. 2008 à 13:38
Bonjour,
Sous Excel 2000, je souhaite réaliser des statistiques dans un fichier « Bilan_annuel », en lisant les données saisies dans 12 fichiers mensuels fermés indicés de « 2008_01.xls » à « 2008_12.xls ». Les 13 fichiers sont dans le même répertoire.

Dans le fichier « Bilan_annuel » :
 Un clic, sur un bouton, lance la lecture automatique des données mensuelles
 La cellule « A1 » contient le « chemin du fichier » ex : E:\Asso\Statistiques\2008
 La cellule « A2 » contient « l’année de traitement » ex : 2008

 dans chaque fichier mensuel, les données sont lues en « D10:E19 » :
- celles du fichier « 2008_01.xls » sont copiées en « B10:C19 »
- celles du fichier « 2008_02.xls » sont copiées en « B20:C29 »
…. ainsi de suite jusqu’à
- celles du fichier « 2008_12.xls » sont copiées en « B120:C129 »

Pouvez vous m’aider, d’avance merci ... Michel
A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
13 nov. 2008 à 18:57
Bonjour,

C'est possible sans trop de pb avec du VBA et ADO

On aura besoin que de la cellule A2 puisque tous les fichiers sont dans le m^me dossier

en attendant, regarde si cette appli pourrait te convenir (il faudrait alors que le fichier recap ne soit pas dans le m^me répertoire):
https://www.cjoint.com/?lns0ThJqYs

il y a peut-être des références à adapter à XL2000 dans outils-référence de l'éditeur VBE...

Bonne soirée

Edit: quel est le nom de l'onglet dans les fichiers mensuels ?
0
d1michel Messages postés 3 Date d'inscription vendredi 5 septembre 2008 Statut Membre Dernière intervention 13 novembre 2008
13 nov. 2008 à 22:42
Michel merci pour ton envoi
jer vais essayer de l'adapter à mon cas
bonne soirée
Michel
0
Michel
j'ai regardé ton fichier qui cela fonctionne très bien
mais vu mon niveau en Vba je ne me sens pas de taille
à l'adapter à ma demande

en fait je sais lire manuellement une cellule dans un fichier fermé, exemple:
='E:\Asso\Stats\2008\[2008_01.xls]Résumé'!$K$15
je me demandais s'il était possible dans la formule ci dessus
de remplacer le chemin et le nom par le contenu de 2 cellules
dans lesquelles j'entrerais le chemin et le nom du fichier

mais peut être cela es il impossible sous Excel
Bon week-end
d1Michel
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > d1michel
15 nov. 2008 à 10:36
Bonjour,

Je vais regarder ca avant Lundi je pense,

Pourrais tu m'envoyer en PJ un fond de page de ton classeur source ( 2008_X): cela me facilitera 70% du travail

Pour joindre un fichier:
https://www.cjoint.com/
et tu colles le lien sur ta réponse.

ta solution par lien manuel est valable mais très lourde a mon avis....
0
Michel bonjour

https://www.cjoint.com/?lpmRKrMiDy

Les 12 fichiers mensuels ont la même structure
Je souhaiterai récupérer :
- dans la feuille « Saisie » …… les données C41:AA41
- dans la feuille « Saisie » …… les données C45:AF45
- dans la feuille « Résumé » ... les données K15:L33
- dans la feuille « Résumé » … les données N3:AF44

Une fois transcrites dans le fichier annuel, je les trie

Les 13 fichiers sont dans le même répertoire du type
- E:\Association\statstistiques\2008\2008_01.xls
Ces fichiers sont copiés sur différents ordinateurs, mais la partie du chemin E:\Association peut varier d’un ordi à l’autre c’est pourquoi je pensais en A1 lire le chemin par :
=GAUCHE(CELLULE("filename";$A$1);TROUVE("[";CELLULE("filename";$A$1))-2)
et en A2 l’année de traitement par
=GAUCHE(STXT(CELLULE("filename";$A$1);TROUVE("[";CELLULE("filename";$A$1))+1;SOMME(TROUVE({"[";"]"};CELLULE("filename";$A$1))*{-1;1})-1);4)
Ces éléments me servant de base pour lire les données dans les fichiers mensuels fermés

C’est sympa de m’apporter tes lumières, car à ce stade je suis un peu perdu
D’avance merci
d1michel
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > d1michel
15 nov. 2008 à 13:40
re,

encore 2 questions:

comment dispose t on ces quatre tableaux de données dans le fichier annuel ?
comment présenter les 12 mois en fonction de la question ci dessus ?

Le monde est petit: je suis natif de St Ger (rue St louis)!!
0
m@rina Messages postés 21078 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 13 novembre 2024 11 350
13 nov. 2008 à 23:11
Bonjour,

Je ferais juste une remarque par rapport à ADO : grosse méfiance !!!

Je constate, michel, que tu as donné une solution très élaborée, créée par d'illustres excelliens (;)))... mais je voulais juste donné mon sentiment par rapport à ADO car j'ai trop galéré avec ça et je suis revenue à une solution VBA de base. L'intérêt d'ADO c'est qu'il n'a pas besoin d'ouvrir les fichiers, mais on n'a pas que de bonnes surprises... Déjà, on perd tout le formatage. Mais, et surtout, il faut vraiment que tout soit rempli et homogène.

Mais bon, à tester néanmoins...

m@rina
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
13 nov. 2008 à 23:40
Bonjour,

Merci de m'incorporer dans les illustres Excelliens (je plaisante)!!! mais c'est vrai que @+Thierry et MichelXLD ( tu connais l'autre pseudo) maintenant MVP comme toi sont très agréables à travailler et avec eux l'aspect communauté des forums prend tout son sens: une fois c'est Thierry, une autre fois Michel ou moi qui avions fait avancer le schmilblic...sur cette appli ou d'autres

A mon avis, ADO, ADOX demande beaucoup de rigueur et d"analyse en amont du problème car on passe en gestion de base de données avec ses règles d'intitulé & d'unité (homogenéité comme tu le dis) de champ, de jointure,avec en sus le langage SQL particulièrement ch... notamment avec les dates.

Les difficultés viennent avec des solutions Excel ou Word où souvent on part tête baissée car il est relativement facile de rectifier une erreur de conception...
Je parles d'expérience car les erreurs de conception je sais bien faire!...

Maintenant pour extraire des données importantes rapidement de centaines de fichiers XL ou 40000 lignes sur une bases access d'environ 200000 lignes avec double jointure cela va va assez vite (<=1s et on est en Vba donc lent !!) et de plus,on rend la main pour d'autres utilisateurs dès l'extraction terminée...

Merci pour tes remarques, le débat est intéressant
0
m@rina Messages postés 21078 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 13 novembre 2024 11 350
15 nov. 2008 à 10:37
Bonjour Michel,

Oui, c'est vrai que ADO demande beaucoup de rigueur en amont, et c'est ce qu'il n'est pas toujours possible d'obtenir, évidemment en fonction du cas de chacun.

Personnellement, j'avais écrit une application qui justement devait récupérer plusieurs fois par semaines les données d'une dizaine de fichiers, tous faits pareils, sur la même structure, avec un remplissage via un formulaire très élaboré (construit aussi par moi-même, c'est te dire !!!;))), et remplis par différents utilisateurs.

Le problème était que toutes les cellules n'avaient pas un remplissage obligatoire, et que la récupération avec ADO donnait des choses vraiment aléatoires, en fonction du taux de remplissage des colonnes !!!

J'ai tellement galéré, comme je le disais, que j'ai fini par revenir à une solution basiquement VBA qui ouvre, copie-colle et ferme. Cela étant dit, avec un screenupdating false, c'était transparent.

Bien évidemment, ce n'est qu'un exemple, et comme tu le dis, pour récupérer des milliers de données de centaines de fichiers, c'est sans doute ce qui se fait de mieux !!

Bon week end ;)

m@rina
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
15 nov. 2008 à 11:08
Bonjour Marina,

Ci dessous une astuce non ADO pour lire une cellule dans un fichier fermé avec la macro dite de Walkenbach (tirée de mon grenier, les données "classeur" et "onglet" venant d'un userform) valable si peu de données à transfèrer du "fermé" à "recap"

onglet = Me.CbxFeuille.Value
zone = "A1:C30000"

If onglet = "" Then: Exit Sub

'-------on recherche le nom de champ inscrit dans la cellule A1 de chaque feuille

' modèle pour écrire param='C:\mes documents\riri\[Classeur1.xls]Classeur1Feuil3'!L1C1
param = "'" & chemin & "\[" & Me.CbxClasseur.Value & "]" & onglet & "'!R1C1"
' macro dite de John Walkenbach
champ = ExecuteExcel4Macro(param)


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 21078 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 13 novembre 2024 11 350
15 nov. 2008 à 11:15
Hello Michel,

Merci pour cette macro. Le pire, c'est qu'on doit avoir le même bouquin de John Walkenbach (un gros bouquin jaune, c'est ça ? :D)))

Je la mets de côté, car j'en aurai sans doute besoin un de ces jours...

m@rina
0