Bonjour,

Je voudrais mettre par macro une formule dans une cellule (ca doit impérativement etre fait par macro).

J'ai commencé par construire ma formule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
=IF(B259<C259;IF(SUMIF(S12:S222;"<>0";W12:W222)+SUMIFS(Y12:Y222;S12:S222;"<>0";Y12:Y222;"<0")<0;"-";"")&IFERROR(TEXT(ABS(SUMIF(S12:S222;"<>0";W12:W222)+SUMIFS(Y12:Y222;S12:S222;"<>0";Y12:Y222;"<0"));"[h]:mm");TEXT(ABS(SUMIF(S12:S222;"<>0";W12:W222)+SUMIFS(Y12:Y222;S12:S222;"<>0";Y12:Y222;"<0"));"[u]:mm"));"")
Et puis j'ai voulu utiliser l'enregisteur de macro pour qu'il me la convertisse en code VBA.
Il a écrit ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    Range("L225").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[34]C[-10]<R[34]C[-9],IF(SUMIF(R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[11]:R[-3]C[11])+SUMIFS(R[-213]C[13]:R[-3]C[13],R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[13]:R[-3]C[13],""<0"")<0,""-"","""")&IFERROR(TEXT(ABS(SUMIF(R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[11]:R[-3]C[11])+SUMIFS(R[-213]C[13]:R[-3]C[13],R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[13]:R[-3]C[13],""<0"")" & _
        "mm""),TEXT(ABS(SUMIF(R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[11]:R[-3]C[11])+SUMIFS(R[-213]C[13]:R[-3]C[13],R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[13]:R[-3]C[13],""<0"")),""[u]:mm"")),"""")"
    Range("L226").Select
Mais si j'exécute le code tel quel, il plante avec une "Run-timme error 1004"

C'est la premiere fois que l'enregisteur me fais ce coup la (j'avoue que je me sens assez trahie)

J'ai corrigé le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Range("L225").FormulaR1C1 = "=IF(R[34]C[-10]<R[34]C[-9],IF(SUMIF(R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[11]:R[-3]C[11])+SUMIFS(R[-213]C[13]:R[-3]C[13],R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[13]:R[-3]C[13],""<0"")<0,""-"","""")&IFERROR(TEXT(ABS(SUMIF(R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[11]:R[-3]C[11])+SUMIFS(R[-213]C[13]:R[-3]C[13],R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[13]:R[-3]C[13],""<0"")),""[h]:mm""),TEXT(ABS(SUMIF(R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[11]:R[-3]C[11])+SUMIFS(R[-213]C[13]:R[-3]C[13],R[-213]C[7]:R[-3]C[7],""<>0"",R[-213]C[13]:R[-3]C[13],""<0"")),""[u]:mm"")),"""")"
Et maintenant ca fonctionne, mais je ne comprend pas pourquoi l'enregistreur se comporte de cette facon.
Qu'est-ce qu'il lui a pris de manger une partie du code en milieu de formule?
Au lieu d'écrire
il a mit ca
Ca fonctionne et donc c'est pas si grave, mais je ne comprend pas ce qui s'est passé

Quelqu'un a une idée?

Merci