Code multipliant cellule avec variable VBA

vistla

XLDnaute Junior
Bonjour cher forum,

Je rame sur le problème suivant :

Mon code est le suivant (je vous épargne l'exédent du code..):

Dim Bav as Currency

Bav = ActiveWorkbook.Sheets("Données").Range("C33") 'supposons un montant de 3$


ActiveWorkbook.Sheets(nom).Range("S12").Formula = "=E18 * Bav"

Je voudrais que dans la cellule S12, la formule entrée soit E18*3
Évidemment, cela ne fonctionne pas.. j'ai fait plusieurs recherches sur ce forum et sur google mais en vain.. Je me résout à demander votre aide..

merci!
 

vistla

XLDnaute Junior
Re : Code multipliant cellule avec variable VBA

Il ne faut pas que le 3 se retrouve dans le code vba car ce montant peut changer dans le futur. Il doit être appelé par la variable (plus simple à changer que d'aller dans le code VBA)

c'est pour cela que la variable Bav = ActiveWorkbook.Sheets("Données").Range("C33") car dans la cellule C33 de la feuille Données, le 3$ est là.
 

gilbert_RGI

XLDnaute Barbatruc
Re : Code multipliant cellule avec variable VBA

Bonsoir

pour garder la structure d'origne

Code:
Sub test()
Dim Bav As Currency
Bav = ActiveWorkbook.Sheets("Données").Range("C33") 'supposons un montant de 3$
 nom = "nom" ' ceci pour donner un nom à la feuille
ActiveWorkbook.Sheets(nom).Range("S12").Formula = "=E18 *" & Bav
 
End Sub
:rolleyes:
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Code multipliant cellule avec variable VBA

Bonsoir le fil

Une autre façon de faire


Code:
Sub a()
Dim Bav As Range
Set Bav = ActiveWorkbook.Sheets(1).Range("C33")
Bav = 3: Bav.Copy
ActiveWorkbook.Sheets(2).Range("S12").PasteSpecial , 4
Application.CutCopyMode = False
End Sub
 

vistla

XLDnaute Junior
Re : Code multipliant cellule avec variable VBA

Je privilégie la version de gilbert_RGI, sauf que celle-ci renvoie un erreur lorsque la variable égale 3.5... sa version ne semble pas aimer les décimales.. si je mets le variable en integer, elle renvoie 3 (évidemment), .. comment faire pour que le 3.5 soit reporté en tant que "E18+3.5" dans la cellule S12?
 

vistla

XLDnaute Junior
Re : Code multipliant cellule avec variable VBA

j'ai essayé avec cette variante, mais encore une fois, les décimales ne suivent pas..

A1 = 2,5
A2 = 2000

Sub test()
Dim Bav As Currency

Bav = Range("A1")

Range("A3").Formula = "=PRODUCT(A2 *" & Bav & ")"

End Sub

LA cellule A3 se retrouve avec la formule "=PRODUIT(A2*2;5)" alors que je voudrais avoir "=PRODUIT(A2*2,5)"

Quelqu'un a une idée ?
 

Gorfael

XLDnaute Barbatruc
Re : Code multipliant cellule avec variable VBA

Salut vistla et le forum
LA cellule A3 se retrouve avec la formule "=PRODUIT(A2*2;5)" alors que je voudrais avoir "=PRODUIT(A2*2,5)"
J'ai parcouru le topic et je ne comprends pas le but de ta macro...
Petites remarques :
On n'est ni devin, ni télépathe. Donner des lambeaux de code n'est jamais une bonne idée pour le dépanner : Si tu n'arrives pas à le faire fonctionner comme tu penses qu'il devrais, l'erreur n'est pas forcément où Excel la situe.

Question :
Pourquoi tu ne nommes pas ta cellule ?
Ça te permettrait d'utiliser le nom dans tes formules, et si tu changes la valeur de la cellule, le nom ne change pas, lui, et ton changement sera bien répercuté sur les cellules contenant le nom.

Pourquoi utiliser Currency, plutôt que Double (surtout si ça génère des problèmes) ?

J'ai fais un test : A1=2,5 ; A2=2,5
Code:
Sub test()
Dim Bav As Currency
Bav = [A1]
[A3].FormulaLocal = "=A2*" & Bav
End Sub
A+
 
Dernière édition:

vistla

XLDnaute Junior
Re : Code multipliant cellule avec variable VBA

Le fichier excel est un fichier de facturation. J'ai une feuille "Modèle", servant de template.
j'ai une feuille "Données", la où est stocké mes variables.

La macro dont nous parlons ici permet de calculer la commission par caisses à facturer au client. Le nombre de caisse étant A2, et le taux de commissions en A1

l'idée c'est que ce fichier augmente de mois en mois. Chaque onglet est une facture. Évidemment, si le taux de commission ne change pas, oui, je nomme la cellule et tout est beau. Mais ce taux va changer avec le temps, et je ne veux pas que la facture créée il y a 6 mois change. Voilà pourquoi je voudrais que la formule dans la cellule A3 donne =A2*2.5 et non =A2*A1
 

Gorfael

XLDnaute Barbatruc
Re : Code multipliant cellule avec variable VBA

Salut vistla et le forum
Mais ce taux va changer avec le temps, et je ne veux pas que la facture créée il y a 6 mois change
C'est la problématique d'excel dans la facturation.

Pour moi (mais je ne suis pas dans la partie), une facture imprimée doit être figée => les cellules ne doivent plus que contenir des nombres qui ne doivent plus bouger et donc, les formules et les macros ne doivent plus exister : c'est une archive, comme une photocopie, ou un PDF, mais je conserve excel pour les utiliser à d'autres fins (stats, regroupements, etc...).
A+
 

gilbert_RGI

XLDnaute Barbatruc
Re : Code multipliant cellule avec variable VBA

Salut Gorfael,

Bref, selon toi, ce n'est pas possible de reporter une variable avec décimale, soit avec la fonction PRODUIT, ou "=A2*2.5" ?

Bonjour

tester ceci

Code:
Sub test()
 Dim Bav As String
 
 Bav = ActiveWorkbook.Sheets("Données").Range("C33") 'supposons un montant de 3$
 Bav = Replace(Bav, ",", ".")
  nom = "nom" ' ceci pour donner un nom à la feuille
 ActiveWorkbook.Sheets(nom).Range("S12").Formula = "=E18 *" & Bav
  
 End Sub

:rolleyes:
 

Discussions similaires

Statistiques des forums

Discussions
312 232
Messages
2 086 462
Membres
103 222
dernier inscrit
2BS