| Importer/consolider/compiler des données d'un autre fichier | |
|
|
Auteur | Message |
---|
quepuick Membre
Nombre de messages : 8 Date d'inscription : 17/03/2010
| Sujet: 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? | |
|
| |
dachevid Membre
Nombre de messages : 275 Date d'inscription : 05/09/2005
| Sujet: 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+ | |
|
| |
quepuick Membre
Nombre de messages : 8 Date d'inscription : 17/03/2010
| Sujet: 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!! | |
|
| |
dachevid Membre
Nombre de messages : 275 Date d'inscription : 05/09/2005
| Sujet: 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+ | |
|
| |
quepuick Membre
Nombre de messages : 8 Date d'inscription : 17/03/2010
| Sujet: 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.......... | |
|
| |
quepuick Membre
Nombre de messages : 8 Date d'inscription : 17/03/2010
| Sujet: 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?? | |
|
| |
dachevid Membre
Nombre de messages : 275 Date d'inscription : 05/09/2005
| Sujet: 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+ | |
|
| |
quepuick Membre
Nombre de messages : 8 Date d'inscription : 17/03/2010
| Sujet: 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? | |
|
| |
dachevid Membre
Nombre de messages : 275 Date d'inscription : 05/09/2005
| Sujet: 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. | |
|
| |
quepuick Membre
Nombre de messages : 8 Date d'inscription : 17/03/2010
| Sujet: 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 | |
|
| |
Contenu sponsorisé
| Sujet: Re: Importer/consolider/compiler des données d'un autre fichier | |
| |
|
| |
| Importer/consolider/compiler des données d'un autre fichier | |
|