Impossible de traduire une grosse formule en VBA

Bonjour à tous!

Etant nouveau sur le forum, je tiens à dire à chacun d'entre vous qui contribuez à aider les novices comme moi: MERCI!

Voici mon pb:

Je n'utilise le vba qu'avec l'enregistreur de macros et j'ai une formule assez fat qui n'est pas prise par la macro.

En cherchant, j'ai réussi à obtenir la traduction. J'ai saisi ma formule dans une cellule, et j'ai appliqué une macro ( Debug.Print ActiveCell.Formula)

En ouvrant la fenêtre d'exécution, j'obtiens cette traduction:

=IF((IF(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,4,FALSE)="PP",(Q4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,5,FALSE)))+(R4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,6,FALSE)))+(S4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,7,FALSE)))+ (T4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,8,FALSE)))+(U4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,9,FALSE)))+(V4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,12,FALSE)))+(W4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,11,FALSE)))+(X4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,13,FALSE)))+ (SUM(AA4:AD4)*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,12,FALSE)))+(((U4-AJ4)/30)*VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,10,FALSE)),(AF4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,5,FALSE)))+(AG4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,6,FALSE)))+(AH4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,7,FALSE)))+ (AI4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,8,FALSE)))+(AJ4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,9,FALSE)))+(AK4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,12,FALSE)))+(AL4*(VLOOKUP(

A4,'conditions cos'!$A$2:$O$4359,11,FALSE)))+(AM4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,13,FALSE)))+ (SUM(AP4:AS4)*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,12,FALSE)))+(((U4-AJ4)/30)*VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,10,FALSE))))-P4-IF(VLOOKUP(A4,'conditions cos'!$A$2:$P$4359,16,FALSE)="oui",M4,0)<0,0,(IF(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,4,FALSE)="PP",(Q4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,5,FALSE)))+(R4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,6,FALSE)))+(S4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,7,FALSE)))+ (T4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,8,FALSE)))+(U4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,9,FALSE)))+(V4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,12,FALSE)))+(W4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,11,FALSE)))+(X4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,13,FALSE)))+ (SUM(AA4:AD4)*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,12,FALSE)))+(((U4-AJ4)/30)*VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,10,FALSE)),(AF4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,5,FALS

E)))+(AG4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,6,FALSE)))+(AH4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,7,FALSE)))+ (AI4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,8,FALSE)))+(AJ4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,9,FALSE)))+(AK4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,12,FALSE)))+(AL4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,11,FALSE)))+(AM4*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,13,FALSE)))+ (SUM(AP4:AS4)*(VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,12,FALSE)))+(((U4-AJ4)/30)*VLOOKUP(A4,'conditions cos'!$A$2:$O$4359,10,FALSE))))-P4-IF(VLOOKUP(A4,'conditions cos'!$A$2:$P$4359,16,FALSE)="oui",M4,0))

Mais quand je lance ma macro pour appliquer ma formule ça ne marche pas

J'ai donc essayé ceci:

Range("AU19").Formula = "=IF...

ça ne marche toujours pas.

Pouvez-vous m'aider?

Merci à vous par avance

JM

Bonjour,

Pas trop sûr de ce que j'avance ... mais >

Le vba est english, mais les feuilles sont française (à moins que tu aies un Excel english).

Donc en vba on écrit : IF

Mais ce qu'on écrit dans la feuille, c'est SI.

>>> Range("AU19").Formula = "=SI...

ric

Bonjour ric,

merci pour ton message. Tu veux dire qu'avant ma formule , je dois mettre Range("AU19").Formula = "=SI...ma formule

dans le développeur?

Je viens d'essayer,

J'ai la première ligne qui est ok mais le reste ne passe pas. Je joins une capt d'ecran en pj

capture excel

Bonjour,

Si tu fais une condition dans VBA, on utilise IF, car, VBA a un langage anglais.

Mais comme ta formule sera écrite dans une cellule, il faut utiliser SI, car, le IF n'est pas reconnu dans une cellule.

Fais l'expérience, va dans une feuille, une cellule quelconque et tape : =IF(a1=2;5;7)

Tu vas avoir une erreur, car le IF n'est pas reconnu.

Donc, en VBA quand tu écris une formule dans une cellule, il faut utiliser le SI :

C4.Formula = "=SI(a1=2;5;7)"

Fait de tests avec des formules simples ... tu vas voir, c'est amusant ...

ric

Merci pour tes messages,

Mais ça ne fonctionne pas. Je pense que la formule est trop longue.

