VBA Suppression Opérateur d’intersection implicite : @

Anonyme
2020-09-08T18:32:27+00:00

Bonjour,

J'ai dans VBA une ligne :

Cells(i, 16).Formula =MIN(IF(N('Récap-A'!$A$4:$A$4500>=DATE(2014,1,15))*N('Récap-A'!$A$4:$A$4500<=DATE(2020,8,30))*N(TRIM('Récap-A'!$C$4:$C$4500)=TRIM(EtatCivil!$A361))*N(TRIM('Récap-A'!$D$4:$D$4500)=TRIM(EtatCivil!$B361))*N('Récap-A'!$E$4:$E$4500<>0)=1,'Récap-A'!$A$4:$A$4500,""))

Lorsqu'elle est appliquée à une cellule Excel depuis peu elle est "agrémentée" avec plusieurs @ ce qu'il la rend inopérante et j'obtiens le code #VALEUR!

Comment faire dans VBA pour que la transposition dans une feuille Excel les @ n'apparaissent pas et que ma formule redevienne opérationnelle ?

Merci pour votre aide.

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

17 réponses

  1. Anonyme
    2020-09-09T13:24:05+00:00

    Post Scriptum

    Je m'aperçois que j'ai encore fait une erreur de copier/coller.

    Il faut lire :

    Cells(361, 18).formula = "=SOMMEPROD (etc...

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

    0 commentaires Aucun commentaire
  2. Anonyme
    2020-09-09T13:19:36+00:00

    Bonjour Daniel

    Voici ma réponse à ta demande :

    Dans ma macro VBA la ligne est :

    Cells (361,16).formula = "=MIN(N('Récap-A'!$A$4:$A$4500>=DATE(2014,1,15)),N('Récap-A'!$A$4:$A$4500<=DATE(2020,8,30)),N(TRIM('Récap-A'!$C$4:$C$4500)=TRIM(EtatCivil!$A361)),N(TRIM('Récap-A'!$D$4:$D$4500)=TRIM(EtatCivil!$B361)),N('Récap-A'!$E$4:$E$4500=0))"

    Cela donne dans la feuille Excel, cellule (361 ;16)

    =MIN(SI(N(@'Récap-A'!$A$4:$A$4500>=DATE(2014;1;15))*N(@'Récap-A'!$A$4:$A$4500<=DATE(2020;8;30))*N(SUPPRESPACE(@'Récap-A'!$C$4:$C$4500)=SUPPRESPACE(EtatCivil!$A361))*N(SUPPRESPACE(@'Récap-A'!$D$4:$D$4500)=SUPPRESPACE(EtatCivil!$B361))*N(@'Récap-A'!$E$4:$E$4500<>0)=1;'Récap-A'!$A$4:$A$4500;""))

    Le résultat de cette cellule avec @ est alors #VALEUR!

    Si dans la formule de la cellule je supprime tous les @ le résultat est alors numérique 41655 (soit le 16/01/2014). J’ai vérifié manuellement que cette valeur est bien la bonne.

    Avec une autre fonction mais avec des paramètres quasiment identiques en VBA, la ligne est

    Cells(361, 18) = "=SOMMEPROD(N('Récap-A'!$A$4:$A$4500>=DATE(2014,1,15)),N('Récap-A'!$A$4:$A$4500<=DATE(2020,8,30)),N(TRIM('Récap-A'!$C$4:$C$4500)=TRIM(EtatCivil!$A361)),N(TRIM('Récap-A'!$D$4:$D$4500)=TRIM(EtatCivil!$B361)),'Récap-A'!$E$4:$E$4500) "

    Cela donne dans la feuille Excel et dans la cellule (361 ;18)

    =@SOMMEPROD(N(@'Récap-A'!$A$4:$A$4500>=DATE(2014;1;15));N(@'Récap-A'!$A$4:$A$4500<=DATE(2020;8;30));N(SUPPRESPACE(@'Récap-A'!$C$4:$C$4500)=SUPPRESPACE(EtatCivil!$A361));N(SUPPRESPACE(@'Récap-A'!$D$4:$D$4500)=SUPPRESPACE(EtatCivil!$B361));N(@'Récap-A'!$E$4:$E$4500<>0))

    Le résultat de cette cellule avec @ est alors #NOM ?

    Si dans la formule de la cellule je supprime tous les @ le résultat est alors numérique = 14 (valeur vérifiée manuellement).

    Pour information :

    VBA version 1099, VBA retail 7.1.1099, Forms3 : 16.0.13127.20204

    Micosoft Excel pour Microsoft 365 MSO 16.0.1312720266) 64 bits

    Windows 10 Professionnel, version 1909 installée le 16/10/2019, version de l’OS 1983631016

    Il y a quelques temps encore les formule VBA de cette nature se transféraient sans problème vers les feuilles Excel.

    Merci pour ton aide et cordialement

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

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2020-09-09T05:26:26+00:00

    Peux-tu poster exactement la formule telle qu'elle est générée dans Excel (avec les "@") ?

    Daniel

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

    0 commentaires Aucun commentaire
  4. Anonyme
    2020-09-08T19:05:17+00:00

    En fait en début et en fin de formule il y a des guillemets que j'ai oublié de mettre dans le copier/coller de ma question. 

    Pour être plus explicite, lorsque ma formule est transposée par ma macro dans une feuille Excel, j'ai un code erreur. Mais lorsque je supprime tous les @ qui apparaissent dans la formule transposée dans la feuille j'ai un résultat satisfaisant. Mon problème est que je ne peux pas faire ces suppressions manuellement sur plusieurs millier de cellules

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

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2020-09-08T18:52:26+00:00

    Bonjour,

    Ta formule ne peut pas fonctionner comme ça. Essaie :

    Cells(i, 16).Formula = "=MIN(IF(N('Récap-A'!$A$4:$A$4500>=DATEserial(2014,1,15))*N('Récap-A'!$A$4:$A$4500<=DATEserial(2020,8,30))*N(TRIM('Récap-A'!$C$4:$C$4500)=TRIM(EtatCivil!$A361))*N(TRIM('Récap-A'!$D$4:$D$4500)=TRIM(EtatCivil!$B361))*N('Récap-A'!$E$4:$E$4500<>0)=1,'Récap-A'!$A$4:$A$4500,""""))"

    Daniel

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

    0 commentaires Aucun commentaire