Macro : Calcul du poids des mois

jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010 - 19 févr. 2010 à 08:51
jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010 - 19 févr. 2010 à 17:09
Bonjour,

J'aurais svp besoin de votre aide pour la création d'une macro.
Vu mes maigres connaissances, je n'y arriverai pas seul.

J'ai besoin d'une macro qui me calculerai le poids des mois suivant un fichier externe ou pas car je peux aussi faire un copier coller sur le fichier contenant la macro.

fichier de base contenant la macro et la liste des mois avec le poids :

Mois Poids
1 12,5%
2 11%
3 14,5%
4 14%
etc..

Fichier des données :

Région Chiffre d'affaire
A 120 000
B 210 000
C 45 000

Résultat de la macro :

Mois Région CA
1 A résultat (ca région * poids du mois)
2 A
3 A
4 A
1 B
2 B
3 B
4 B
1 C
2 C
3 C
4 C


Voila si vous pouvez m'aider ce serait super sympa.

Merci d'avance.

Vincent

14 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
19 févr. 2010 à 08:56
Bonjour,

le poids des mois suivant un fichier


Impossible te tenter la moindre réponse valable sans connaître le type exact du fichier concerné. Sa structure, en plus, si fichier texte structuré .
A moins de mettre ici autant de réponses que de types possibles de fichier !!!
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 09:15
C'est un fichier excel.

Mais disons que je ferai un copier coller sur le fichier excel contenant la macro comme ça pas besoin de rajouter un pointage vers un fichier externe
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
19 févr. 2010 à 09:23
Ah .... (d'où la nécessité d'être toujours précis, lorsque l'on pose une question).
Et alors : que ne sais-tu faire ?
- le code pour lire les cellules d'une feuille ?
- celui pour effectuer des opérations ?
- celui pour écrire dans les cellules d'une feuille ?

Auquel de ces trois niveaux exactement se situe ton problème ?


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 10:47
eh bien en fait, mes compétences sont plus que limité car les macro que j'ai écris étaient uniquement sur des actions workbook,sheet, range etc.. plutot des trucs basics.

Donc du coup je ne sais pas par ou commencer et comment faire.
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
19 févr. 2010 à 11:23
eh bien en fait, mes compétences sont plus que limité car les macro que j'ai écris étaient uniquement sur des actions workbook,sheet, range etc.. plutot des trucs basics.

ces connaissances (celles que j'ai soulignées dans la citation) te suffisent donc, tant pour lire ce qu'il y a dans une ou des cellules et pour y écrire !
Pour chaque cellule de la plage concernée de ta feuille de base, donc ;
- lire son poids ===>> variable pd
Pour chaque cellule de la plage concernée de ta fgeuille des données, donc :
- lire le chiffre d'affaires ===>> variable CA
ton résultat est alors, pour chaque combinaison : pd * CA
ce qui se traduit par ce petit pseudo-algo (je te laisse écrire le code, hein).. :
for i = ..... to .... (boucle sur les cellules (contenant pd de ta plage des poids)
  for j = .... to .... (boucle sur les cellules contenant CA deta plage des régions)
     '''' calcul de CA avec ce que tu as trouvé (FResultat = CA * pd
     '''' écriture de resultat dans ta feuille des résultats
  next
next


Je ne veux pour l'instant pas t'écrire directement ce code (trop facile à écrire).
J'attendrai de voir le tien et t'aiderai à corriger en cas de besoin.
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
19 févr. 2010 à 11:33
Je viens de constater que cela fait au moins un an que tu travailles avec VBA/Excel ....
Je ne n'ai commencé à m'y mettre qu'il y a 3 mois...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 11:44
Oui, je n'ai pas souvent des appplications en VBA, donc je n'en fait pas plus que ça.
Bon je regarde ça plus en détail et je repasse ici.
Merci
0
jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 14:16
Mouais pfff
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
19 févr. 2010 à 14:18
Heu, tu as vraiment besoin de code pour faire ça ? Une obligation ?

Parce que là, une table dans un fichier EXCEL donnant le poids par mois.

Une formule EXCEL multipliant le CR par le poids du mois (récupéré par un RECHERCHEV ou RECHERCHEH suivant la façon dont tu as fait ton tableau).

A peu près 30 secondes de boulot pour un truc qu'il n'y a pas besoin de maintenir, qui se met à jour de façon dynamique, sans pb d'ouverture de macro, etc ...

Molenn
0
jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 14:37
Disons que je n'ai pas de valeur commune entre les tables pour faire une rechercheh ou recherchev.

De plus j'ai beacoup , beaucoup de données à traiter et je ne peux ajouter manuelement les 12 mois à chacunes d'elles pour avoir le mois en commun entre les tables.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
19 févr. 2010 à 14:42
Mets-toi à la mise en oeuvre simple de l'algo que je t'ai montré.
Lorsque tu y seras parvenu par cette méthode (et seulement après), nous verrons ensemble comment uitiliser des tableaux dynamiques pour agiliser l'ensemble ... (mais je tiens à ce stade à ce que tu fasses ton 1er effort à l'aide de ce que je t'ai indiqué).


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
19 févr. 2010 à 16:04
Mais tu n'as rien à ajouter manuellement, allez, parce que mois ça m'amuse, 1 minute de boulot, et j'ai obtenu ce que tu voulais rien qu'avec des formules EXCEl.

Une simple feuille Excel :
A1 : A B1 : 120000
A2 : B B2 : 210000
A3 : C B3 : 45000
Je crée une zone de nom (Menu Insertion\définir) appelée CA

C1 : Janvier D1 : 12%
...
C12 : Décembre D12 : 8%
(avec les listes d'Excel, 2 secondes)
Zone de nom PondérationParMois

Je sais à ce stade que pour tout afficher, il me faudra 36 lignes (3 entreprises * 12 mois)

G1 : Janvier
G2 : février

H1 : =INDIRECT(ADRESSE(ARRONDI.SUP(LIGNE(G1)/12;0);1))
(cette formule t'affiche le nom de l'entreprise en face du mois, elle s'affichera 12 fois, d'où le /12)
I1 : =RECHERCHEV(H1;CA;2;FAUX)*RECHERCHEV(G1;PondérationParMois;2;FAUX)

Je sélectionne H1:I1 et je copie sur la ligne 2.

Je sélectionne à présent H1:I2 (il faut avoir les 2 premières occurrences du mois pour profiter de la liste Excel) et je copie ma formule jusqu'à la ligne 36.

Tu as ton résultat.

Cerise sur le gatal, tu modifies le CA de tes entreprises ou les pondérations, tout se recalcule en direct.
Tu as besoin d'ajouter des entreprises ? Tu les insères dans la zone de nom ou tu penses à redéfinir sa taille si tu les mets en dessous, tu n'as plus qu'à descendre tes formules par 12 * le nombre d'entreprise ajoutée.

Le temps que tu ouvres l'éditeur VBA et que tu écrites ta boucle, j'ai terminé en utilisant l'outil qui m'est donné de base.
Mieux, en règle général, dans une boite, tout le monde ne connait pas VB, mais beaucoup arrive à se débrouiller avec Excel. Tu peux refiler le fichier à qui veut sans avoir à te taper la maintenance.
Que du bonheur :)

Molenn
0
jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 16:36
ok chef

Pour l'instant j'y arrive pas
0
jarodsmith Messages postés 14 Date d'inscription mercredi 25 mars 2009 Statut Membre Dernière intervention 19 février 2010
19 févr. 2010 à 17:09
Merci pour ta solution Molen ça peut effectivement bien me dépanner vu que le vba n'est pas mon ami aujourdhui.
0
Rejoignez-nous