J'ai fait comme tu m'as dit et ça donne ça: (voir pj)

capt 2 excel

Pour info, voici ma formule en si, qui fonctionne en la rentrant simplement dans exel. Mais pas en VBA

SI((SI(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;4;FAUX)="PP";(Q4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;5;FAUX)))+(R4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;6;FAUX)))+(S4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;7;FAUX)))+ (T4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;8;FAUX)))+(U4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;9;FAUX)))+(V4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(W4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;11;FAUX)))+(X4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;13;FAUX)))+ (SOMME(AA4:AD4)*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(((U4-AJ4)/30)*RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;10;FAUX));(AF4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;5;FAUX)))+(AG4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;6;FAUX)))+(AH4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;7;FAUX)))+ (AI4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;8;FAUX)))+(AJ4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;9;FAUX)))+(AK4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(AL4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;11;FAUX)))+(AM4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;13;FAUX)))+ (SOMME(AP4:AS4)*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(((U4-AJ4)/30)*RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;10;FAUX))))-P4-SI(RECHERCHEV(A4;'conditions cos'!$A$2:$P$4359;16;FAUX)="oui";M4;0)<0;0;(SI(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;4;FAUX)="PP";(Q4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;5;FAUX)))+(R4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;6;FAUX)))+(S4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;7;FAUX)))+ (T4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;8;FAUX)))+(U4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;9;FAUX)))+(V4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(W4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;11;FAUX)))+(X4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;13;FAUX)))+ (SOMME(AA4:AD4)*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(((U4-AJ4)/30)*RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;10;FAUX));(AF4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;5;FAUX)))+(AG4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;6;FAUX)))+(AH4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;7;FAUX)))+ (AI4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;8;FAUX)))+(AJ4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;9;FAUX)))+(AK4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(AL4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;11;FAUX)))+(AM4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;13;FAUX)))+ (SOMME(AP4:AS4)*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(((U4-AJ4)/30)*RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;10;FAUX))))-P4-SI(RECHERCHEV(A4;'conditions cos'!$A$2:$P$4359;16;FAUX)="oui";M4;0))

Bonjour,

En VBA , les guillemets englobent du texte " mon texte avec espace " .

dans une formule à être écrire dans une cellule, il faut les doubler.

Je tente d'inscrire correctement ta formule en vba, mais pour l'instant, je n'y parviens pas.

ric

Entendu,

Merci 1000 x pour ton aide.

Je vais essayer. Si tu y arrives fais moi signe

Bonjour,

J'ai réussi en passant par l'enregistreur automatique :

J'ai collé la formule dans une cellule.

J'ai démarré l'enregistreur automatique.

J'ai sélectionné la formule dans la cellule, copier

Dans une autre cellule, j'ai collé.

J'ai arrêté l'enregistreur automatique ... et ça donne ....

    Range("AU19").FormulaR1C1 = _
        "=IF((IF(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,4,FALSE)=""PP"",(R[-8]C[7]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(R[-8]C[8]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(R[-8]C[9]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (R[-8]C[10]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,8,FALSE)))+" & _
        "(R[-8]C[11]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,9,FALSE)))+(R[-8]C[12]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(R[-8]C[13]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(R[-8]C[14]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(R[-8]C[17]:R[-8]C[20])*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C" & _
        "1:R4359C15,12,FALSE)))+(((R[-8]C[11]-R[-8]C[26])/30)*VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,10,FALSE)),(R[-8]C[22]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(R[-8]C[23]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(R[-8]C[24]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (R[-8]C[25]*(VLOOKUP(R[-8]C[-9]" & _
        ",'conditions cos'!R2C1:R4359C15,8,FALSE)))+(R[-8]C[26]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,9,FALSE)))+(R[-8]C[27]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(R[-8]C[28]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(R[-8]C[29]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(R[-8]C[32]:R[-8]C[35" & _
        "])*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((R[-8]C[11]-R[-8]C[26])/30)*VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,10,FALSE))))-R[-8]C[6]-IF(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C16,16,FALSE)=""oui"",R[-8]C[3],0)<0,0,(IF(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,4,FALSE)=""PP"",(R[-8]C[7]*(VLOOKUP(R[-8]C[-9],'condition" & _
        "s cos'!R2C1:R4359C15,5,FALSE)))+(R[-8]C[8]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(R[-8]C[9]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (R[-8]C[10]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,8,FALSE)))+(R[-8]C[11]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,9,FALSE)))+(R[-8]C[12]*(VLOOKUP(R[-8]C[-9],'conditio" & _
        "ns cos'!R2C1:R4359C15,12,FALSE)))+(R[-8]C[13]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(R[-8]C[14]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(R[-8]C[17]:R[-8]C[20])*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((R[-8]C[11]-R[-8]C[26])/30)*VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,10,FALSE)),(" & _
        "R[-8]C[22]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(R[-8]C[23]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(R[-8]C[24]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (R[-8]C[25]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,8,FALSE)))+(R[-8]C[26]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,9,FALSE))" & _
        ")+(R[-8]C[27]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(R[-8]C[28]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(R[-8]C[29]*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(R[-8]C[32]:R[-8]C[35])*(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((R[-8]C[11]-R[-8]C[26])/30)*VLOOKUP(R[-8]C[-9]," & _
        "'conditions cos'!R2C1:R4359C15,10,FALSE))))-R[-8]C[6]-IF(VLOOKUP(R[-8]C[-9],'conditions cos'!R2C1:R4359C16,16,FALSE)=""oui"",R[-8]C[3],0))" & Chr(10) & "                                                                                                                                                                                                                                     " & _
        "                           Haut" & _
        ""
  

