Transfert de données entre plusieurs feuilles

Résolu/Fermé
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009 - 12 janv. 2009 à 09:03
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009 - 23 janv. 2009 à 08:39
Bonjour,
Je cherche un moyen pour transferer régulièrement des données de plusieurs feuilles Excel vers une autre.

Aujourd'hui
Toutes mes feuilles ont la même struture (10 colonnes)
elles possèdent un nombre variables de lignes
elles sont stockées dans des fichiers excel différents (1 par utilisateur, soit 19)

à fréquence donnée je réalise la compilation en allant chercher les données dans chacun de ces fichiers et en les copiant vers ma feuille de destination qui reçoit en quelque sorte la somme de toutes les autres feuilles.

Voilà pour l'environnement opérationnel, j'espère avoir été clair ;-)

Maintenant j'ai besoin de faire cette "compilation" d'une manière la plus automatisée possible afin d'éviter de faire ces copies de données à répétition.

Est-ce réalisable par une macro? et si oui comment?

D'avance merci de vos lumières :-)

Salutations,
frw
A voir également:

7 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 303
13 janv. 2009 à 14:55
Salut Franck,

a la bourre mais j'ai eu des soucis avec le transfert des heures ( toujours pas compris pourquoi, d'ailleurs!)
ci joint maquette avec la feuille de destination (report)
et dans un sous-dossier 'ccm) 3 utilisateurs (AB,BB,CC)

dans un 1° temps teste la maquette en indiquant le chemin où tu l'as placée dans l'editeur VBE (alt F11)
constante: chemin

en extrait voici le binz
Option Explicit
'Const chemin As String = "X:\.... " ' a écrire le chemin réeel sous cette formule (non en url: serveuur//...)
Const onglet As String = "2009"
Const plage As String = "A1:J500"
'provisoire pour constuction et tests des reports
Const chemin As String = "D:\documents\ccm" ' POUR ESSAI A MODIFIER SUIVANT  TON ARBORESCENCE


tu me dis, notamment pour le coup de heures de la colonne D (ch'uis inquiet)
1
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
14 janv. 2009 à 15:52
Salut Michel,

à priori je te dis merci (déjà pour le temps que tu y as passé).

MAIS, je ne vois pas la maquette dont tu parles... où dois-je aller pour la télécharger??
(désolé je débute sur ce forum et je n'ai certainement pas les bons réflexes ;-) )

a+
franck
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 janv. 2009 à 17:37
Salut Franck

Y'avait longtemps que je n'avais pas oublié de coller le lien!
j'vieillis mal... ;-)
http://www.cijoint.fr/cjlink.php?file=cj200901/cijoeCO2eF.zip
1
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
16 janv. 2009 à 08:35
Merci Michel,

Je suis "un peu" chargé en ce moment dont je n'ai pas le temps de m'y remettre :-( , mais je te suis reconnaissant pour ton aide et te reviens asap dès que je peux me "poser" et retravailler sur le sujet.

Bien amicalement,
Franck
0
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
21 janv. 2009 à 09:10
Salut Michel,

bon j'ai un peu de temps là, alors je m'y mets , j'ai téléchargé le dossier zip et vais explorer ton travail.

je te tiens au courant si ça répond bien ;-)

a++
Franck
0
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
21 janv. 2009 à 10:39
Re salut !

Bon, j'ai fait un premier test avec des données provisoires et ça a l'air de marcher comme il faut !!

concernant les dates et heures je n'ai pas noté de pblm, me reste à voir si comment faire une recopie de formule sur les nouvelles lignes de la feuille d'arrivée en séquence avec le merge des données externes.

Je te reviens sur ce même post si je détecte des effets "indésirables" à partir de mes données réelles.

Encore merci beaucoup pour ton aide.

Amicalement,
Franck
0
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
21 janv. 2009 à 11:11
j'ai intégré mes données réelles et ça marche NICKEL.

SAUF ! ( ben oui faut bien qu'il y ait un truc qui coinçouille :-) ) si une des feuilles externes est ouverte et donc en "lecture seule"....

D'où ma question : Quelle est l'attribut pour forcer l'ouverture en lecture seule par défaut ?

d'avance merci pour ton aide

Franck
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 janv. 2009 à 10:16
Bonjour,

Oui, c'est faisable mais il faut des renseignements précis:

- quelle Version Excel ?
- Quel est l'emplacements des fichiers utilisateurs et de destination ?
- quelles sont les colonnes concernées ?
- quelle est le type de données (texte, nombre, date-heures, booléen...)
-nombre moyen approximatif de lignes à transférer par utilisateur
0
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
12 janv. 2009 à 11:08
Merci Michel de te pencher sur mon problème :-)

voici les infos que tu demandes:
version d'excel : excel 2003

fichiers utilisateurs : sur un répertoire réseau "\\serveur\pilotage\ap\initiales_utilisateur.xls" feuille nommée "2009"
fichier de compilation : dans mon dossier "c:mes documents\pilotage.xls" feuille nommée "2009"

colonnes : A à J
A : Date (jj/mm/aaaa)
B : Texte (avec matrice de validation)
C : Texte (avec matrice de validation)
D : Heure (37:30:55)
E : Texte (avec matrice de validation)
F : Texte (libre)
G : Texte (libre)
H : Valeur numérique (entier simple)
I : Texte (libre)
J : Texte (libre)

environs 100 lignes à transférer par feuille source.

Voilà pour les infos, à ta dispo pour d'autres précision

a+
frw
0

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

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 janv. 2009 à 11:28
OK, merci,

Je te ferai une maquette avec bien entendu des emplacements à adapter
au 1° abord ( pb peut-être avec les dates et heures)je te proposerai une solution par fichiers fermés (ADO+SQL) mais en fin d'aprèm ou demain.
0
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
12 janv. 2009 à 11:40
Ok pas de problème et encore merci pour ton aide :-)

Cordialement,
Franck
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 janv. 2009 à 11:34
Salut Frank

Non, il faut que tous les classeurs sources soient fermés...

on peut tester au départ les fichiers par une première boucle "while dir" et dénoncer les fautifs, la macro sera alors sera interrompue (pas de transferts partiels)...
tu me dis si ça t'intéresse
0
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
22 janv. 2009 à 07:47
Salut Michel,

à priori je m'en sorts en faisant une copie dans un répertoire mirroir sur lequel je fais ensuite (et sans risque de fichier déjà ouvert) l'extraction des données. à ton écoute si tu vois une meilleure idée pour ne pas avoir à interrompre le processus et surtout ne pas risquer d'avoir des données partielles à l'arrivée ;-)

il me reste sinon à gérer les imports successifs, et donc à marquer d'une manière ou d'une autre une date de début du select. je pense faire une initialisation d'une date de référence user par user à partir de la feuille cible (report) et n'extraire que les lignes postérieures à cette valeur dans les fichiers sources.... Pareil, si tu as une idée plus pertinente je t'en remercie d'avance.

Cordialement,
Franck
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
22 janv. 2009 à 11:18
bonjour,

imports successifs.

pour ma part, je me casserai pas la t^te:

Sub rechercher_utilisateurs()
Dim fichier As String

'force dans le sous dossier des utilisateurs
ChDir chemin
'fige l'écran
Application.ScreenUpdating = False
Range("A2:J65536").ClearContents


recopier 10000 lignes au lieu de 100 ne prend pas beaucoup plus de temps avec SQL
0
freiwan Messages postés 14 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
23 janv. 2009 à 08:39
Salut Michel,

Certes, la méthode annule et remplace est idéalement la plus simple. J'ai juste un soucis car je constate que certaines feuilles ne sont pas tjrs bien renseignée : il y a des lignes vides (comment supprimer les lignes vides facilement après le chargement?) et aussi des infos où une recopie de la cellule du dessus serait nécessaire (par exemple plutot que de répéter la date ils mettent une fois la date par nouvelle journée (mais là j'ai fait le bout de prog pour compléter donc c'est bon)

bon je vais tester ta méthode anti cassage de tête :-) et te tiens au courant.

a+
franck
0