Aide Excel

Forum d'aide et d'entraide sur Excel : cours, astuces, tutoriaux...
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 Importer/consolider/compiler des données d'un autre fichier

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
quepuick
Membre


Nombre de messages : 8
Date d'inscription : 17/03/2010

MessageSujet: Importer/consolider/compiler des données d'un autre fichier   Mer 17 Mar à 17:44

Bonjour

Je viens vers vous pour trouver une solution pour le problème que je rencontre sur l'établissement d'un outil pour mon boulot.

J'essaie de trouver le moyen simple pour centraliser ou compiler sur une feuille excel les donnée présentes sur plusieurs fichiers excel mais tous batis sur le même modèle (même onglets, mêmes champs etc...).

Pour la petite histoire, j'ai plusieurs utilisateurs qui alimentent leur propre fichier et je souhaite centraliser leur données une fois par mois pour faire des statistiques.
Je voudrais éviter le copier coller à chaque fois des plages de données et j'aimerais automatiser un peu le tout.

L'idéal serait de pouvoir soit importer à partir du fichier centralisateur les données présentes dans un des onglets des différents fichiers (toujours le même onglet qui porte le même noms à chaque fois), soit exporter de chaque fichier utilisateur, la plage de données en question et la compiler sur mon fichier central.

Pouvez vous m'aider à construire cette macro?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
dachevid
Membre


Nombre de messages : 275
Date d'inscription : 05/09/2005

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Jeu 18 Mar à 19:37

Bonjour,

Question bête : le collage spécial avec liaison ne suffit pas ?
Il suffirait de prendre toutes les colonnes souhaitées dans un fichier puis de faire un collage avec liaison dans le fichier centralisateur, une feuille par fichier à récupérer.

Ensuite dans le fichier centralisateur on peut utiliser la commande consolider ou faire un tableau croisé dynamique à partir de toutes ces feuilles.
L'avantage c'est qu'on peut ainsi filtrer le résultat, en fonction du mois par exemple pour ne faire des stats qu'avec le mois en cours et ne pas garder toutes les valeurs collées avec liaison depuis le fichier de chaque utilisateur.

Sinon ici un exemple avec une macro dans le fichier Total, il faut aussi télécharger les fichiers Commercial et Utilisateur et les placer tous les trois dans le même dossier.
C'est une ébauche car il n'y a pas de stats, tableaux croisés et je n'efface pas le tableau qui pourrait déjà être présent.
Commercial : http://www.cijoint.fr/cjlink.php?file=cj201003/cijUaW9sb6.xls
Total : http://www.cijoint.fr/cjlink.php?file=cj201003/cijTgmAy1g.xls
Utilisateur : http://www.cijoint.fr/cjlink.php?file=cj201003/cijl7Ocbzy.xls

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
quepuick
Membre


Nombre de messages : 8
Date d'inscription : 17/03/2010

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Ven 19 Mar à 15:12

Ecoute, j'ai juste eu à ajouter à la macro le chemin des fichiers Utilisateur.xls et Commercial.xls et ça semble bien marcher.

Je vais essayer d'adapter cela sur mes fichier

Par contre comment je fais pour préciser l'onglet à copier dans chaque classeur utilisateur (ils se nomment tous BDD)?

un grand merci néanmoins pour la piste!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
dachevid
Membre


Nombre de messages : 275
Date d'inscription : 05/09/2005

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Sam 20 Mar à 1:08

J'ai modifié la macro dans Total.xls, elle sélectionne la feuille BDD dans les classeurs qu'elle ouvre :
Sheets("BDD").Select

Ici une version à jour :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijy5hOFLZ.xls

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
quepuick
Membre


Nombre de messages : 8
Date d'inscription : 17/03/2010

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Lun 22 Mar à 13:10

Merci!!! Ca marche impec!! J'ai pu adapter ta macro sur mes fichiers!

Maintenant que j'arrive à centraliser mes données, je cherche à pouvoir simplement créer un rapport à expédier sous forme de fichier par mail.

Grosso modo sur les données que j'importe, je cherche à trier les données par agence (colonne F) puis copier/coller ces données dans un fichier créé par agence puis enfin envoyer chaque fichier Agence par mail...

