Vba pour automatiser un tableau dynamique croisée

Fermé
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014 - 8 sept. 2014 à 23:05
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 - 18 sept. 2014 à 22:16
Je suis débutant en vba... et j'ai besoin d'aide.
En fait j'ai plusieurs 30 fichiers txt qui chacun contient:
=> 4 champs commun a tous (mois, type1, type 2, type3)
=> X champs calculés (chiffre d'affaire 1, chiffre d'affaire 2, .... chiffre d'affaire x)
Mon souhait est d'avoir programme vba qui me demande de choisir un fichier et de pouvoir exécuter les actions suivantes:
1- Aller recupérer le fichier txt (séparateur ;), l'importer dans un onglet à nommer "données"
2- Créer un 1er tableau dynamique dans un onglet à nommer "Chiffres" qui fait les sommes des chiffres par mois avec possiblité de filtre selon type à choisir. Exemple:
Mois M1 M2 M3 ............ Mx
somme (chiffre d'affaire 1) 34 32 38 ............ 35
somme (chiffre d'affaire 2) 12 16 18 ............ 15
.......................................... ...................................
somme (chiffre d'affaire x) 64 62 68 ............ 65

3- Créer un 2ème tableau dynamique dans un onglet à nommer "Tendances" qui fait les % de variation du mois par rapport au mois précédent avec possiblité de filtre selon type à choisir. Exemple:
Mois M1 M2 M3 ............ Mx
somme (chiffre d'affaire 1) 1,02% -1,02% 5,02%............ 3,50%
somme (chiffre d'affaire 1) 3,02% 4,02% 1,02%............ 2,50%
.......................................... ...................................
somme (chiffre d'affaire 1) 1,02% -1,02% 5,02%............ 3,50%

4- Enregistrer et donner le même nom que le fichier txt

5- Revenir au point 1

Merci d'avance pour votre aide

22 réponses

docsteph Messages postés 8765 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 19 septembre 2021 1 113
8 sept. 2014 à 23:08
c'est destiné a quel usage?
0
Pour un usage personnel (suivi des CA dune boutique)
0
Pour un usage personnel (suivi des CA dune boutique)
0
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014
9 sept. 2014 à 08:03
Pour un usage personnel (usage des CA dune boutique)
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
9 sept. 2014 à 16:47
Bonjour,
Et pourquoi ne pas faire pas à pas manuellement et si répétitif alors utiliser l'enregistreur de macro d'Excel....!
0
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014
9 sept. 2014 à 19:17
En fait jai plus 30 fichiers.
Lobjectif est davoir un bouton qui me permet daller choisir le fichier souhaité et faire les 3 actions...
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
9 sept. 2014 à 21:38
En fait, Bonjour,
Ce que j'ai mis : si répétitif alors utiliser l'enregistreur de macro d'Excel.... ; ce qui veut dire que vous réalisez les diverses opérations une fois pour 1 fichier. Ensuite il vous suffira de relancer la macro.

0
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014
9 sept. 2014 à 23:13
Oui mais si je veux qu'il le fasse une seule fois pour tous les fichiers, c'est à dire, une fois que j'appuie sur le bouton, la macro exécute:
1- cherche chaque fichier txt,
2- l'importe dans excel en créant un onglet "données"
3- crée le 1er tableau dynamique croisé et le nommer "chiffres"
4- crée le 2ème tableau dynamique croisé et le nommer "tendances"
5- enregistre et ferme le fichier excel en le donnant le nom du fichier txt

NB: je sais qu'il faut une boucle et ce que je ne sais pas faire même si j'utilise l'enregistreur macro...
0

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

Posez votre question
Bonsoir,
"c'est destiné a quel usage?", docsteph a raison de s'interroger parce que c'est un assez gros boulot, et il faudrait que tu mettes un peu du tien. A moins que tu souhaites une livraison à domicile.
J'ai eu à faire un truc qui y ressemble. Plusieurs semaines en pratiquant progressivement. Mais je ne suis pas un crac et c'était en parallèle.
La manière de faire est de procéder par plusieurs petites macros qui s'enchainent, puis une dernière qui les récapitule toutes. Et à la fin une commande générale qui lance le processus complet.
LePinguou a raison "vous réalisez les diverses opérations une fois pour 1 fichier. Ensuite il vous suffira de relancer la macro. "
Ce n'est pas que je refuse de te transmettre mon travail, mais à l'arrivée le résultat est tout de même très spécifique et pas distribuable tel quel. Pour toi, c'est pareil. De toutes façons, c'est infaisable sans avoir les fichiers d'origine sous la main. Alors pour le reste, la seule et meilleure solution est d'utiliser l'enregistreur et de se lancer pas à pas.
Bon courage.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
10 sept. 2014 à 09:57
Bonjour GAGOUN09,
Ah j'ai oublié ...bonjour.
Si vous avez déjà la procédure pour le premier fichier [txt], vous pouvez mettre une copie sur votre prochain message et je vous indiquerez ou insérer la boucle.
Une réponse plus précise sans connaitre l'architecture des différents dossiers (répertoire, fichier, classeur...) n'est pas possible.

0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
10 sept. 2014 à 21:44
Bonjour,
Un début de proposition pour sélectionner le fichier texte à traiter : https://www.cjoint.com/?3IkvU13mJAl
Cela vous permettra de voir la complexité du problème sans avoir d'autres renseignements plus précis de votre part.

0
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014
11 sept. 2014 à 00:18
Voici le lien pour voir mon exemple :
http://cjoint.com/?DIkx6jAX13j

En fait voici ce que je souhaite:

#- fichier1
1- importer le fichier dans excel et nommer l'onglet "fichier1"
2- creer un 1er tableau dynamique croisé à nommer "chiffres"
3- créer un 2ème tableau dynamique croisé à nommer "tendances"

NB: Répeter ces 3 actions pour les fichiers se trouvant dans un répertoire indiqué

Merci encore de votre aide
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
11 sept. 2014 à 10:03
Bonjour, bonjour et re bonjour,
Pas un mot sur mon exemple c'est vraiment super... !
Votre fichier est compresser en RAR donc impossible de l'extraire pour moi, le mieux serait en ZIP !

0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
11 sept. 2014 à 23:10
Bonjour,
J'attends toujours le fichier compressée en ZIP pour poursuivre.... !

0
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014
12 sept. 2014 à 01:02
VOIVI LE LIEN ZIP

http://cjoint.com/?DImbdQr51BP

MERCI D AVANCE DE VOTRE AIDE
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
Modifié par Le Pingou le 12/09/2014 à 22:12
Bonjour,
Merci pour le fichier exemple, le texte en majuscule et le bonjour....

Dans un premier temps vous voulez :
1- cherche chaque fichier txt,
2- l'importe dans Excel en créant un onglet "données"
3- crée le 1er tableau dynamique croisé et le nommer "chiffres"
4- crée le 2ème tableau dynamique croisé et le nommer "tendances"
5- enregistre et ferme le fichier Excel en le donnant le nom du fichier txt


Ce qui pour moi correspond à un classeur par nom de fichier texte.

Et maintenant selon votre exemple :
0- fichier1
1- importer le fichier dans Excel et nommer l'onglet "fichier1"
2- créer un 1er tableau dynamique croisé à nommer "chiffres"
3- créer un 2ème tableau dynamique croisé à nommer "tendances"

NB: Répéter ces 3 actions pour les fichiers se trouvant dans un répertoire indiqué


Donc un classeur pour 3 fichiers textes(dont le répertoire n'est pas indiqué...) avec colonne 5 et suivantes ( CA(...) / DUREE / PO )

Qu'elle est le cas correct tout en sachant que vous avez indiqué qu'il y a 30 fichiers textes à traiter ?

Note : je n'ai trouvez aucune macro selon la proposition que je vous ai indiqué mis à part 2 procédures [Sub Extract()] et [Sub Extraction()] qui n'ont rien à voir avec cette application.


Salutations.
Le Pingou
0
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014
12 sept. 2014 à 22:34
Bonjour,

Un grand merci du temps que vous avez bien voulu prendre pour bien analyser mon souhait...

# La différence entre les 2 cas est:
- dans le 1er cas, je considère il y a aura un classeur pour chaque fichier traité
- dans le 2ème cas tous les fichiers sont traités dans un même classeur

# En ce qui concerne les noms des onglets, çà n'a pas d'importance pour mois.

# Entre les 2 cas, je préfère avoir une solution pour le 2ème.

# Pour mon fichier joint, il s'agissait d'un exemple (Donc 3 fichiers me semblaient suffir) . Par contre les champs et leur nombre pour un fichier peuvent bien être différents par rapport à un autre (d'ou les exemples CA, Duree, PO).

Encore merci pour toute proposition (macro programme, des bouts de macro, ect...)

Salutations,
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
12 sept. 2014 à 23:01
Bonjour,
Merci pour les informations.
Je serai absent pour la fin de semaine, si tout va bien une proposition dès lundi.
Bon week-end

0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
14 sept. 2014 à 22:33
Bonjour,
Ma proposition partielle (sans tableau croisé dynamique), avec un classeur de base ou vous entrer l'adresse du répertoire des fichiers textes et ensuite clic sur le bouton de commande ovale bleu.
Vous recevez un nouveau classeur nommé et enregistré sous le même répertoire que le classeur de base.
Je réaliserai la suite selon vos remarques constructives.... !
Ma proposition : https://www.cjoint.com/?3IowJeqNsYl
Bonne découverte... !

0
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014
15 sept. 2014 à 20:41
Bonjour,

Votre proposition est plus que ce que j'attendais... Vraiment un grand merci...
Je ne sais comment vous remercier
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
15 sept. 2014 à 21:11
Bonjour,
Merci pour l'information.
Je vais intégrer la création des TCD et j'aimerais savoir si les noms des fichiers textes ont toujours un numéro en fin de nom (fichiers xyz 1.txt, chiffre xyz 12.txt ....) Oui / Non ?

0
GAGOUN09 Messages postés 10 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 18 septembre 2014
15 sept. 2014 à 21:15
Bonjour,

Oui ils sont tous un numéro...

Salutations,
Gagoun09
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
15 sept. 2014 à 21:57
Bonjour,
Merci, donc le numéro à la fin.
C'est parfait, la proposition va suivre.
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
15 sept. 2014 à 23:14
Bonjour,
Je vous laisse la découverte et les contrôles si tout est correct... !
Ma proposition : https://www.cjoint.com/?3Ipxq2ir9uP

0