Excel03- format de cellule, % ou points, vba
nemzor
Messages postés
14
Statut
Membre
-
Raymond PENTIER Messages postés 71867 Date d'inscription Statut Contributeur Dernière intervention -
Raymond PENTIER Messages postés 71867 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je tente de créer une macro qui modifie automatiquement le format du chiffre exprimé : en points ou en %.
Dans mon tableau totalement automatisé, j'ai une colonne qui exprime les variations (croissance ou décroissance) de mes données, d'une année sur l'autre.
Exemple : mon chiffre d'affaires a augmenté de "x %" entre 2011 et 2012.
Il faut savoir que le critère "chiffre d'affaires" est choisi dans une liste déroulante. Jusque là, pas de problèmes puisque le critère est simple, et la variation en %.
Or, dans ce tableau, je peux choisir des critères de ma liste déroulante plus exotiques, tels que "marge divisé par chiffres d'affaires", ce qui va modifier ma colonne "variations", puisqu'ici j'aurai besoin qu'elles s'expriment en points, et non plus en %.
J'aimerais que l'on corrige ma tentative de code VBA afin que cette macro modifie le format de cellule de la colonne "variations" en fonction du critère choisi.
Voici le code, avec qques explications :
Sub FormatCross()
'
'
Actfeuille = ActiveSheet.Name
Crit = Range("critere1").Value => "critere1" est la cellule qui se modifie automatiquement en fonction du critère choisi. Ex : si on choisi le Chiffre d'affaires, "critere1" va prendre la valeur "%". Si on prend le critere "marge sur CA", "critere1" va prendre la valeur "pts" etc.
Application.GoTo Reference:="Format_CrossCAGR" nom de ma colonne "variations"
If Crit = "%Var. Value" Then
Selection.NumberFormat = "#,##0"
ElseIf Crit = "%" Then
Selection.NumberFormat = "#,##0.0%" Jusqu'ici ca fonctionne puisque toutes mes variations sont en %, même quand je modifie le format de cellule manuellement et éxectute la macro : les variations reviennent en %.
ElseIf Crit = "pts" Then
Selection.NumberFormat = "#,##0.0\ [$pts]" peut-être que l'erreur vient de là et simplement de l'intitulé du format en points...
ElseIf Crit = "ptsVar. Value" Then
Selection.NumberFormat = "#,##0.0\ [$pts]"
End If
Range("A1").Select
Sheets(Actfeuille).Activate
End Sub
Merci d'avance pour l'aide que vous pourrez m'apporter.
nemzor
Je tente de créer une macro qui modifie automatiquement le format du chiffre exprimé : en points ou en %.
Dans mon tableau totalement automatisé, j'ai une colonne qui exprime les variations (croissance ou décroissance) de mes données, d'une année sur l'autre.
Exemple : mon chiffre d'affaires a augmenté de "x %" entre 2011 et 2012.
Il faut savoir que le critère "chiffre d'affaires" est choisi dans une liste déroulante. Jusque là, pas de problèmes puisque le critère est simple, et la variation en %.
Or, dans ce tableau, je peux choisir des critères de ma liste déroulante plus exotiques, tels que "marge divisé par chiffres d'affaires", ce qui va modifier ma colonne "variations", puisqu'ici j'aurai besoin qu'elles s'expriment en points, et non plus en %.
J'aimerais que l'on corrige ma tentative de code VBA afin que cette macro modifie le format de cellule de la colonne "variations" en fonction du critère choisi.
Voici le code, avec qques explications :
Sub FormatCross()
'
'
Actfeuille = ActiveSheet.Name
Crit = Range("critere1").Value => "critere1" est la cellule qui se modifie automatiquement en fonction du critère choisi. Ex : si on choisi le Chiffre d'affaires, "critere1" va prendre la valeur "%". Si on prend le critere "marge sur CA", "critere1" va prendre la valeur "pts" etc.
Application.GoTo Reference:="Format_CrossCAGR" nom de ma colonne "variations"
If Crit = "%Var. Value" Then
Selection.NumberFormat = "#,##0"
ElseIf Crit = "%" Then
Selection.NumberFormat = "#,##0.0%" Jusqu'ici ca fonctionne puisque toutes mes variations sont en %, même quand je modifie le format de cellule manuellement et éxectute la macro : les variations reviennent en %.
ElseIf Crit = "pts" Then
Selection.NumberFormat = "#,##0.0\ [$pts]" peut-être que l'erreur vient de là et simplement de l'intitulé du format en points...
ElseIf Crit = "ptsVar. Value" Then
Selection.NumberFormat = "#,##0.0\ [$pts]"
End If
Range("A1").Select
Sheets(Actfeuille).Activate
End Sub
Merci d'avance pour l'aide que vous pourrez m'apporter.
nemzor
A voir également:
- Excel03- format de cellule, % ou points, vba
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
- Excel compter cellule couleur sans vba - Guide
5 réponses
Ne connaissant pas VBA, je pourrais te suggérer de prévoir plusieurs colonnes, l'une pour "Marge", l'autre pour "Variation" ...
Oui ca serait une solution de dernier recours, mais dans un souci de simplicité une petite macro bien plaçée rendrait le tout + agréable!
Quelqu'un pour up ce fil? =)
Merci
Quelqu'un pour up ce fil? =)
Merci
Bonjour,
Voici un fichier exemple sur lequel vous pourrez vous appuyer afin de comprendre ce que je cherche à faire...
https://www.cjoint.com/?BHnkJwfasZA
Merci
Voici un fichier exemple sur lequel vous pourrez vous appuyer afin de comprendre ce que je cherche à faire...
https://www.cjoint.com/?BHnkJwfasZA
Merci
La liste déroulante est en haut à gauche en rouge, faut vraiment le faire exprès pour la louper.
Mon problème est expliqué dans mon premier post.
Enfin bref je ne vois pas l'utilité de me répondre "pas envie de répondre", eric.
Si quelqu'un d'autre a du temps à me consacrer je l'en remercie grandement.
Mon problème est expliqué dans mon premier post.
Enfin bref je ne vois pas l'utilité de me répondre "pas envie de répondre", eric.
Si quelqu'un d'autre a du temps à me consacrer je l'en remercie grandement.
C'est sûr, c'est sans doute trop difficile de dire je met ça dans telle cellule, je veux que ça donne ça dans telle autre.
Autant laisser les bénévoles perdre du temps à essayer de deviner.
Désolé de préférer consacrer mon temps de loisir à ceux qui font l'effort d'explications complètes et précises.
Et crois moi que je ne suis pas le seul. Maintenant à toi de voir si tu désires interesser le maximum de personnes à tes questions ou non...
Pour ta nouvelle question c'est pareil...
Aucune macro dans ton fichier. On ne sait pas ce que tu as fait, il faut une boule de cristal.
eric
Autant laisser les bénévoles perdre du temps à essayer de deviner.
Désolé de préférer consacrer mon temps de loisir à ceux qui font l'effort d'explications complètes et précises.
Et crois moi que je ne suis pas le seul. Maintenant à toi de voir si tu désires interesser le maximum de personnes à tes questions ou non...
Pour ta nouvelle question c'est pareil...
Aucune macro dans ton fichier. On ne sait pas ce que tu as fait, il faut une boule de cristal.
eric
Bonjour,
Tel que le tableau est présenté à quoi sert une macro alors qu'une fonction Texte suffit.
La formule =SI($A$20=1;G7/E7*100;G7-E7) peut devenir =SI($A$20=1;TEXTE(G7/E7;"0,00%");G7-E7) pour résoudre le problème.
Tel que le tableau est présenté à quoi sert une macro alors qu'une fonction Texte suffit.
La formule =SI($A$20=1;G7/E7*100;G7-E7) peut devenir =SI($A$20=1;TEXTE(G7/E7;"0,00%");G7-E7) pour résoudre le problème.
Bonjour,
Le tableau sur lequel je travail possède une liste déroulante de plusieurs dizaines de critères, les "SI(" devriendraient alors trop nombreux.
Finalement je pense avoir trouvé d'où mon problème vient :
La macro de mon premier post fonctionne.
Or elle ne s'exécute qu'une seule fois (à l'ouverture du fichier).
Comment faire pour qu'elle s'exécute à chaque changement de critère dans la liste déroulante?
Merci
Le tableau sur lequel je travail possède une liste déroulante de plusieurs dizaines de critères, les "SI(" devriendraient alors trop nombreux.
Finalement je pense avoir trouvé d'où mon problème vient :
La macro de mon premier post fonctionne.
Or elle ne s'exécute qu'une seule fois (à l'ouverture du fichier).
Comment faire pour qu'elle s'exécute à chaque changement de critère dans la liste déroulante?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ecoute un peu, nemzor.
"une liste déroulante de plusieurs dizaines de critères" pourtant il n'y en a que deux dans le fichier exemple ...
"La liste déroulante est en haut à gauche en rouge, faut vraiment le faire exprès pour la louper" mais il faut commencer par deviner que le rouge est la couleur que tu emploies pour repérer les listes déroulantes !
"Si quelqu'un d'autre a du temps à me consacrer je l'en remercie grandement" nous sommes nombreux à prendre sur notre temps pour le consacrer à aider les autres ; mais aucun de nous n'aime perdre son temps.
C'est toi qui sollicites de l'aide ; c'est à toi de faire preuve d'humilité et de politesse, même si certaines réponses t'agacent ou t'indisposent. Il y a déjà près de deux mois que tu es inscrit comme membre, et tu n'as pas encore acquis l'esprit de la Charte de CCM ? Il faudra changer, si tu veux espérer des réponses à tes prochaines questions dans Bureautique (car le forum Programmation ne répond pas aussi volontiers, n'est-il pas vrai ?).
"une liste déroulante de plusieurs dizaines de critères" pourtant il n'y en a que deux dans le fichier exemple ...
"La liste déroulante est en haut à gauche en rouge, faut vraiment le faire exprès pour la louper" mais il faut commencer par deviner que le rouge est la couleur que tu emploies pour repérer les listes déroulantes !
"Si quelqu'un d'autre a du temps à me consacrer je l'en remercie grandement" nous sommes nombreux à prendre sur notre temps pour le consacrer à aider les autres ; mais aucun de nous n'aime perdre son temps.
C'est toi qui sollicites de l'aide ; c'est à toi de faire preuve d'humilité et de politesse, même si certaines réponses t'agacent ou t'indisposent. Il y a déjà près de deux mois que tu es inscrit comme membre, et tu n'as pas encore acquis l'esprit de la Charte de CCM ? Il faudra changer, si tu veux espérer des réponses à tes prochaines questions dans Bureautique (car le forum Programmation ne répond pas aussi volontiers, n'est-il pas vrai ?).