donc grosso modo:

- trier par agence
- copier les données par agence
- créer un nouveau fichier excel par agence
- coller pour chaque agence les données correspondante
- envoyer par mail à chaque agence leur fichier

là je galère..........
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
quepuick
Membre


Nombre de messages : 8
Date d'inscription : 17/03/2010

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Lun 22 Mar à 18:16

Bon j'ai un peu avancé sur la macro.
J'ai fait la macro qui générait les différents fichier (des copié collé)

J'en suis maintenant à faire la macro qui envoi chque fichier par mail.

Je bloque parce que la macro que j'ai envoi un seul fichier. Or moi je veux programmer l'envoi de plusieurs fichiers, donc plusieurs mail.

Agence1 => mail au destinataire1 avec en PJ le fichier AGENCE1
Agence2 => mail au destinataire2 avec en PJ AGENCE2
Agence3 => mail au destinataire3 avec en PJ AGENCE3
etc

tout en gardant le corps de texte
Voici ma macro:

Sub Envoi_rapports_mail()

Application.ScreenUpdating = False ' Désactive la mise à jour de l'écran pour accélérer l'ouverture et la fermeture des classeurs

Workbooks.Open Filename:="C:\Mes Documents\FD\other\Nouveau dossier\TESTMACRO\AGENCE1.xls"
Sheets("RAPPORT").Select


Dim Outlook As Object
Dim Mail As Object
Dim Dest As String
Dim Objet As String
Dim Corps As String

Dest = "Destinataire1"
Objet = "Rapport Agence"
'Exemple de corps de texte avec texte et sauts de ligne
Corps = "Bonjour, " & _
vbCrLf & vbCrLf & _
"Ci-joint le rapport pour le mois passé pour votre agence." & _
vbCrLf & vbCrLf & _
"Nous restons bien entendu à votre disposition pour tout renseignement complémentaire." & _
vbCrLf & vbCrLf & _
"Cordialement." & _
vbCrLf & vbCrLf


Set Outlook = CreateObject("Outlook.Application")
Set Mail = Outlook.CreateItem(0)

With Mail
.to = Dest
.CC = ""
.BCC = ""
.Subject = Objet
.Body = Corps
.Attachments.Add "C:\Mes Documents\FD\other\Nouveau dossier\TESTMACRO\AGENCE1.xls"
.Display
ActiveWindow.Close
End With

End Sub




Voila, ça ça marche pour un seul classeur Agence. Je veux que la macro lance autant de mail que d'agence.... une boucle peut être??
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
dachevid
Membre


Nombre de messages : 275
Date d'inscription : 05/09/2005

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Lun 22 Mar à 18:29

Ici un exemple avec une boucle avec une variable i qui modifie le nom du fichier à ouvrir ainsi que le destinataire du mail.

Sub Envoi_rapports_mail()

Application.ScreenUpdating = False ' Désactive la mise à jour de l'écran pour accélérer l'ouverture et la fermeture des classeurs

For i = 1 to Sheets.Count ' Fait une boucle autant de fois qu'il y a de feuilles dans le classeur de départ, ou i = 1 to 5 pour gérer 5 fichiers
Workbooks.Open Filename:="C:\Mes Documents\FD\other\Nouveau dossier\TESTMACRO\AGENCE" & i &".xls"
Sheets("RAPPORT").Select

Dim Outlook As Object , Mail As Object , Dest As String , Objet As String , Corps As String

Dest = "Destinataire" & i
Objet = "Rapport Agence"
'Exemple de corps de texte avec texte et sauts de ligne
Corps = "Bonjour, " & _
vbCrLf & vbCrLf & _
"Ci-joint le rapport pour le mois passé pour votre agence." & _
vbCrLf & vbCrLf & _
"Nous restons bien entendu à votre disposition pour tout renseignement complémentaire." & _
vbCrLf & vbCrLf & _
"Cordialement." & _
vbCrLf & vbCrLf


Set Outlook = CreateObject("Outlook.Application")
Set Mail = Outlook.CreateItem(0)

