Bouton bascule - calcul avec/sans prise en compte cellules

Bonjour à toutes et à tous !

je me permets de venir vous demander votre aide... je suis coincé sur une idée de bouton bascule.

je vais essayer de faire concis et complet :

j'ai un fichier qui m'aide à suivre la gestion des stocks/quantités et coût de nos pub,

quand vous (si vous?) téléchargez le fichier en pièce jointe, choisissez "afficher toutes les feuilles" dans le userform qui s'affiche.

La feuille qui nous (qui me) intéresse c'est "EXPERTS (2)"

Elles présente les coûts et quantité des pubs pour 1,2,3 ... campagnes avec ou sans marge d'erreur (listes déroulantes) ; de base, SANS prendre en compte les stocks.

ce que j'aimerais avec le bouton bascule c'est que lorsqu'il est enclenché, les cellules C9:C17 (pour le premier tableau "toutes les villes") de la feuille "EXPERTS(2)" soit affectées des stocks qui sont affichés sur la feuille "tableau de bord" en C61:C69. (= stock actuel de la campagne "les experts")

Lorsque on désenclenche le bouton bascule, les cellules/formules reviennent à leurs états initiales sans la prise en compte des stocks.

Je pense bien que c'est possible mais je n'y arrive pas, soit je perds les formules, soit .. soit .. ca va pas.

Un grand merci d'avance et longue vie à votre forum qui est une réelle mine d'or (y compris sans poster et crier à l'aide )

J'apporte un peu d'eau à mon moulin,

j'ai écris ça :

je suis pas certain d'avoir de l'aide en vous piquant les yeux à ce point, mais n’empêche ça marche^^ sauf que c'est très très (trop) long à écrire.. peut faire mieux ?

Private Sub ToggleButton1_Click()

Dim actif As Boolean

n = Worksheets("EXPERTS").Range("A100") 'n=nombre, nombre de campagne
p = Worksheets("EXPERTS").Range("B100") 'p=pourcent, taux d'erreur
b = Worksheets("Quota").Range("H29") 'b=base, quota de base dépliant expert
b1 = Worksheets("Quota").Range("C27") 'b=base, quota de base lettre coupon la wantz expert
b2 = Worksheets("Quota").Range("C28") 'b=base, quota de base envel la wantz expert
b3 = Worksheets("Quota").Range("E27") 'b=base, quota de base lettre coupon paris expert
b4 = Worksheets("Quota").Range("E28") 'b=base, quota de base envel paris expert
b5 = Worksheets("Quota").Range("F27") 'b=base, quota de base lettre coupon lille expert
b6 = Worksheets("Quota").Range("F28") 'b=base, quota de base envel lille expert
b7 = Worksheets("Quota").Range("G27") 'b=base, quota de base lettre coupon lyon expert
b8 = Worksheets("Quota").Range("G28") 'b=base, quota de base envel lyon expert
s = Worksheets("Tableau de bord").Range("C61") 's=stock, stock dispo dépliant expert
s1 = Worksheets("Tableau de bord").Range("C62") 's=stock, stock dispo lettre coupon la wantz expert
s2 = Worksheets("Tableau de bord").Range("C63") 's=stock, stock dispo envel la wantz expert
s3 = Worksheets("Tableau de bord").Range("C64") 's=stock, stock dispo lettre coupon paris expert
s4 = Worksheets("Tableau de bord").Range("C65") 's=stock, stock dispo envel paris expert
s5 = Worksheets("Tableau de bord").Range("C66") 's=stock, stock dispo lettre coupon lille expert
s6 = Worksheets("Tableau de bord").Range("C67") 's=stock, stock dispo envel lille expert
s7 = Worksheets("Tableau de bord").Range("C68") 's=stock, stock dispo lettre coupon lille expert
s8 = Worksheets("Tableau de bord").Range("C69") 's=stock, stock dispo envel lille expert

actif = ToggleButton1.Value

If actif Then

With ToggleButton1
.BackColor = vbGreen
.Caption = "AVEC STOCK"
End With

With ActiveSheet
       ActiveSheet.Range("C9").Value = (b * n - s) * p
       ActiveSheet.Range("C10").Value = (b1 * n - s1) * p
       ActiveSheet.Range("C11").Value = (b2 * n - s2) * p
       ActiveSheet.Range("C12").Value = (b3 * n - s3) * p
       ActiveSheet.Range("C13").Value = (b4 * n - s4) * p
       ActiveSheet.Range("C14").Value = (b5 * n - s6) * p
       ActiveSheet.Range("C15").Value = (b6 * n - s6) * p
       ActiveSheet.Range("C16").Value = (b7 * n - s7) * p
       ActiveSheet.Range("C17").Value = (b8 * n - s8) * p
End With

Else

With ActiveSheet
       ActiveSheet.Range("C9").Value = (b * n) * p
       ActiveSheet.Range("C10").Value = (b1 * n) * p
       ActiveSheet.Range("C11").Value = (b2 * n) * p
       ActiveSheet.Range("C12").Value = (b3 * n) * p
       ActiveSheet.Range("C13").Value = (b4 * n) * p
       ActiveSheet.Range("C14").Value = (b5 * n) * p
       ActiveSheet.Range("C15").Value = (b6 * n) * p
       ActiveSheet.Range("C16").Value = (b7 * n) * p
       ActiveSheet.Range("C17").Value = (b8 * n) * p
End With

With ToggleButton1
.BackColor = vbRed
.Caption = "SANS STOCK"
End With

End If
End Sub

autre question également : si je modifie une des cellules qui est prise en compte dans la macro de mon bouton à bascule, il faut que je double clic sur le bouton en question pour que les résultats se modifient. Peut-on faire un autorefresh de la macro à chaque fois que la cellule "machin" et la cellule "truc" est modifiée ?

Rechercher des sujets similaires à "bouton bascule calcul prise compte"