Retraiter un fichier en VBA

Bonjour,

j'ai un fichier de donnée de variance ( c'est la consommation ), et j'ai besoin de le retraiter pour pouvoir utiliser les données et voir la consommation de chaque MG de façon automatique.

problème je connais pas VBA du tout et je galère.

l'idée est la suivante:

coller le fichier ( voir juste ouvrir le fichier ), et que dans un onglet ça me récupère les données de cette façon:

Unit Count Description SOUS CAT QT VARIANCE MONTANT VARIANCE

10 STOCK NOURRITURE EPICERIE 19.96 fr.-60.74

si c'était tout sur la même ligne j'y arriverai facile avec les recherchev, mais mes connaissances sont limité en excel donc tout aide est la bienvenu, que ce soit VBA ou juste des formules.

Merci par avance

16variance.zip (62.12 Ko)

bonjour

j'ai compris avec votre premier exemple

mais pourriez vous refaire votre fichier en completant aussi les données attendues avec le stock de boisson ...

merci

fred

Alors j'ai rajouter l'exemple demandé pour le Stock boisson, l'diée est donc d'avoir une ligne pour chaque sous catégorie:

Unit Count Description SOUS CAT QT VARIANCE MONTANT VARIANCE

10 STOCK NOURRITURE EPICERIE 19.96 fr.-60.74

20 STOCK BOISSON BIERES 19 fr. 151.46

20 STOCK BOISSON SOFT 0 fr. 30.36

20 STOCK BOISSON SPIRITUEUX -1 fr.-9.56

20 STOCK BOISSON CONSIGNES EMBALLAGES 560 fr. 1'090.18

il faudrait si possible qu'il cherche le prochain "total" pour retrouver le nom de catégorie qui est juste au dessus etc..

j'espère être clair

encore merci pour votre réactivité et votre aide

12variance.zip (62.39 Ko)

re bonjour

c'est bien comme cela que j'avais envisagé la chose ....

voici une proposition a tester

Fred

10arti-v001.xlsm (175.18 Ko)

alors j'ai testé et ca me prends juste la dernière sous catégorie.

exemple pour le Stock Boisson j'ai que ;

10 STOCK NOURRITURE EPICERIE 19.96 fr.-60.74

20 STOCK BOISSON CONSIGNES EMBALLAGES 560 fr. 1'090.18

alors que j'aurai du avoir comme avant:

10 STOCK NOURRITURE EPICERIE 19.96 fr.-60.74

20 STOCK BOISSON BIERES 19 fr. 151.46

20 STOCK BOISSON SOFT 0 fr. 30.36

20 STOCK BOISSON SPIRITUEUX -1 fr.-9.56

20 STOCK BOISSON CONSIGNES EMBALLAGES 560 fr. 1'090.18

mais c'est un très bon debut bravo

oui en effet petite coquille dans une boucle

Voici

Fred

8arti-v002.xlsm (179.90 Ko)

on y est presque, sauf que :

Unit Count Description EPICERIE 19.96 fr.-60.74

10 STOCK NOURRITURE EPICERIE 19.96 fr.-60.74

la première ligne est modifié et en faisant cela si j'utilise une formule genre somme.si.ens sur le terme epicerie ca me rajouter une valeur non souhaité.

je suis sur que la prochaine version est la bonne

bravo


j'abuse encore mais est il possible que dans la dernière colone il prenne juste le chiffre et pas le "fr." devant ?

ca faciliterai le traitement des données pour moi

il suffit tout simplement de renommé l’entête car elle n'est pas modifié par cette dernière version de macro.... mais cela a été modifié précédemment et j'avais pas fait attention que cela avait changer.

fred

edit :

voici avec la suppression du fr et mise au format numérique des valeurs

fred

18arti-v003.xlsm (176.96 Ko)

c'est tout bon j'ai réussi ce que je voulais encore merci

une dernière question :

j'aimerai:

faire une somme ensemble selon 1 critère mais avec un OU

=+SOMME.SI.ENS('retraiter les donner'!E:E;'retraiter les donner'!C:C;'MG Aout'!J11;'retraiter les donner'!B:B;"*AROLA*" OU "*CAFE*")

j'ai essayé cela:

=+SOMME.SI.ENS('retraiter les donner'!E:E;'retraiter les donner'!C:C;'MG Aout'!J11;'retraiter les donner'!B:B;{"*AROLA*";"*CAFE*"})

hors quand je fais cela j'ai que la somme.si.ens du premier critère mais pas du 2ème

il me faudrait ton ficher source ... car dans ta formule tu fais référence a ;'MG Aout'!J11

