| ||||||||
Petite astucienne | Bonjour à tous, Gros probléme, j'ai besoin de créer une fonction dans mon logiciel Excel pour pouvoir calculer mes marges bénéficiares. Comment dois-je procéder pour creer une fonction perso? Est ce possible? Merci de votre aide | |||||||
Publicité | ||||||||
| ||||||||
Astucien ![]() | Salut rien de plus facile. tu veux faire quoi exactement ? (c'est quoi ta fonction perso, elle doit faire quoi...) | |||||||
Astucien ![]() | ||||||||
Astucien ![]() | ![]() parti trop vite !! bon, 2 ou 3 petites choses en plus, bonnes à savoir : - il faut activer les macros pour que ça fonctionne (outils/macros/sécurité : choisir moyen ou bas) - ta fonction n'est valable que pour le classeur dans laquelle elle est contenue (pour la rendre accessible par tous les classeurs ouvert, il faut ajouter public devant function - perso est le nom de la fonction, mais tu l'appelles comme tu veux... (pour info, celle dans mon exemple fait la meme chose que la fonction moyenne...) si tu as des questions, n'hésite pas... | |||||||
Petite astucienne | Merci c'est niquel | |||||||
Petite astucienne | J'ai suivi tes conseils et tout fonctionne, merci!!! Par contre, je n'arrive pas à créer le formule dont j'ai besoin. Ce que je veux c'est Colonne A : Prix de Vente Colonne B : Prix d'Achat Colonne C : Calcul de la Marge en pourcentage Marge = 100-(PA/PVx100) Sachant que mes colonnes A et B ne sont pas fixes, elles peuvent varier Merci de ton aide... | |||||||
Astucien ![]() | Salut c'est ta formule qui va pas essaie avec =(A1-B1)/B1 en code, ça donne un truc du genre : function marge(PA,PV) marge =(PV-PA)/PA end function ![]() | |||||||
Petite astucienne | Bonjour, J'ai tout fait comme tu m'as dis mais la formule finale donne Marge(PV;PA) et c'est pas ce que je veux. Pourtant dans le module j'ai bien inscrit marge=(PV-PA)/PA Merci | |||||||
Petite astucienne | Excuse moi mais je voudrais aussi qu'elle soit accessible à tout moment et pas seulement pour les classeurs ouvert au moment de la création. ![]() | |||||||
Astucien ![]() | re http://cjoint.com/?jgqP3orIb8 je peux pas faire mieux... c'est peut-être pas ce que tu veux, mais c'est pourtant ce que tu as demandé... ![]() | |||||||
Petite astucienne | La formule est exactement ce que je veux mais elle s'applique mal J'ai entré toutes les données de ton message mais quand je l'applique j'obtiens Marge=(A1;B1) et pas 100-(A1/B1x100) Et à la pace d'un résultat j'obtiens #Valeur. Désolé pour le dérangement si tu n'as pas de solution te prends pas la tête... Bonne soirée | |||||||
Astucien ![]() | melanieleveque a écrit :
Modifié par Bérylion le 06/09/2007 19:12 | |||||||
![]() | Bonjour, 1- La confection de la macro personnalisée : Pour créer un perso.xla Ceci fait votre perso.xla va disparaître ! En effet son principal intéret est d'être invisible. Pour que les modifications soient prises en compte et que ce classeur "monte la garde" en permanence : Quittez Excel puis Ouvrez un Nouveau Classeur Excel et dans le menu Outils cliquez Macros Complémentaire... puis dans la boite de dialogue suivante vous devez découvrir votre perso il suffit de le cocher puis Ok. Désormais votre Perso.xla restera disponible tant qu'il restera coché dans les macros complémentaires et ce, à chaque ouverture d'Excel. En dehors du menu Outils / Macros Complémentaire, le perso.xla n'est pas visible depuis Excel. ...et dans la grande feuille blanche (à droite) qui correspondant à ce nouveau module (Module1) vous pouvez maintenant développer vos propre Fonctions personnalisées qui seront disponibles dans tous les classeurs. Pour la facilité et une meilleure compréhension, nous allons d'abord créer une fonction simple (qui n'a rien à voir avec votre question) mais qui va vous permettre de décortiquer le mécanisme. La Fonction que nous allons créer s'appelle PérimetreDuRectangle. Nous écrivons donc : Function PerimetreDuRectangle() Nous savons que pour calculer le périmètre d'un rectangle nous devons connaître la Longueur et la Largeur. VBA ne procède pas différemment. Function PerimetreDuRectangle(Longueur, Largeur) Lorsque l'utilisateur utilisera cette fonction la barre de formule lui suggérera qu'il doit entrer d'abord la longueur et ensuite la largeur... Il ne nous reste plus qu'a indiquer à VBA quel calcul il doit effectuer pour renvoyer la solution : Function PerimetreDuRectangle(Longueur, Largeur) 2- L'utilisation de cette fonction personnalisée. Attention ! Quand tu travailles sur le perso.xla tu dois impérativement sauvegarder tes modifications avant de quitter Excel sinon tout ton travail sur le perso.xla est perdu. Par défaut VBA considère que le programmeur consciencieux n'a pas besoin d'avertissement ni de rappel. Il ne te reste plus qu'a adapter cette méthode à ton propre cas avec toutes les gâteries indispensables ! (gestion des erreurs, définitions des variables et paramètres...) Dans ton cas c'est assez simple ça ne devrait pas te poser de problème particulier. Si tu éprouves une difficulté à appliquer celà il faudra nous mettre éventuellement un petit classeur démo dans cjoint pour pouvoir corriger car il n'est pas aisé de comprendre ce que tu es bien en peine d'exprimer en détail. A+ Modifié par galopin01 le 07/09/2007 04:44 | |||||||
Astucien ![]() | ![]() Salut l'ami digne d'un grand chef ton tuto !! si toutefois je puis me permettre ![]() - pour une fonction, on déclare pas une function plutot qu' une sub ?? - pour l'utiliser depuis tous les classeurs, faudrait pas la déclarer public function ? ![]() | |||||||
![]() | bonjour, Function / Sub : Il s'agit bien sur d'une coquille que j'avais d'ailleurs remarquée dans ma préparation, mais au hasard des copier des coller ou des sauvegardes j'ai du écraser la correction... C'est donc modifié en conséquence. Public : Il n'est pas utile de la déclarer publique. A+
| |||||||
Petite astucienne | Bonjour, Merci à toi! J'essaye de suite voir si ca fonctionne... Bonne journée
| |||||||
Petite astucienne | Merci beaucoup de ton aide, ca fonction à merveille! Pour info, public n'est pas nécessaire... Merci à toi aussi Bérylion car tu as passé du temps sur mon probléme! Bonne journée à tous les deux | |||||||
Astucien ![]() | ![]() il a raison le bougre... c'est le contraire en fait, il faut la déclarer private pour qu'elle ne soit dispo que dans son classeur !! ![]() | |||||||
Publicité | ||||||||
| ||||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
|