With Mail
.to = Dest
.Subject = Objet
.Body = Corps
.Attachments.Add "C:\Mes Documents\FD\other\Nouveau dossier\TESTMACRO\AGENCE" & i & ".xls"
.Display
ActiveWindow.Close
End With

Next i

End Sub

-----------------
A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
quepuick
Membre


Nombre de messages : 8
Date d'inscription : 17/03/2010

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Lun 22 Mar à 18:42

Très intéressante ta macro même si elle ne marche pas chez moi.

Effectivement je n'ai pas plusieurs feuilles dans un classeur, mais plusieurs classeurs dans un répértoire.
Et ces classeurs portent le nom de la ville (ex AUXERRE, MELUN, etc...)
Idem pour les Destinataires, ils portent de vrais nom...

Du coup forcément ça marche pas....

J'ai essayé en changeant les nom des agences par AGENCE1 etc.. et ça fonctionne.

Est ce qu'il est possible dans ta macro de remplacer le champs AGENCE" & i & ".xls par d'autres noms (AUXERRE, MELUN, ETAMPES...)?


IDem, possible de remplacer dans la macro le champs Dest = "DUPONT Bernard, DUPUIS Roger...." ect?

Tu vois ce que je veux dire?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
dachevid
Membre


Nombre de messages : 275
Date d'inscription : 05/09/2005

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Lun 22 Mar à 19:12

Pour les noms s'il faut récupérer le nom du classeur ouvert on peut utiliser :
ActiveWorkbook.Name

On peut bien sûr stocker ce nom dans une variable pour s'en servir plusieurs fois.
NomClasseur = ActiveWorkbook.Name

Pour le nom de l'onglet on peut se servir de :
ActiveSheet.Name

Si dans le classeur de départ qui lance la macro il y a une feuille Auxerre, une feuille Melun, etc. on peut faire une boucle pour ouvrir le classeur qui a le nom de la feuille :

For i = 2 To Sheets.Count ' Je commence à 2 dans mon exemple car je décide qu'elle contient le tableau général, à partir de la feuille 2 c'est le détail par agence
Workbooks.Open Filename:="C:\Mes Documents\FD\other\Nouveau dossier\TESTMACRO\AGENCE " & Sheets(i).Name &".xls"
' J'utilise Sheets(i).Name et pas ActiveSheet car je n'ai pas sélectionné la feuille (Sheets(i).Select) avant, donc elle n'est pas la feuille active.
....
... Tout le traitement pour chaque fichier
Next

Le fichier s'appelle AGENCE MELUN.XLS dans cet exemple, avec un espace entre Agence et le nom.
Pour le nom il faudrait savoir où le récupérer. S'il est en A1 sur chaque feuille alors Dest = Sheets(i).Range("A1").Value

A+ pour l'instant.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
quepuick
Membre


Nombre de messages : 8
Date d'inscription : 17/03/2010

MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   Mar 23 Mar à 0:57

Alors c'est ma méthodologie de départ qui n'est pas bonne?

En fait ma macro est faite pour justement trier les données par agences, créer un classeur pour chaque agence, et pas une feuille pour chaque dans le même classeur.

comme je l'indique j'ai 4 fichiers excel séparés, indépendant les uns des autres. Ce sont ces 4 fichiers que je souhaite envoyer. Et chaque fichiers est à envoyer à un seul destinataire.

Puisque ma macro de départ pour envoyer la pièce jointe "AUXERRE.xls" à M. DUPONT fonctionne, comment faire pour la répeter et prévoir d'envoyer la pj "PARIS.xls" à Mme DUPUIS?

Ou alors qu'est ce qui est le plus simple? Revoir ma macro qui créer les 4 fichiers séparés pour en fait n'en créer qu'un seul mais avec 4 feuilles différentes? C'est plus simple d'envoyer les feuilles?

merci encore pour ton aide
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Importer/consolider/compiler des données d'un autre fichier   

Revenir en haut Aller en bas
 
Importer/consolider/compiler des données d'un autre fichier
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Minecraft-like - stocker les données - SQL ou autre
» Import/export de données
» fichier swf
» transfert itineraire
» saisie de coordonnées pour terrain en 3d

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Aide Excel :: Entraide & apprentissage :: A l'aide...-
Sauter vers: