Value Vs Formula R1C1

Résolu
Bonjour à tous,

Je démarre dans VBA et je n'arrive pas à faire la différence entre value et formula R1C1.
J'ai lu sur certains forum que formula était pour les formules, hors je me suis fais une petite macro très simple qui a pour but de simplement écrire mon prénom dans une cellule et quand je vais dans le code, voici ce que je vois :
ActiveCell.FormulaR1C1 = "michaël".
Ce n'est donc pas une formule mais bien une valeur non ? C'est quoi la différence entre les deux et à quel moment dois-je utiliser l'un ou l'autre ?

Quelqu'un peut-il me renseigner car j'ai du mal à comprendre ?
Merci d'avance.

3 réponses

  1. Bonjour,

    si tu avais mis
    ActiveCell.FormulaR1C1 = "=""michaël"""
    tu aurais eu une formule c'est à dire que
    ActiveCell.HasFormula
    aurait été à VRAI.
    Au bout du compte,
    ActiveCell.value
    est la même dans les 2 cas.

    Quand tu saisis une formule avec des références à d'autres cellules, la différence entre les propriétés Formula, FormulaLocal, FormulaArray, FormulaR1C1, FormulaR1C1Local et Value est plus criante.

    Essaye ce code en mode pas à pas et met des espions sur chaque cellule et sur ActiveCell.
    Sub test()
    [B37] = "=""toto"""
    [B38] = "titi"
    [B39] = [B37] & [B38]
    [B40] = Range("B37").FormulaR1C1
    [B41] = Range("B37").Value
    ActiveCell.Formula = "=B37&B38"
    End Sub


    cordialement
    0
    1. Tout d'abord, merci d'avoir répondu.

      Ensuite, si je comprends bien (excuse moi d'ailleurs si je n'ai pas bien saisi, je suis novice) les 2 formules sont identiques et on peut utiliser les deux, seule la syntaxe permet de savoir si on a affaire à une formule ou une valeur c'est bien ça ?
      Car j'ai mis des espions sur les différentes cellules de ton code et j'ai effectivement vu les formules, ensuite j'ai repris ton code en jouant avec value et formulaR1C1 et le résultat était le même.

      Par exemple :
      [B37] = "=""toto"""
      Range("B38").Value = "=""toto"""
      Range("B39").FormulaR1C1 = "toto"

      donne exactement le même résultat dans les 3 cellules ainsi que dans la barre de formule.
      0
    2. Contributeur
      Bonjour,

      Ensuite, si je comprends bien (excuse moi d'ailleurs si je n'ai pas bien saisi, je suis novice) les 2 formules sont identiques et on peut utiliser les deux, seule la syntaxe permet de savoir si on a affaire à une formule ou une valeur c'est bien ça ?
      Pas du tout.
      Si ta formule est =A1+B1 et que le résultat est 5 :
      .value => 5
      et .formula => "=A1+B1"

      Soit tu veux voir la valeur, le résultat, soit tu veux voir la formule (qui est identique à la valeur si c'est une constante que tu as saisis)
      Note que tu as aussi .formulaLocal qui permet de voir la formule en français telle que tu l'as saisies.
      eric
      0
    3. @eriiicBonjour eriiic,

      Ha ok, je comprends le concept maintenant et effectivement, j'avais mal compris précédemment. Dur dur les débuts lol
      Merci pour ton éclairage en tout cas.
      0
  2. Contributeur
    Bonjour

    Généralement, VBA est fait pour donner des valeurs et non des formules que l'on devrait pouvoir faire "à la main"; toutefois, écrire des formules en VBA peut s'avérer intéressant dans certains cas. Par ex: les valeurs en amont changent souvent et la formule écrite par VBA permet de répondre sans avoir à relancer la macro

    L'enregistreur de macro, bien pratique, ne fait qu'enregistrer ce que tu fais sur excel d'où des lignes avec des formula.R1C1. pour des automatismes simples cela suffit largement.

    Question syntaxe , Jvdo (bonjour) t'as bien montré la différence

    ci dessous un lien très pédagogique pour apprendre presque tranquilement le VBA (basé sur XL2000)
    http://www.info-3000.com/vbvba/cours/index.php
    Michel
    0
    1. Bonjour,

      Les macros ont effectivement leur limite, c'est pour ça que je me lance dans VBA où la seule limite sera mon imagination.
      Merci pour le lien, il me sera très utile c'est certain.
      0
  3. Merci à tous pour vos éclairages, c'est très apprécié.
    Je mets le post en résolu.
    1