Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2589 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Création d'une macro VBA complexe HELP !!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création d'une macro VBA complexe HELP !!!

n°1865636
V i n c e ​n t
4 6 6 6 4
Posté le 25-03-2009 à 12:19:21  profilanswer
 

Bonjour,  
J’ai besoin de votre aide pour la création du macro VBA relativement complexe surtout quand on y connaît rien du tout.
Il faudrait que je crée un fichier regroupant des informations de 2 autres fichiers.
Un fichier étant une base de données et l’autre des résultats.  
 
Ex :  
 
Base de données:
AA | Granny | Pomme | Fruit
AB | Golden | Pomme | Fruit
AC | Gala | Pomme | Fruit
BA | Orange | Agrume | Fruit
BB | Clémentine | Agrume| Fruit
CA | Bintje | Pomme de terre |Légume
CB | Ratte | Pomme de terre |Légume
DA |Choux de bruxelle | Choux | Légume
DB | Choufleur |Choux | Légume|
 
Ventes :  
AA | 12
AB | 5
AC | 9
BA | 33
BB | 2
CA | 12
CB | 11
DA | 15
DB | 1  
 
Résultat : (tableau généré par la macro)
Pommes | 26
Agrume | 35
TOTAL FRUIT | 61
Pomme de terre | 23
Choux | 16
TOTAL LEGUME | 39
 
La macro doit comparer des données de la base et des ventes pour afficher le bon résultat sur la nouvelle feuille. Si vous pouvez m’aider a construite cette macro, je vous en remercie 1000 fois.  
 
Salutations.  
 
Vincent.


Message édité par V i n c e n t le 30-03-2009 à 10:01:57
mood
Publicité
Posté le 25-03-2009 à 12:19:21  profilanswer
 

n°1865963
V i n c e ​n t
4 6 6 6 4
Posté le 26-03-2009 à 07:51:29  profilanswer
 

Personne pour me donner un coup de main ?

n°1866502
SuppotDeSa​Tante
Aka dje69r
Posté le 27-03-2009 à 10:39:28  profilanswer
 

Bonjour
 
Tu devrais encore plus condenser ton message... Ce qui est rigolo vu que ton pseudo est tres aéré...
Bref, ca donne pas envie de lire en somme.
 
Un petit screen ou meme le fichier pour reellement comprendre a quoi ressemble et le dictionnaire et ce qu'il y a dedans ?
 
Cordialement


Message édité par SuppotDeSaTante le 27-03-2009 à 10:41:00

---------------
Soyez malin, louez entre voisins !
n°1867285
V i n c e ​n t
4 6 6 6 4
Posté le 30-03-2009 à 09:40:30  profilanswer
 

Zut, j'avais même pas fait attention que ça s'affichait comme ça.
Bonne remarque, je modifie immédiatement.


Message édité par V i n c e n t le 30-03-2009 à 10:02:37
n°1867312
SuppotDeSa​Tante
Aka dje69r
Posté le 30-03-2009 à 10:51:53  profilanswer
 

Bonjour
 
Je ne vois pas trop en quoi cela est tres compliqué, car réellement ton 1er fichier on s'en fou non ? Il definit seulement les clés pour chaque entité. Fruit commence par A ou B, Pomme de terre par C etc.
 
Tu prends ton second fichier, et tu :  

  • sommes tout ce qui commence par A pour avoir le total des Pommes
  • sommes tout ce qui commence par B pour avoir le total des Agrumes
  • sommes tout ce qui commence par A ou B pour avoir le total des Fruits
  • sommes tout ce qui commence par C pour avoir le total des Pommes de terre
  • sommes tout ce qui commence par D pour avoir le total des Choux
  • sommes tout ce qui commence par C ou D pour avoir le total des Legumes


Meme pas besoin de macro pour ca...  
Une liaison de donnée, un SOMME.SI, un SOUS.TOTAL ou a la limite un TDC (Tableau croisé dynamique) et tu as tout ce dont tu as besoin. (Si tu veux pas toucher au fichier de resultat, sinon tu le fais directement dedans.)
 
Tu créés un nouveau fichier Excel, tu vas dans Données, Créer une requete, tu selectionnes fichier Excel, Bouton Ok, tu vas chercher ton fichier, tu selectionnes les champs qui t'importent, tu selectionnes la cellule ou mettre les données (A1).
Tu selectionnes la ligne 1, Données, Filtrer, Filtre automatique.  
Regardes du coté de la fonction SOUS.TOTAL pour les filtres,  
ou  
tu peux faire un SOMME.SI() directement sur le tableau, sans avoir recours aux filtres automatiques.
 
Cordialement

Message cité 1 fois
Message édité par SuppotDeSaTante le 30-03-2009 à 10:55:49

---------------
Soyez malin, louez entre voisins !
n°1867464
archangel
Un homme Une vision
Posté le 30-03-2009 à 16:03:29  profilanswer
 

J'ai refait ton exemple en 10 minutes (le temps de retaper les données) avec un tableau croisé dynamique. Mais pour ça il faut que tu demandes un seul fichier en entrée de la forme :
AA|Granny|Pomme|Fruit|12
Si les deux premiers fichiers sont issues d'une base de données avec une petite requête SQL, ça se fait sans problème.
 
 


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
n°1867858
V i n c e ​n t
4 6 6 6 4
Posté le 31-03-2009 à 13:37:47  profilanswer
 

j'avoue que l'idée d'une macro c'est pour tout faire automatiquement et qu'un utilisateur lambda puisse utiliser le fichier à ma place.
 
Archangel, je veux bien tes lumières.

n°1867865
SuppotDeSa​Tante
Aka dje69r
Posté le 31-03-2009 à 14:00:13  profilanswer
 

Un fichier contenant des données liées, je vois pas ou est le souci qu'un utilisateur lambda utilise ton fichier....
 

SuppotDeSaTante a écrit :

Une liaison de donnée, un SOMME.SI, un SOUS.TOTAL ou a la limite un TDC (Tableau croisé dynamique) et tu as tout ce dont tu as besoin.


Que ca soit en TDC ou autre...


---------------
Soyez malin, louez entre voisins !
n°1867869
V i n c e ​n t
4 6 6 6 4
Posté le 31-03-2009 à 14:12:56  profilanswer
 

FICHIER EXCEL
 
 
Voila un premier essai (merci danix)
 
Un onglet avec les tables.
Un onglet avec les données (data)
Un onglet avec le tableau final.
 
Les données sont mises à jour gràce à la macro.
Il faudrait maintenant que le tableau final se créé tout seul avec des sous totaux par familles et quelque soit le nombre de produits, familles etc....
 
Le tableau actuel est fixe et donc ne tiens pas en compte de la nouvelles listes de données réactualisée.
 
Merci pour votre aide.

n°1867872
SuppotDeSa​Tante
Aka dje69r
Posté le 31-03-2009 à 14:22:00  profilanswer
 

Comme on le dit depuis le debut, que ca soit archangel ou moi, tu fais ca avec un tableau croisé dynamique...!
En se servant juste de l'onglet TABLE ca prend aller, 30sc... et ca se met a jour tout seul, forcement, un TDC...
 
Je ne vois vraiment ou se situe ton souci, dsl.
 
Edit : Jette un oeil au fichier et dis moi si c'est ca que tu veux


Message édité par SuppotDeSaTante le 31-03-2009 à 14:27:34

---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le 31-03-2009 à 14:22:00  profilanswer
 

n°1867875
archangel
Un homme Une vision
Posté le 31-03-2009 à 14:35:16  profilanswer
 

V i n c e n t a écrit :

j'avoue que l'idée d'une macro c'est pour tout faire automatiquement et qu'un utilisateur lambda puisse utiliser le fichier à ma place.
 
Archangel, je veux bien tes lumières.


 
Tu fusionnes tes deux premières listes comme indiqué dans mon poste précédent :
AA|Granny|Pomme|Fruit|12
Comme tu peux le voir, les dénominations et les quantités sont sur la même ligne.
 
Ensuie tu utilise la fonction Tableau croisé dynamique d'Excel (voir google si tu ne connais pas)


---------------
J'suis timide - Prêt à mourir, mais pas à vivre - Je suis vraiement très fatigué ... - more than meets the eye
n°1867879
V i n c e ​n t
4 6 6 6 4
Posté le 31-03-2009 à 14:49:43  profilanswer
 

Pour commencer, merci pour votre aide et patience.
Je doit dire que je suis plutot fénéant ou pragmatique dans mon travail.
 
Mon but est de produire en 2 clics un fichier final avec mise en forme automatique etc...
Sur le coté estétique du tableau, j'arriverai probablement à me débrouiller avec la/les macros.
Mais pour les données je connais pas assez.
 
Je connais les TCD et les fontions SOMME, mais le but et vraiment de bosser une bonne fois pour la mise en oeuvre du truc et après je suis pénard.
 
Pour info, mes données (AA, AB ...) c'est environ 6500 lignes.
 
 

n°1867894
86vomito33
Posté le 31-03-2009 à 15:33:40  profilanswer
 

+1 avec le fichier de dje69r
 
avec rajout du code suivant
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotCache.Refresh
a la fin de la macro "comptage"

n°1867895
SuppotDeSa​Tante
Aka dje69r
Posté le 31-03-2009 à 15:34:50  profilanswer
 

86vomito33 a écrit :

+1 avec le fichier de dje69r
 
avec rajout du code suivant
ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotCache.Refresh
a la fin de la macro "comptage"


 
Ah en effet j'ai pas mis le fichier ou j'actualise le TCD.
 
Merci 86vomito33  :jap:


Message édité par SuppotDeSaTante le 31-03-2009 à 15:35:09

---------------
Soyez malin, louez entre voisins !
n°1867922
V i n c e ​n t
4 6 6 6 4
Posté le 31-03-2009 à 16:54:34  profilanswer
 

En tout cas, en ajoutant le code de 86vomito33, ça marche pour la réactualisation du TCD.  
 
Je confirme.
 
Merci.


Message édité par V i n c e n t le 31-03-2009 à 16:55:08

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Création d'une macro VBA complexe HELP !!!

 

Sujets relatifs
Création macro pour un fichier Excel de 600p et 13000 lignesSe déplacer dans une page web avec le curseur
page web , help , please !probleme d'animation sur scilab , HELP !!!
compteur VBA CATIAPiloter port parallèle avec Excel VBA
pb lors creation d'une classe generic en java pour type primitif[résolu] Création de dossier
creation menu en VBA ?? 
Plus de sujets relatifs à : Création d'une macro VBA complexe HELP !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR