OVH Cloud OVH Cloud

Formule de type A1 dans VBA + variables

2 réponses
Avatar
Eric Tremblay
Bonjour =E0 vous,

comment puis-je faire pour mettre la formule ci-bas en=20
format A1 et lui int=E9grer des variables?

Par exemple, au lieu de R[-11]C[-2] j'aimerais D3 et=20
ainsi de suite. De plus, je ne voudrais pas inscrire D3=20
directement, mais plut=F4t Colonne & Ligne selon la valeur=20
des variables.

ActiveCell.FormulaR1C1 =3D _
"=3DIF(AND(R[-11]C[-2]=3D"""",R[-10]C[-2]=3D"""",R[-9]C
[-2]=3D""""),"""",IF(SUM((R[-8]C[-3]:R[-6]C[-3]))-R[-11]C[-
2]<0,Calculs!R[-12]C[-2],Calculs!R[-9]C[-2]+Calculs!R[-6]C
[-2]))"

Merci!

2 réponses

Avatar
AV
D'abord un truc pour t'en tirer bcp plus facilement :
Tu écris (teste) ta formule dans la feuille de calcul puis, en passant en mode
édition, tu copie l'intégralité du texte que tu colles ensuite dans VBA
Ca va faire par exemple :
SI(ET(D9="";D10="";D11="");"";SI(SOMME((C12:C14))-D9<0;Calculs!D8;Calculs!D11+Ca
lculs!D14))
Il te reste à remplacer les points-virgules par des virgules (édition >
remplacer), mettre les noms de fonctions en anglais, mettre un signe = devant et
(cas particulier doubler les guillemets)
Résultat :
ActiveCell "=IF(AND(D9="""",D10="""",D11=""""),"""",IF(SUM((C12:C14))-D9<0,Calculs!D8,Calcu
ls!D11+Calculs!D14))"

Pour intégrer une variable (D3 en lieu et place de D9), l'affaire se complique
car il faut concaténer les tout
Exemple (aatention aux retours à la ligne non souhaités !) :

varCol = 4
varLg = 3
varC = Cells(varLg, varCol).Address(0, 0) 'références relativesActiveCell "=IF(AND(" & varC & "="""",D10="""",D11=""""),"""",IF(SUM((C12:C14))-" & varC &
"<0,Calculs!D8,Calculs!D11+Calculs!D14))"

AV
Avatar
Eric Tremblay
Merci beaucoup Alain. Cela va aussi m'aider pour de
futurs situations!

Eric