Fonction Excel en VBA

  • Initiateur de la discussion Initiateur de la discussion pascal82
  • 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 !

pascal82

XLDnaute Occasionnel
Bonjour à toutes et à tous,

J’essaye en vain de passer une formule Excel en VBA sans succès.
Je veux que s’affiche en « CG3 » la formule suivante : '=SI(ET((B3+B4)<(B3);B1=1);1;SI(ET((B3+B4)<(B3);B1=0);2;""))
Avec pour compliquer un peu les variables B et D. Je joins mon essai incomplet et qui ne fonctionne pas.

Code:
Sub MacroTest()

Dim B As Double
Dim D As Double
For B = 0 To 5
For D = (B + 1) To 5
 
'=SI(ET((B3+B4)<(B3);B1=1);1;SI(ET((B3+B4)<(B3);B1=0);2;""))
' est la formule Excel qui doit s'afficher en CG3

Range("CG3").FormulaR1C1 = "=IF(and(((R[" & B & "]C[-83]+R[" & D & "]C[-83])< R[0]C[-83]);R[-2]C[-83]=1);1;((R[" & B & "]C[-83]+R[" & D & "]C[-83])< R[0]C[-83]);R[-2]C[-83]=0);2;"")"

Next D
Next B

End Sub

Merci par avance
 
Re : Fonction Excel en VBA

bonjour Pascal82,
pas spécialiste des formules mais
tu peux essayer
a+
papou🙂
Code:
Sub MacroTest()

Dim B As Double
Dim D As Double
For B = 1 To 5
For D = (B + 1) To 5
 
'=SI(ET((B3+B4)<(B3);B1=1);1;SI(ET((B3+B4)<(B3);B1=0);2;""))
' est la formule Excel qui doit s'afficher en CG3

Range("CG3").FormulaR1C1 = "=IF(and((R[" & B & "]C[-83]+R["  & D & "]C[-83])< R[0]C[-83]);R[-2]C[-83]=1);1;((R[" & B  & "]C[-83]+R[" & D & "]C[-83])<  R[0]C[-83]);R[-2]C[-83]=0);2;"""")"

Next D
Next B
EDIT: Bonjour Mireille🙂
 
Dernière édition:
Re : Fonction Excel en VBA

Bonjour,

tu vas te retrouver avec D = 6 to 5 ...
Par ailleurs, si tu mets toutes tes formules dans la même cellule CG3, tu obtiendras juste la dernière car elles vont s'effacer les unes les autres.

Ca vient peut-être de moi mais je ne comprends pas du tout ce que tu veux faire.
Peut-être avec une petit extrait de fichier décrivant ce que tu veux obtenir pourrait-il nous aider ...

Bonne journée,

mth

Edit: Boujour papou 🙂
Bon, ben c'est clair, j'ai rien compris !!
@ +
m
 
Re : Fonction Excel en VBA

Re Mireille🙂 pascal Hasco🙂 le forum
en relisant ta formule
Code:
'=SI(ET((B3+B4)<(B3);B1=1);1;SI(ET((B3+B4)<(B3);B1=0);2;""))
' est la formule Excel qui doit s'afficher en CG3
tu veux chercher quoi exactement??? si B4 est négatif??? tuas deux conditions identiques qui donnent des résultats différents!!! ????
alors si 4 et égal à 2, oui cela va marcher autrement il faut savoir ce que tu veux
a+
papou🙂
 
Dernière édition:
Re : Fonction Excel en VBA

bonjour,
Voici la manière la plus claire de formuler Range CG3 :

Range("CG3").Formula = "=IF(AND((B3+B4)<(B3),B1=1),1,IF(AND((B3+B4)<(B3),B1=0),2,""""))"

Même observation que mth
Tu peux appliquer autant de boucles avec les variables que tu veux à cette formule, Range("CG3"). restera Range("CG3"). et seule la dernière valeur de tes variables sera retenue...

A+
 
Re : Fonction Excel en VBA

Bonjour à tous, bonjour pascal82.

Pou obenir la formule désirée en CG83 :
HTML:
Range("CG3").FormulaR1C1 = "=IF(AND((RC[-83]+R[1]C[-83])<(RC[-83]),R[-2]C[-83]=1),1,IF(AND((RC[-83]+R[1]C[-83])<(RC[-83]),R[-2]C[-83]=0),2,""""))"
Pour le reste, je ne sais pas ce que tu veux faire avec ta boucle, mais là, c'est l'opulence !
Dim B As Double
Dim D As Double
For B = 0 To 5
For D = (B + 1) To 5

Il ne me semble en effet pas nécessaire de déclarer en double une variable qui va prendre les valeurs 0 à 6 ! une petite Byte suffirait, non ?
🙂
 
- 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

Discussions similaires

Réponses
5
Affichages
245
Réponses
10
Affichages
271
Réponses
4
Affichages
180
  • Question Question
Microsoft 365 Formule si ?
Réponses
7
Affichages
375
Retour