ric

Slt Ric,

Merci pour ta réponse, mais ça ne marche pas.

J'ai essayé également comme ceci, mais la dernière ligne (range("AU4").Formula = Frm) sort en jaune

Sub Macro2()

'

' Macro2 Macro

'

'

Dim frm As String

frm = "=IF((IF(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,4,FALSE)=""PP"",(RC[-30]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(RC[-29]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(RC[-28]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (RC[-27]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,8,FALSE)))(RC[-26]*(VLOOKUP(RC[-46"

frm = frm & "tions cos'!R2C1:R4359C15,9,FALSE)))+(RC[-25]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(RC[-24]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(RC[-23]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(RC[-20]:RC[-17])*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],'c"

frm = frm & " cos'!R2C1:R4359C15,10,FALSE)),(RC[-15]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(RC[-14]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(RC[-13]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (RC[-12]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,8,FALSE)))+(RC[-11]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,9,FALSE"

frm = frm & "10]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(RC[-9]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(RC[-8]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(RC[-5]:RC[-2])*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,10,FALSE))))-RC["

frm = frm & "LOOKUP(RC[-46],'conditions cos'!R2C1:R4359C16,16,FALSE)=""oui"",RC[-34],0)<0,0,(IF(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,4,FALSE)=""PP"",(RC[-30]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(RC[-29]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(RC[-28]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (RC[-27]*(VLOOKUP"

frm = frm & "'conditions cos'!R2C1:R4359C15,8,FALSE)))+(RC[-26]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,9,FALSE)))+(RC[-25]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(RC[-24]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(RC[-23]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(RC[-20]:RC[-17])*(VLOOKUP(RC[-46],'conditions"

frm = frm & "1:R4359C15,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,10,FALSE)),(RC[-15]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(RC[-14]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(RC[-13]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (RC[-12]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,8"

frm = frm & "+(RC[-11]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,9,FALSE)))+(RC[-10]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(RC[-9]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(RC[-8]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(RC[-5]:RC[-2])*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((RC[-26]-RC"

frm = frm & ")*VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,10,FALSE))))-RC[-31]-IF(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C16,16,FALSE)=""oui"",RC[-34],0))"

Range("AU4").Formula = frm

End Sub

Bonjour,

J'ai enlevé mon texte, car il était erroné. Désolé ...

ric

Désolé, mais je ne comprends pas où tu veux en venir.

J'ai remplacé les if par des si, ça ne change rien

Allô

Je reviens

ric

Rebonjour,

Ce que je t'ai fait parvenir " Hier, 17:35 " ne fonctionne pas sur ta machine ?

C'est le code qu'il faut placer dans une macro.

ric

Bonjour,

.Formula veut les fonctions en anglais. Utiliser .FormulaLocal pour les mettre en français.

La taille d'une formule est limitée en vba (je ne me rappelle plus à combien, peut-être 250 car.)

Pour la diminuer tu peux nommer ta plage 'conditions cos'!R2C1:R4359C15 qui revient tout le temps, avec un nom assez court comme pl.

Si ça ne suffit pas il faudra que tu la découpes sur plusieurs colonnes.

eric

Bonjour Eric, merci pour ton conseil et merci également à ric mais je n'y arrive pas!

Je suis vraiement novice...

Quand tu dis découper, tu veux dire?

Dim frm As String

Frm = "........

Frm = Frm & ".......

Concrètement, ma formule excel de base c'est. N'y a-t-il aucun moyen de la traduire instantanément en VBA?

