IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Formule trop longue pour VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Par défaut Formule trop longue pour VBA
    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 :
    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""))))))))))"
    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
    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
    Mais je bute sur une erreur 1004 "Impossible de définir la propriété FormulaArray de la classe Range.

    Merci pour votre aide,

    Cordialement,

    Kair0

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    rentre là en normal avec .Formula, puis revalide-là en matricielle avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [A2].FormulaArray = [A2].Formula
    eric

    PS : il ne manque pas qq chose ici : lookat:=xl ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Par défaut
    Bonjour eriiic,

    Je suis désolé mais je n'ai pas compris ta réponse.

    Cordialement,

    Kair0

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With ActiveSheet.Range("A2")
                .Formula = FormulaPart1
                .Replace "XXX", FormulaPart2, lookat:=xl '??? à compléter
                .FormulaArray = .Formula
    End With
    eric

Discussions similaires

  1. Formule trop longue pour FORMULAR1C1
    Par bastba dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 24/04/2017, 17h58
  2. chaine trop longue pour être indexée
    Par ctobini dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 04/10/2007, 10h36
  3. Requête trop longue en VBA
    Par NicoMon dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/08/2007, 10h25
  4. [Formule] Optimisation (formule trop longue)
    Par Alqualonde dans le forum Excel
    Réponses: 6
    Dernier message: 21/05/2007, 17h08
  5. chaine trop longue pour envoyer en socket?
    Par jeje.r dans le forum C++Builder
    Réponses: 10
    Dernier message: 27/06/2003, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo