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?
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
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))"
