Supprimer un apostrophe en début de formule VBA

geo0258 Messages postés 24 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, voici mon problème

En cellule Y4 j'ai une formule =RECHERCHEH(X3;'Picklists Project'!1:4;4;FAUX)
Celle-ci va me ramener une chaine de caractère représentant une autre formule : ici elle donne :
'=si('1 - Project table'!B4="";"";SI(ESTERREUR(DATEVAL(TEXTE($X4;"jj/mm/aa")));"wrong";""))
Selon ce que je choisi comme valeur en X3 j'aurai différentes formules qui remonteront en Y4.

Je sélectionne ensuite ma cellule Y4 je copie et colle en valeur dans une autre cellule
Je me retrouve donc avec la formule ci-dessus qui a un apostrophe au début. Si je le supprime manuellement et que je fait entrée, ma formule n'est plus une chaine de caractère, elle devient active et fonctionne. Je cherche à reporduire cette action en VBA et je n'y arrive pas. Le but est que peut importe la formule qui s'affiche en Y4 je puisse la copier ailleurs, faire en sorte qu'elle ne soit pas considérée comme une chaine de caractère et ensuite l'étendre.

Je précise que j'ai déjà réussi à supprimer l'apostrophe avec la fonction MID, mais la formule ne s'active pas pour autant.

Voilà en eséprant avoir été assez clair dans mon explication.

Merci d'avance pour vos réponses

2 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    tu as une erreur dans la rédaction de ta formule sous réserve que ta feuille se nomme bien Project table
    et non pas 1 - Project table,
    remplace '1 - Project table'!B4 par 1 -'Project table'!B4
    ce qui te donnera
    =SI(1 -'Project table'!B4="";"";SI(ESTERREUR(DATEVAL(TEXTE($X4;"jj/mm/aa")));"wrong";""))

    0
    1. geo0258 Messages postés 24 Statut Membre
       
      Salut mike merci pour ta réponse. Par contre ma table s'appelle bien 1 - Project table

      Du coup ta solution ne fonctionne pas

      Pour info ma rechercheV en cellule Y4 va pointer dans la table Picklists Projects sur ça : ="=si('1 - Project table'!B4="""";"""";SI(ESTERREUR(DATEVAL(TEXTE("&ADRESSE(4;EQUIV("Start_date";'1 - Project table'!3:3;0);3;1)&";""jj/mm/aa"")));"&""""&"wrong"&""""&";""""))"

      du coup le résultat de ma rechercheV affiche ça : =si('1 - Project table'!B4="";"";SI(ESTERREUR(DATEVAL(TEXTE($X4;"jj/mm/aa")));"wrong";""))

      Et ensuite (petite correction par rapport à ce que j'ai écrit avant), lorsque que je copie colle le résultat de ma rechercheV par valeur il me rajoute un apostrophe devant ma formule, comme ça: '=si('1 - Project table'!B4="";"";SI(ESTERREUR(DATEVAL(TEXTE($X4;"jj/mm/aa")));"wrong";""))

      Et donc ensuite je le supprime manuellement, je tappe entrée et la formule marche. Et d'ailleurs je vais également apporter une correction sur ce que j'ai dit avant. L'apostrophe n'aparait pas quand on regarde simplement la cellule, il apparait quand on clic sur la cellule. Et donc quand j'utilise la fonction mid pour le supprimer, c'est mon = qui se fait supprimer en 1er. Mais l'apostrophe est toujours là quand je clic sur la cellule. J'ai donc plus l'impression que c'est une histoire de format, comme si ma formule était en format texte ou quelque chose du genre.
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    ' force le format texte.
    C'est faisable en vba mais si c'est juste pour que la formule soit lisible met simplement un espace devant.
    Ensuite un remplacer " =" par "=" sur la plage t'activera les formules.
    eric

    Edit : à faire dans ta plage du rechercheh() où je la suppose présente.

    0
    1. geo0258 Messages postés 24 Statut Membre
       
      Bonjour eriiic,

      Merci pour ta réponse malheureusement ta solution ne marche pas.
      Alors j'ai réussi à faire en sorte que l'apostrophe n'apparaisse plus. J'ai tout simplement essayé avec d'autres colonnes que la colonne Y et je n'avais pas d'apostrophe. Donc je ne sais pas pourquoi la colonne Y forçait le résultat à être un champ texte.

      Il n'empèche que même sans ça ma formule ne s'active toujours pas. Si j'essaie ta solution eriic, ça fonctionne mais sans utiliser VBA. Et le tout étant que mes utilisateurs n'aient pas à faire de manip à par appuyer sur un bouton. J'ai enregistré la macro qui correspond au fait de remplacer " =" par "=" mais ça ne fonctionne toujours pas.

      J'ai essayé avec FormulaR1C1 pour faire s'activer la formule mais je n'y arrive pas. Peut être que j'utilise mal la fonction, c'est la 1ere fois que je l'utilise. Est-ce que quelqu'un sait s'il y a une piste à creuser la dessus et la syntaxe que je devrais utiliser ? Ou une autre piste peut être ?
      0
    2. geo0258 Messages postés 24 Statut Membre
       
      Ok j'ai trouver la solution en cherchant sur le net
      Il faut simuler le fait de rentrer dans la cellule et ensuite de faire entrée

      Ca donne donc ça:
      Range("Y4").Select
      SendKeys "{F2}"
      SendKeys "{ENTER}"

      Merci à vous
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      oulalaaa... Sendkeys a la fâcheuse manie de désactiver le clavier numérique.
      With Range("G2:G10")
          .Formula = .Formula
      End With

      eric
      0