Value Vs Formula R1C1

Résolu/Fermé
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 - 29 juin 2015 à 04:05
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 - 29 juin 2015 à 15:48
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

ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 69
Modifié par ch_mika le 29/06/2015 à 15:48
Merci à tous pour vos éclairages, c'est très apprécié.
Je mets le post en résolu.
1
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
29 juin 2015 à 06:42
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
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 69
29 juin 2015 à 07:18
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
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 29/06/2015 à 08:14
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
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 69 > eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024
29 juin 2015 à 15:42
Bonjour 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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 29/06/2015 à 08:31
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
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 69
29 juin 2015 à 15:47
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