dans le fichier que j'ai c'est une cellule vide.....

ou il y a déjà une erreur là....

fred

edit : de plus tu ne peux pas faire de somme (ou) avec tes deux critères.... tu ne peux faire une somme que si les deux sont reunis (equivaut a un ET)

cf : http://office.microsoft.com/fr-fr/excel-help/somme-si-ens-fonction-HA010047504.aspx

edit 2 : peut-etre que c'est cela que tu veux faire : ??? a mettre dans une cellule de la feuille retraiter les donner

=SOMME.SI.ENS(E:E;B:B;"*AROLA*")+SOMME.SI.ENS(E:E;B:B;"*CAFE*")

fred

voila le fichiers,

j'ai fait 2 test et aucun ne fonctionne correctement

essai ceci dans ta cellule K11 de la feuille MG

=SOMME.SI.ENS('retraiter les donner'!E:E;'retraiter les donner'!B:B;"*AROLA*";'retraiter les donner'!C:C;'MG Aout'!J11)+SOMME.SI.ENS('retraiter les donner'!E:E;'retraiter les donner'!B:B;"*CAFE*";'retraiter les donner'!C:C;'MG Aout'!J11)

fred

je veux en gros faire une somme suivant plusieurs critère:

somme donc si la SOUS CAT est "operating supplies" mais egalement si dans la DESCRIPTION le nom est "*arola*" + "*CAFE*" etc..

que ca soit une somme suivant une condition 1 suivant 1 crtière et une condition 2 qui elle peut avoir plusieurs critère.


fred2406 a écrit :

essai ceci dans ta cellule K11 de la feuille MG

=SOMME.SI.ENS('retraiter les donner'!E:E;'retraiter les donner'!B:B;"*AROLA*";'retraiter les donner'!C:C;'MG Aout'!J11)+SOMME.SI.ENS('retraiter les donner'!E:E;'retraiter les donner'!B:B;"*CAFE*";'retraiter les donner'!C:C;'MG Aout'!J11)

fred

alors j'avais tester ca, ca marche, le probème c'est qu'en faite j'ai pas forement que 2 critère de comparaison mais des fois 10 et ca fait une super longue formule

re bonjour

j'ai travaillé pour toi... je ne l'avais jamais fait c'est pour cela que j'ai mis du temps a mettre au point ce que tu vas découvrir et c'est peut être pas parfait....

j'ai fait une fonction qui reprend la fonction somme.si.ens

tu regarderas dans la cellule K10 il y a la formule brute que je t'avais proposée initialement... :

=SOMME.SI.ENS('retraiter les donner'!E:E;'retraiter les donner'!B:B;"*AROLA*";'retraiter les donner'!C:C;'MG Aout'!J11)+SOMME.SI.ENS('retraiter les donner'!E:E;'retraiter les donner'!B:B;"*CAFE*";'retraiter les donner'!C:C;'MG Aout'!J11)

et dans la cellule K11 de la feuille MG aout ma fonction que j'ai appeler ma_comme_si et qui fait le meme calcul mais en lui donnant bcp moins de paramètres : a savoir :

=ma_somme_si("cafe,Arola";J11)

dans mon code les premier paramètre est une chaîne de caractère donc doit être absolument entre "blablalbla"

dans cette formule la recherche ajoutera toujours une * avant et après comme pour faire plus haut exemple : "*CAFE*"

dans l'exemple pris initialement tu avait deux critères cafe et arola dans ma nouvelle formule il suffit de les séparé par une virgule... et cela fera le calcul exemple : "cafe,Arola"

a tester donc

et dis moi ce que tu en penses

fred

7arti-v004.xlsm (182.24 Ko)

J'ai encore travailler dessus et je pense que c'est encore mieux

voici une nouvelle version de la fonction j'ai été obligé de changer l'ordre des paramètre précédents , mais il suffit de séparer le café et arola par un ";"

=ma_somme_si(J11;"CAFE";"AROLA")

donc en fait cela fait la somme.si.ens des plages de la feuille "retraiter les donner"

de : opérating supplies (J11) avec *CAFE* + opérating supplies (J11) avec *AROLA*

et tu peux rajouter autant de critère supplémentaire que tu veux autre que café et arola...

j'espère que c’était bien cela que tu avais besoin,

tu peux aussi metre cafe arola,.... dans des cellules et faire appel au contenu des cellules (voir ce que j'ai fait en K12

fred

8arti-v005.xlsm (182.38 Ko)

vraiment parfais un énorme merci a toi fred !!!!

Dans ce cas merci de mettre le sujet resolu....

fred

Rechercher des sujets similaires à "retraiter fichier vba"