Transfert de données entre plusieurs feuilles

Résolu
freiwan Messages postés 14 Statut Membre -  
freiwan Messages postés 14 Statut Membre -
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

7 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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 Statut Membre
 
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 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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 Statut Membre
 
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 Statut Membre
 
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 Statut Membre
 
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 Statut Membre
 
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 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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 Statut Membre
 
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 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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 Statut Membre
 
Ok pas de problème et encore merci pour ton aide :-)

Cordialement,
Franck
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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 Statut Membre
 
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 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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 Statut Membre
 
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