=SI((SI(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;4;FAUX)="PP";(Q4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;5;FAUX)))+(R4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;6;FAUX)))+(S4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;7;FAUX)))+ (T4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;8;FAUX)))+(U4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;9;FAUX)))+(V4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(W4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;11;FAUX)))+(X4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;13;FAUX)))+ (SOMME(AA4:AD4)*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(((U4-AJ4)/30)*RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;10;FAUX));(AF4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;5;FAUX)))+(AG4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;6;FAUX)))+(AH4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;7;FAUX)))+ (AI4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;8;FAUX)))+(AJ4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;9;FAUX)))+(AK4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(AL4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;11;FAUX)))+(AM4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;13;FAUX)))+ (SOMME(AP4:AS4)*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(((U4-AJ4)/30)*RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;10;FAUX))))-P4-SI(RECHERCHEV(A4;'conditions cos'!$A$2:$P$4359;16;FAUX)="oui";M4;0)<0;0;(SI(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;4;FAUX)="PP";(Q4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;5;FAUX)))+(R4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;6;FAUX)))+(S4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;7;FAUX)))+ (T4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;8;FAUX)))+(U4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;9;FAUX)))+(V4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(W4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;11;FAUX)))+(X4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;13;FAUX)))+ (SOMME(AA4:AD4)*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(((U4-AJ4)/30)*RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;10;FAUX));(AF4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;5;FAUX)))+(AG4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;6;FAUX)))+(AH4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;7;FAUX)))+ (AI4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;8;FAUX)))+(AJ4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;9;FAUX)))+(AK4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(AL4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;11;FAUX)))+(AM4*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;13;FAUX)))+ (SOMME(AP4:AS4)*(RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;12;FAUX)))+(((U4-AJ4)/30)*RECHERCHEV(A4;'conditions cos'!$A$2:$O$4359;10;FAUX))))-P4-SI(RECHERCHEV(A4;'conditions cos'!$A$2:$P$4359;16;FAUX)="oui";M4;0))

Je t'ai dit de nommer ta plage et de la remplacer par son nom dans la formule.

Ca va la raccourcir considérablement et ça suffira peut-être.

http://www.mdf-xlpages.com/modules/smartsection/item.php?itemid=63 Nommer une plage de cellules

Et tant qu'à faire tu peux faire un nom dynamique pour rechercher uniquement sur la plage nécessaire :

http://www.mdf-xlpages.com/modules/smartsection/item.php?itemid=64 Nommer une Plage Dynamique

eric

je viens de le faire,

la dernière mais ça ne fonctionne pas. Je ne suis pas certain que ce soit la taille

Sub Macro3()

'

' Macro3 Macro

Dim frm As String

frm = "=IF((IF(VLOOKUP(RC[-46],plage,4,FALSE)=""PP"",(RC[-30]*(VLOOKUP(RC[-46],plage,5,FALSE)))+(RC[-29]*(VLOOKUP(RC[-46],plage,6,FALSE)))+(RC[-28]*(VLOOKUP(RC[-46],plage,7,FALSE)))+ (RC[-27]*(VLOOKUP(RC[-46],plage,8,FALSE)))+(RC[-26]*(VLOOKUP(RC[-46],plage,9,FALSE)))+(RC[-25]*(VLOOKUP(RC[-46],plage,12,FALSE)))+(RC[-24]*(VLOOKUP(RC[-46],plage,11,FALSE)))+(RC[-23]*(VLOOKUP("

frm = frm & "plage,13,FALSE)))+ (SUM(RC[-20]:RC[-17])*(VLOOKUP(RC[-46],plage,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],plage,10,FALSE)),(RC[-15]*(VLOOKUP(RC[-46],plage,5,FALSE)))+(RC[-14]*(VLOOKUP(RC[-46],plage,6,FALSE)))+(RC[-13]*(VLOOKUP(RC[-46],plage,7,FALSE)))+ (RC[-12]*(VLOOKUP(RC[-46],plage,8,FALSE)))+(RC[-11]*(VLOOKUP(RC[-46],plage,9,FALSE)))+(RC[-10]*(VLOOKUP(R"

frm = frm & "age,12,FALSE)))+(RC[-9]*(VLOOKUP(RC[-46],plage,11,FALSE)))+(RC[-8]*(VLOOKUP(RC[-46],plage,13,FALSE)))+ (SUM(RC[-5]:RC[-2])*(VLOOKUP(RC[-46],plage,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],plage,10,FALSE))))-RC[-31]-IF(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C16,16,FALSE)=""oui"",RC[-34],0)<0,0,(IF(VLOOKUP(RC[-46],plage,4,FALSE)=""PP"",(RC[-30]*(VLOOKUP("

