Partager via

[EXCEL2019][WIN10] Le code VBA "Replace" ne remplace aucun texte dans FormulaArray

Anonyme
2021-07-08T04:22:01+00:00

Bonjour @tous!

Pour contourner la limitation de 256 caractères de FormulaArray, j'ai essayé l'astuce ci-dessous pour retrouver ma formule matricielle complète:

Sub test()

Dim ligneMois

ligneMois = "(IFERROR(MONTH('Rest. (Total)'!R1C1:R999C1),0)=MONTH(R1C9))\*(IFERROR(YEAR('Rest. (Total)'!R1C1:R999C1),0)=YEAR(R1C9))\*ROW('Rest. (Total)'!R1:R999)" 

With Range("J1") 

    .FormulaArray = \_ 

        "=IFERROR(IF(SUMPRODUCT(1111)=0,0," & Chr(10) & \_ 

        "INDEX('Rest. (Total)'!R1C1:R999C5,SUMPRODUCT(1111)" & \_ 

        ",COLUMN('Rest. (Total)'!R1C1))),0)" & \_ 

        "" 

    .Replace What:="1111", Replacement:=ligneMois, LookAt:=xlPart[

End With 

End Sub

Tout se déroule bien jusqu'à la fin sans message d'erreur, mais le remplacement n'a pas été effectué tel que demandé.

Pouvez-vous m'aider svp?

D'avance un grand MERCI à tous qui prendront un temps pour mon problème!

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

Anonyme
2021-07-08T17:15:24+00:00

Nous utilisons un service de traduction pour assister nos utilisateurs. Veuillez nous excuser pour les éventuelles erreurs grammaticales.

Je viens d’essayer une fois de plus avec le même code en anglais et voici la vidéo ainsi:

https://1drv.ms/v/s!AoD7X2fui8e1ngg40rayAw7HcHD...

Il remplace de mon côté.

Cependant, je viens d’observer qu’il y a un espace supplémentaire dans le nom de la feuille (Rest. (Total)) - dans le code VBA. Alors que le nom réel de la feuille n’a pas beaucoup d’espace entre « Rest. » et « (Total) », pouvez-vous essayer de renommer la feuille en quelque chose de simple comme « Sheet2 » - remplacez le nom de la feuille dans le code VBA et réexécutez-le. Si vous ne souhaitez pas renommer la feuille, copiez-la et renommez-la et utilisez celle copiée dans le code VBA.

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

15 réponses supplémentaires

  1. Anonyme
    2021-07-08T12:34:26+00:00

    Tout à fait Bhavik!

    J'ai fait le même constat.

    Le souci est que j'ai beau chercher dans la formule ce qui ne va pas, mais je ne trouve rien d'anormal.

    • J'ai utilisé l'enregistreur de Macro pour voir si j'ai commis une erreur de frappe, mais non, tout est juste.
    • J'ai utilisé l'enregistreur de Macro, encore une fois, pour voir ce que ça donne en tapant "Ctrl+H" et en remplaçant manuellement. Le remplacement se fait sans problème :

    Image

    Par contre, comme mon Excel est en français, j'ai remarqué que l'enregistreur de Macro a écrit le code comme ceci :

    Image

    Et non comme ceci :

    Image

    J'ai donc essayé avec le texte, à remplacer, en français, mais ça n'a malheureusement donné aucun résultat.

    Je cherche encore, et c'est parce que ça fait longtemps maintenant que je cherche sans trouver que je me suis tourné vers vous.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2021-07-08T12:06:36+00:00

    Nous utilisons un service de traduction pour assister nos utilisateurs. Veuillez nous excuser pour les éventuelles erreurs grammaticales.

    J’ai essayé de créer et d’exécuter la même Macro de mon côté, ce que j’ai fait, c’est que, pour le moment, j’ai remplacé le

    Remplacement:=lineMonth

    avec

    Remplacement:="9999 »

    Et il a remplacé le « 1111 » par « 9999 » avec succès dans la cellule J1.

    Cela m’a fait penser que quelque chose ne va pas avec la ligne ci-dessous

    lineMonth = « (IFERROR(MONTH('Rest. (Total)'! R1C1:R999C1),0)=MOIS(R1C9))*(IFERROR(ANNÉE('Reste. (Total)'! R1C1:R999C1),0)=ANNÉE(R1C9))*ROW('Reste. (Total)'! R1:R999) »

    Peut-être que lineMonth n’est pas défini correctement.

    Pouvez-vous vérifier cela de votre côté une fois, s’il vous plaît?

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2021-07-08T08:27:17+00:00

    Bonjour Bhavik,

    Merci d'avoir pris le temps de me répondre.

    Ci-dessous l'image de mon code :

    D'avance merci encore!

    Evguen

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2021-07-08T05:39:56+00:00

    Nous utilisons un service de traduction pour assister nos utilisateurs. Veuillez nous excuser pour les éventuelles erreurs grammaticales.

    Salut Evguen,

    Désolé d’apprendre que vous rencontrez ce problème!

    Je suis Bhavik, un conseiller indépendant et un utilisateur de Microsoft comme vous. Veuillez noter que je ne suis pas un employé de Microsoft et que je n’ai pas d’accès direct à votre compte, mais je ferai tout ce que je peux pour vous aider avec vos questions. :)

    Deux choses, tout d’abord - pouvez-vous partager la capture d’écran de votre code de macro VBA car je veux juste confirmer qu’il n’a pas été modifié lors de la traduction automatique.

    Deuxièmement, si cela n’est pas modifié, pouvez-vous essayer le code ci-dessous?

    https://paste.pics/D4J3R

    J’ai apporté deux modifications.

    merci

    Bhavik|

    Un conseiller indépendant

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire