Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 macro qui permet de basculer entre 2 valeurs composées de formules de type "Formula local"

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pat66

XLDnaute Impliqué
Bonjour le forum,

je tente désespérément de rédiger cette macro, mais je n'y arrive pas, auriez vous la gentillesse de bien vouloir m'aider à rectifier cette macro, merci beaucoup !

Dans la cellule verrouillée de Worksheets("Données").Range("N6"), il y a cette formule qui fonctionne bien :
=@SI(I16=1;INDEX(AE7:AM11;EQUIV(K16-0,0001;AD7:AD11;1);EQUIV(N8*12-0,0001;AE6:AM6;1)+1);INDEX(AE13:AM17;EQUIV(K16-0,0001;AD13:AD17;1);EQUIV(N8*12-0,0001;AE6:AM6;1)+1))/100

mais il faudrait pouvoir alterner à chaque clic sur une forme, entre 2 formules à savoir :

La formule originale dans Worksheets("Données").Range("N6")
=@SI(I16=1;INDEX(AE7:AM11;EQUIV(K16-0,0001;AD7:AD11;1);EQUIV(N8*12-0,0001;AE6:AM6;1)+1);INDEX(AE13:AM17;EQUIV(K16-0,0001;AD13:AD17;1);EQUIV(N8*12-0,0001;AE6:AM6;1)+1))/100

Au 1er clic, réduire le résultat dans N6 de 0.20%
=@SI(I16=1;INDEX(AE7:AM11;EQUIV(K16-0,0001;AD7:AD11;1);EQUIV(N8*12-0,0001;AE6:AM6;1)+1);INDEX(AE13:AM17;EQUIV(K16-0,0001;AD13:AD17;1);EQUIV(N8*12-0,0001;AE6:AM6;1)+1))/100

2e Clic : revenir à la formule originale

etc ...

merci d'avance


Sub ChangeTaux()
Dim tauxActuel As Double
Static tauxOriginal As Variant ' variable persistante entre exécutions

With Worksheets("Données").Range("N6")
tauxActuel = .Value
If IsEmpty(tauxOriginal) Then
' Premier clic : on enregistre le taux initial et on le réduit de 0,20 point de pourcentage
tauxOriginal = tauxActuel
.Value = tauxActuel - 0.002
Else
' Second clic : on rétablit le taux original et on réinitialise la variable
.Value = tauxOriginal
tauxOriginal = Empty
End If
End With
End Sub
 
Dernière édition:
Solution
Re,
Comme je n'ai aucune idée sur l'origine du problème puisque c'est ok chez moi , une PJ avec encore plus simple :
VB:
Sub Réduction()
If [B7] = 0 Then [B7] = 0.002 Else [B7] = 0
[B7].NumberFormat = """Réduction : ""0.0%"
End Sub
La formule devient :
Code:
=-B7+SI(K6=1;INDEX(F11:O15;EQUIV(M6-0.0001;E11:E15;1);EQUIV(I6-0.0001;F10:O10;1)+1);INDEX(F17:O21;EQUIV(M6-0.0001;E17:E21;1);EQUIV(I6-0.0001;F10:O10;1)+1))/100
B7 étant la réduction appliquée.
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…