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 à 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
    1. Contributeur

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

      0
      1. Bonjour Yg

        Du code VBA.

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

        Merci !

        0
        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?

          0
      2. 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 ...

        0
        1. 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"

          0
          1. Contributeur

            Le tableau commence en colonne "A"?

            Range("MonTableau").columns(5).FormulaR1C1 = "=IF(RC[-2]<>3,""oui"",""non"")"
            0
        2. Non, en colonne C.
          Voici un exemple pour davantage de simplicité :

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

          Merci pour l'aide.

          0
          1. Contributeur

            Alors remplacer 5 par 3 dans la suggestion en #2, puisque c'est la 3e colonne de la zone nommée.

            0
        3. 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 ...

          0
          1. Contributeur

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

            0
        4. 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.

          0
          1. Contributeur

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

            0
        5. 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

          0