Bonjour à tous,
Pour un reporting j'ai une formule excel à intégrer en VBA, elle fait 577 caractères alors que VBA n'en accepte que 500.
Voici ma formule :En fouillant un peu sur le net, j'ai trouvé des solutions pour séparer en deux ma formule grace à VBA et ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 "=IF(RC[-8]=""BCG CALCULATION"",""BCG CALCULATION"",IF(RC[-8]=""BAC CALCULATION"",""BAC CALCULATION"",IF(RC[-8]=""TO BE PUSHED"", ""TO BE PUSHED"",IF(RC[-8]= ""OUT OF OFS SCOPE"",""OUT OF OFS SCOPE"",IF(RC[-8]=""ISM CALCULATION"",""ISM CALCULATION"",IF(RC[-8]=""SRS CALCULATION"",""SRS CALCULATION"",IF(RC[-8]=""AMOUNT"",""AMOUNT"",IF(AND(RC[-11]=""NON " & _ "RC[-8]<>""OFS DATA MODEL""),""MISSING MAPPING OFS/UP"",IF(RC[-8]=""OFS DATA MODEL"",""OFS DATA MODEL"",IF(OR(RC[1]=""OUI"",RC[2]=""OUI"",RC[3]=""OUI""),""OUI"",""NOT CONTROLLED YET""))))))))))"
Mais je bute sur une erreur 1004 "Impossible de définir la propriété FormulaArray de la classe Range.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim FormulaPart1 As String, FormulaPart2 As String FormulaPart1 = "=IF(RC[-8]=""BCG CALCULATION"",""BCG CALCULATION"",IF(RC[-8]=""BAC CALCULATION"",""BAC CALCULATION"",IF(RC[-8]=""TO BE PUSHED"", ""TO BE PUSHED"",IF(RC[-8]= ""OUT OF OFS SCOPE"",""OUT OF OFS SCOPE"",IF(RC[-8]=""ISM CALCULATION"",""ISM CALCULATION"",IF(RC[-8]=""SRS CALCULATION"",""SRS CALCULATION"",IF(RC[-8]=""AMOUNT"",""AMOUNT"",IF(AND(RC[-11]=""NON " & "RC[-8]<>""OFS DATA MODEL""),""MISSING MAPPING OFS/UP"",XXX))))))))" FormulaPart2 = "IF(RC[-8]=""OFS DATA MODEL"",""OFS DATA MODEL"",IF(OR(RC[1]=""OUI"",RC[2]=""OUI"",RC[3]=""OUI""),""OUI"",""NOT CONTROLLED YET""))" With ActiveSheet.Range("A2") .FormulaArray = FormulaPart1 .Replace "XXX", FormulaPart2, lookat:=xl End With
Merci pour votre aide,
Cordialement,
Kair0
Partager