frm = frm & "lage,5,FALSE)))+(RC[-29]*(VLOOKUP(RC[-46],plage,6,FALSE)))+(RC[-28]*(VLOOKUP(RC[-46],plage,7,FALSE)))+ (RC[-27]*(VLOOKUP(RC[-46],plage,8,FALSE)))+(RC[-26]*(VLOOKUP(RC[-46],plage,9,FALSE)))+(RC[-25]*(VLOOKUP(RC[-46],plage,12,FALSE)))+(RC[-24]*(VLOOKUP(RC[-46],plage,11,FALSE)))+(RC[-23]*(VLOOKUP(RC[-46],plage,13,FALSE)))+ (SUM(RC[-20]:RC[-17])*(VLOOKUP(RC[-46],plage,1"

frm = frm & ")+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],plage,10,FALSE)),(RC[-15]*(VLOOKUP(RC[-46],plage,5,FALSE)))+(RC[-14]*(VLOOKUP(RC[-46],plage,6,FALSE)))+(RC[-13]*(VLOOKUP(RC[-46],plage,7,FALSE)))+ (RC[-12]*(VLOOKUP(RC[-46],plage,8,FALSE)))+(RC[-11]*(VLOOKUP(RC[-46],plage,9,FALSE)))+(RC[-10]*(VLOOKUP(RC[-46],plage,12,FALSE)))+(RC[-9]*(VLOOKUP(RC[-46],plage,11,FALSE)))+(RC[-8"

frm = frm & "P(RC[-46],plage,13,FALSE)))+ (SUM(RC[-5]:RC[-2])*(VLOOKUP(RC[-46],plage,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],plage,10,FALSE))))-RC[-31]-IF(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C16,16,FALSE)=""oui"",RC[-34],0))"

Range("AU4").Formula = frm

End Sub

Bonjour,

je pense que des caractères ont disparu entre ces 2 lignes

...(RC[-30]*(VLOOKUP("

frm = frm & "lage,5,FALSE)))...

Sa fonction est juste ceci devrait fonctionner :

    Range("AU4").FormulaR1C1 = _
        "=IF((IF(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,4,FALSE)=""PP"",(RC[-30]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(RC[-29]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(RC[-28]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (RC[-27]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,8,FALSE)))+(RC[-26]*(VLOOKUP(RC[-46" & _
        "tions cos'!R2C1:R4359C15,9,FALSE)))+(RC[-25]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(RC[-24]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(RC[-23]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(RC[-20]:RC[-17])*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],'c" & _
        " cos'!R2C1:R4359C15,10,FALSE)),(RC[-15]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(RC[-14]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(RC[-13]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (RC[-12]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,8,FALSE)))+(RC[-11]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,9,FALSE" & _
        "10]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(RC[-9]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(RC[-8]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(RC[-5]:RC[-2])*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,10,FALSE))))-RC[" & _
        "LOOKUP(RC[-46],'conditions cos'!R2C1:R4359C16,16,FALSE)=""oui"",RC[-34],0)<0,0,(IF(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,4,FALSE)=""PP"",(RC[-30]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(RC[-29]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(RC[-28]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (RC[-27]*(VLOOKUP" & _
        "'conditions cos'!R2C1:R4359C15,8,FALSE)))+(RC[-26]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,9,FALSE)))+(RC[-25]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(RC[-24]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(RC[-23]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(RC[-20]:RC[-17])*(VLOOKUP(RC[-46],'conditions" & _
        "1:R4359C15,12,FALSE)))+(((RC[-26]-RC[-11])/30)*VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,10,FALSE)),(RC[-15]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,5,FALSE)))+(RC[-14]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,6,FALSE)))+(RC[-13]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,7,FALSE)))+ (RC[-12]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,8" & _
        "+(RC[-11]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,9,FALSE)))+(RC[-10]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(RC[-9]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,11,FALSE)))+(RC[-8]*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,13,FALSE)))+ (SUM(RC[-5]:RC[-2])*(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,12,FALSE)))+(((RC[-26]-RC" & _
        ")*VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C15,10,FALSE))))-RC[-31]-IF(VLOOKUP(RC[-46],'conditions cos'!R2C1:R4359C16,16,FALSE)=""oui"",RC[-34],0))"
Rechercher des sujets similaires à "impossible traduire grosse formule vba"