Formules VB dans zone nommée

Résolu

Bonjour le forum !

J'essaie en vain de mettre en place en VB une fonction permettant, dans une zone nommée "MonTableau", de mettre 2 formules via VB :

- en colonne F zone "MonTableau": "=SI(R[-2]C<>3;"oui";"non")

- en colonne E zone "MonTableau": "=SI(R[-1]C<>5;"blanc";"bleu")

Je ne parviens pas à lui indiquer qu'il doit faire ça dans la zone nommée.

Puis-je vous demander un peu d'aide svp ?

Merci par avance


Windows / Firefox 111.0

9 réponses

  1. Bonjour ccm

    Oui, c'est tout à fait ce que cherchais, merci beaucoup.

    Carton plein.

    Comme Cjoint fait disparaître les fichiers, je remets le code ici pour la postérité :

    Sub Start()
    Dim f As String, cel As Range
    f = "=IF(RC[-2]<>3,""oui"",""non"")"
    For Each cel In Range("plage")
      cel.FormulaR1C1 = f
    Next cel
    End Sub

    Encore merci et bonne soirée

    1. Bonjour à tous les deux

      As tu essayé comme ça ?

      J'ai nommé plage la zone "F5:F16"

      Sub Start()
      Dim f As String, cel As Range
      f = "=IF(RC[-2]<>3,""oui"",""non"")"
      For Each cel In Range("plage")
        cel.FormulaR1C1 = f
      Next cel
      End Sub

      https://www.cjoint.com/c/MCAtonnxEcB

      Cdlmnt

      1. Non, je n'ai pas essayé.
        De toute évidence ça ne peut pas régler mon problème.

        Je ne m'exprime peut-être pas bien, ou vous n'avez pas lu ma question.

        Je suis désolé mais ça n'avance pas.

        1. Contributeur

          Ah bon?  Je pense que cela permet de régler le problème.

      2. Non, ce n'est pas le problème.

        On tourne en rond.
        Ce n'est pas la formule qui me pose problème !

        Peu importe la formule, celle-là ou une autre ...

        L'objectif c'est de mettre une formule, quelle qu'elle soit, dans toutes les cellules de la colonne E, de ma zone nommée "MonTableau" ...

        Et celà via VB. Je fais ceci pour réinitialiser les formules, ayant subi des effacements involontaires par des utilisateurs ...

        1. Contributeur

          As-tu testé la suggestion en #6, en remplaçant 5 par 3?

      3. En fait, via la macro, je dois implémenter cette formule dans toutes les cellules de la colonne E, de ma zone nommée "MonTableau"

        1. Contributeur

          Le tableau commence en colonne "A"?

          Range("MonTableau").columns(5).FormulaR1C1 = "=IF(RC[-2]<>3,""oui"",""non"")"
      4. J'ai du transformer un peu la formule pour que ça fonctionne :

        [F5].FormulaR1C1 = "=IF(RC[-2]<>3,""oui"",""non"")"

        "En colonne E" désigne bien toutes les cellules de la 5ème colonne.

        Désolé je suis très lent ...

        1. Bonjour Yg

          Du code VBA.

          Je veux réinitialiser ces formules dans mes 2 dernières colonnes périodiquement.

          Merci !

          1. Contributeur

            Commence à faire cela dans une cellule, pour maitriser la syntaxe:

            [X123].FormulaR1C1 = "=SI(R[-2]C<>3;"oui";"non")

            Cela fonctionne bien?

            Quand tu écris "en colonne E zone "MonTableau", il s'agit de la 5e colonne du tableau, ou de l'intersection du tableau avec la 5e colonne de la feuille?

        2. Contributeur

          bonjour, ce sont des formules ou du code VBA, ou encore autre chose?