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 :

FormulaArray qui dépasse 255 caractères


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 64
    Par défaut FormulaArray qui dépasse 255 caractères
    Bonjour, j'ai une fonction vba qui dépasse 255 caractères(la limite de la fonction FormulaArray ), comment je peux résoudre ce problème? Mon code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set Ws = ThisWorkbook.Worksheets("Qualif opérateur  ")
    Seuil = Ws.Range("M3")
    Range("O2").Select
    Range("O2:O2306").FormulaArray = _
            "=IF(RC[-14]='Orange Business S',IF(AND(RC[-4]<=60*(1+Seuil),RC[-4]>=60*(1-Seuil)),'OBS Bimestriel',IF(AND(RC[-4]>=30*(1-Seuil),RC[-4]<=30*(1+Seuil)),'OBS Mensuel'RC[-14])),IF(RC[-14]='SFR Fixe',IF(AND(RC[-4]>=30*(1-Seuil),RC[-4]<=30*(1+'Qualif opérateur " & _
            ")),'SFR Fixe Mensuel',IF(AND(RC[-4]<=60*(1+Seuil),RC[-4]>=60*(1-Seuil)),'SFR Fixe Bimestriel',IF(AND(RC[-4]>=121*(1-Seuil),RC[-4]<=121*(1+Seuil)),'SFR Fixe Quadrimestriel',RC[-14]))),IF(RC[-14]='SFR','SFR Mobile',RC[-14])))"
    Selection.AutoFill Destination:=Range("O2:O2306")
    Merci en avance

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,


    Peux-être que tu peux utiliser des plages nommées ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 64
    Par défaut
    Est-ce que vous pouvez détailler votre idée?

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    la bonne question est :

    arrives-tu à saisir une telle formule directement dans une cellule d'une feuille de calcul ?

    Dans la négative, ce n'est pas la peine d'insister …


  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    C'est assez bizarre l'affichage des textes sous VBA. Pour ma part, cela marche lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    [Table14[Colonne2]].Formula = "= COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1] _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
     _
    Le petit trait (caractère de continuïté) en dernière ligne ne doit pas être enlevé.

    Le nombre de caractères de continuïté semble être limité par contre.

    Nota : Je suis en VBA7
    Zut, j'ai modifié entre temps, en voulant rajouter encore un peu de texte, mais ça ne marche plus. En tout cas, la version posté ne marche plus. Et pourtant, ça a marché chez moi puisque j'ai essayé de compté le nombre de caractères avec la fonction NB.CAR et elle indiquait que je dépassé 255 caratères.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [Table14[Colonne2]].Formula = "= COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
     _
     _
     _
    Celui-ci fonctionne tel qu'il est.


  7. #7
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonsoir,
    ce que je voulais ajouter c'est que: Excel permet de dépasser la limite de caractères avec l'opérateur de concaténations "&" que Nouveau2 a démontré. Je sais que certaines fonctions Excel impose la limite de 255 caractères pour les chaînes, Mais par contre ce que je ne sais pas c'est qu'il y a une limite de caractères pour la méthode FormulaArray.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Et si tu nous écrivais la formule telle apparaît dans ta cellule de la ligne 2 ?
    Personnellement, je préfère de loin écrire une formule avec Formula...

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Citation Envoyé par parmi Voir le message
    Bonjour,
    Et si tu nous écrivais la formule telle apparaît dans ta cellule de la ligne 2 ?
    Personnellement, je préfère de loin écrire une formule avec Formula...
    La propriété Formula sert à écrire des formules "classique" la propriété FormulaArray pour écrire des formules matricielles (Ctrl+Maj+Retour) et sa limite est effectivement de 255 caractères.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Citation Envoyé par NVCfrm Voir le message
    bonsoir,
    ce que je voulais ajouter c'est que: Excel permet de dépasser la limite de caractères avec l'opérateur de concaténations "&" que Nouveau2 a démontré. Je sais que certaines fonctions Excel impose la limite de 255 caractères pour les chaînes, Mais par contre ce que je ne sais pas c'est qu'il y a une limite de caractères pour la méthode FormulaArray.
    Le problème est qu'il a déjà utilisé un & .
    En calculant la longueur de ce texte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=IF(RC[-14]='Orange Business S',IF(AND(RC[-4]<=60*(1+Seuil),RC[-4]>=60*(1-Seuil)),'OBS Bimestriel',IF(AND(RC[-4]>=30*(1-Seuil),RC[-4]<=30*(1+Seuil)),'OBS Mensuel'RC[-14])),IF(RC[-14]='SFR Fixe',IF(AND(RC[-4]>=30*(1-Seuil),RC[-4]<=30*(1+'Qualif opérateur "
    La fonction NBCAR me donne 254 caractères.

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonsoir,

    La propriété Formula sert à écrire des formules "classique" la propriété FormulaArray pour écrire des formules matricielles (Ctrl+Maj+Retour) et sa limite est effectivement de 255 caractères.
    Ah, c'est bon à savoir.

    EDIT: Finalement, je ne suis pas sûr que l'écriture matricielle soit limité. J'ai testé sur une formule matricielle dépassant largement les 255 caractères et je sais que cette formule ne marche pas sans formule matricielle sous peine d'erreur. Cependant, j'ai testé en Excel. A voir en VBA donc.
    Dernière modification par Invité ; 12/07/2013 à 00h45.

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    EDIT: Finalement, je ne suis pas sûr que l'écriture matricielle soit limité. J'ai testé sur une formule matricielle dépassant largement les 255 caractères et je sais que cette formule ne marche pas sans formule matricielle sous peine d'erreur. Cependant, j'ai testé en Excel. A voir en VBA donc.
    Extrait de l'aide de VBA sur la propriété FormulaArray
    Syntaxe
    expression.FormulaArray
    expression Variable qui représente un objet Range.
    Remarques
    Si vous utilisez cette propriété pour entrer une formule sous forme matricielle, vous devez utiliser le style de référence L1C1, et non le style de référence A1 (consultez le second exemple).
    La propriété FormulaArray a également une limite de 255 caractères.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonsoir Philippe,
    très bonne info!
    c'est quand même curieux d'avoir les caractères limités en VBA et non dans le tableur.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Oui, c'est curieux, c'est à croire que Microsoft n'a plus mis à jour le VBA depuis la sorti de XL 2003

    Testé sur une formule en Excel, les formules matricielle avec plus de 255 caractères fonctionnent parfaitement.

    J'en vient à me demander si il ne serait pas possible de simuler des actions depuis le VBA vers Excel.
    Je n'ai pas réussi à trouver de racourci clavier pour accéder à la barre de formule Excel pour tester la fonction SendKeys. Ça pourrai donner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendKeys "^+{ENTER}", True
    Pour simuler un Ctrl+Maj+Enter en activant (.activate) la plage de cellules souhaité pour le calcul de plage en formule matricielle.

    D'autres solutions sinon ? Je ne sais pas si il existe justement des fonctions spéciales permettant d'accomplir des tâches Excel, un peu à la manière de la fonction SendKeys.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par parmi Voir le message
    Bonjour,

    Et si tu nous écrivais la formule telle apparaît dans ta cellule de la ligne 2 ?
    Personnellement, je préfère de loin écrire une formule avec Formula...
    Bonjour,

    J'avais pas vu ton message.

    Dans certains cas, il est très compliqué d'utiliser une formule basique.

    Un exemple concret:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = 10 *LOG10( 10^([@R1]/10) + 10^([@R2]/10) + 10^([@R3]/10) + 10^([@R4]/10) + 10^([@R5]/10) + 10^([@R6]/10) + 10^([@R7]/10) + 10^([@R8]/10) + 10^([@R9]/10) + 10^([@R10]/10) + 10^([@R11]/10) + 10^([@R12]/10) + 10^([@R13]/10) + 10^([@R14]/10) + 10^([@R15]/10) + 10^([@R16]/10) + 10^([@R17]/10) + 10^([@R18]/10) + 10^([@R19]/10)  ) - 10*LOG10(19)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {=10*LOG10(SOMME(10^((Tableau7[@[R1]:[R19]])/10))) - 10*LOG10(NB(Tableau7[@[R1]:[R19]]))}
    Ces 2 formules sont équivalentes, sauf que la 2ème est plus courte. Avec 500 valeurs plutôt que 19 valeurs, la 1ère formule serait hyper lourde à écrire, alors que la 2ème aurait le même nombre de caractères (à 4 caractères près).

  15. #15
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Nouveau2 Voir le message
    c'est à croire que Microsoft n'a plus mis à jour le VBA depuis la sorti de XL 2003
    Y a quand même eu une refonte lors de la version 2007 …
    Citation Envoyé par Nouveau2 Voir le message
    Testé sur une formule en Excel, les formules matricielle avec plus de 255 caractères fonctionnent parfaitement.
    Pour d'autres manipulations j'ai déjà réussi à briser la barrièrre des 255 caractères;

    si quelqu'un pouvait mettre en pièce jointe un classeur avec une formule matricielle dépassant bien cette limite
    (en nombre de caractères réel du côté feuille de calcul) afin de voir si l'une de mes astuces est applicable dans ce cas de figure …

  16. #16
    Invité
    Invité(e)
    Par défaut Bonjour,
    comme la justement démontré Nouveau2, VBA n'est pas limité en nombre de caractères, mais en nombre de caractères sur la même ligne.
    il faut la découper en plusieurs ligne concaténé avec un et commerciale [&].

    Citation Envoyé par Nouveau2 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [Table14[Colonne2]].Formula = "= COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
    & "*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])*COS([@Colonne1])" _
     _
     _
     _
    Celui-ci fonctionne tel qu'il est.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim txt as string
    txt="aa"
    txt=txt & "bb"
    cell.formular1c1=txt

  17. #17
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Astuce de J.Walkenbach trouvé sur ce site http://dailydoseofexcel.com/archives...rmulas-in-vba/ suite à une discussion
    Je l'ai testé il fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Public Sub LongArrayFormula()
        Dim theFormulaPart1 As String
        Dim theFormulaPart2 As String
        theFormulaPart1 = "=IF(MONTH(DATE(YEAR(NOW()),MONTH(NOW()),1))-" & _
                              "MONTH(DATE(YEAR(NOW()),MONTH(NOW()),1)-" & _
                              "(WEEKDAY(DATE(YEAR(NOW()),MONTH(NOW()),1))-1)+" & _
                              "{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1),""""," & _
                              "X_X_X())"
     
        theFormulaPart2 = "DATE(YEAR(NOW()),MONTH(NOW()),1)-" & _
                          "(WEEKDAY(DATE(YEAR(NOW()),MONTH(NOW()),1))-1)+" & _
                          "{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1)"
     
        With ActiveSheet.Range("E2:K7")
            .FormulaArray = theFormulaPart1
            .Replace "X_X_X())", theFormulaPart2
            .NumberFormat = "mmm dd"
        End With
     
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonjour Philippe Tulliez,
    le problème est que le compilateur Vb ne gère pas des ligne de texte trop longue dans l'éditeur.
    je rencontrais déjà ce phénomène en VB3,VB4....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Public Sub LongArrayFormula()
        Dim theFormulaPart As String
     
        theFormulaPart = "=IF(MONTH(DATE(YEAR(NOW()),MONTH(NOW()),1))-" & _
                              "MONTH(DATE(YEAR(NOW()),MONTH(NOW()),1)-" & _
                              "(WEEKDAY(DATE(YEAR(NOW()),MONTH(NOW()),1))-1)+" & _
                              "{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1),""""," & _
                              "X_X_X())"
     
        theFormulaPart = theFormulaPart & "DATE(YEAR(NOW()),MONTH(NOW()),1)-" & _
                          "(WEEKDAY(DATE(YEAR(NOW()),MONTH(NOW()),1))-1)+" & _
                          "{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1)"
     
        With ActiveSheet.Range("E2:K7")
            .FormulaArray = theFormulaPart
        End With
     
    End Sub

  19. #19
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 175
    Billets dans le blog
    53
    Par défaut
    Bonjour Robert,
    Au temps pour moi, je n'ai sans doute jamais utilisé des lignes de texte aussi longue par concaténation.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  20. #20
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous,

    Citation Envoyé par Marc-L Voir le message
    Y a quand même eu une refonte lors de la version 2007 …
    Pour d'autres manipulations j'ai déjà réussi à briser la barrièrre des 255 caractères;

    si quelqu'un pouvait mettre en pièce jointe un classeur avec une formule matricielle dépassant bien cette limite
    (en nombre de caractères réel du côté feuille de calcul) afin de voir si l'une de mes astuces est applicable dans ce cas de figure …
    http://cjoint.com/13ju/CGmk72Va5gK.htm

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Astuce de J.Walkenbach trouvé sur ce site http://dailydoseofexcel.com/archives...rmulas-in-vba/ suite à une discussion
    Je l'ai testé il fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Public Sub LongArrayFormula()
        Dim theFormulaPart1 As String
        Dim theFormulaPart2 As String
        theFormulaPart1 = "=IF(MONTH(DATE(YEAR(NOW()),MONTH(NOW()),1))-" & _
                              "MONTH(DATE(YEAR(NOW()),MONTH(NOW()),1)-" & _
                              "(WEEKDAY(DATE(YEAR(NOW()),MONTH(NOW()),1))-1)+" & _
                              "{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1),""""," & _
                              "X_X_X())"
     
        theFormulaPart2 = "DATE(YEAR(NOW()),MONTH(NOW()),1)-" & _
                          "(WEEKDAY(DATE(YEAR(NOW()),MONTH(NOW()),1))-1)+" & _
                          "{0;1;2;3;4;5}*7+{1,2,3,4,5,6,7}-1)"
     
        With ActiveSheet.Range("E2:K7")
            .FormulaArray = theFormulaPart1
            .Replace "X_X_X())", theFormulaPart2
            .NumberFormat = "mmm dd"
        End With
     
    End Sub
    Intéressant le Replace avec le With Range.
    J'ignorais complètement qu'on pouvait agir sur les formules ainsi.
    Dernière modification par Invité ; 12/07/2013 à 11h44.

Discussions similaires

  1. [XL-2013] Limite des 255 caractères dépassé
    Par Drami dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2015, 14h09
  2. Variables string limité à 255 caractères?
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 27/01/2006, 15h29
  3. SQL de plus de 255 caractères dans un recordset
    Par acama dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/01/2006, 15h50
  4. Bloc CSS qui dépasse...
    Par Silent dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/05/2005, 10h44
  5. [Application] Chaine de + de 255 caractéres
    Par Righetto Dominique dans le forum Langage
    Réponses: 6
    Dernier message: 26/03/2003, 22h49

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