Spécification obligatoire de Value pour un range

Bonjour,

Lors de l'écriture d'une macro, je me suis rendu compte qu'il me fallait obligatoirement spécifier ".value" pour un range.

Je n'arrive pas à en voir la raison; pourquoi la propriété "value" n'est-elle pas attribuée par défaut ?

Je joins un fichier exemple reprenant le contexte.

Merci d'avance pour vos éclaircissements.

Cordialement

12test-value.xlsm (13.36 Ko)

Moi je dirais que c'est l'inverse, pourquoi bon sang VBA accepte une telle liberté de penser qu'il faille parfois ajouter de lui-même .value ? et pourquoi pas l'adresse .address ?

Avec Google Sheet c'est plus clair : il y a la cellule (feuille.getRange('A1')) et sa valeur (feuille.getRange('A1').getValue()).

En tous cas, quand la valeur est incluse dans une fonction, mieux vaut mettre .value, et dans un dico.scripting c'est indispensable sinon le dico enregistre le range et pas la valeur.

Bonsoir …

«Lors de l'écriture d'une macro, je me suis rendu compte qu'il me fallait obligatoirement spécifier ".value" pour un range. »

Ce n'est pas toujours exigé !

Tu as, ici, un des casla déclaration de type est obligatoire.

Range("A2").Text irait mieux car le nom d'une feuille est obligatoirement un texte !

Tu en auras d'autres comme par exemple ListBox1.List = Range("A2:B8") où c'est le .Value qui est exigé.

Salut haonv,

j'ai déjà constaté que Worksheets("XX") était très sensible au type de données, impérativement String.
Or, de ce que je viens de lire, .Value renvoie une valeur en Variant, que je suppose alors forcée selon le format de la cellule.

Vérifie si la cellule [A2] est en format 'Texte' : .Value passerait donc une String... ce que ne fait pas Range SANS .Value...

Ceci, par contre, passe très bien où Cstr force la conversion de [A2] ( SANS .Value) en String.

Worksheets(CStr(Worksheets("ShRef").Range("A2")))

C'est ainsi que, nébuleusement, j'interprète d'expérience ce comportement


A+

Merci pour vos réponses et vos conseils.

J'ai refait des tests sur la macro et j'arrive à mieux cerné le problème.

Dorénavant, je m'affranchirai moins de omettre .value et réfléchirai mieux à ce que je veux récupérer.

Enfin, je vais essayer.

Cordialement

Rechercher des sujets similaires à "specification obligatoire value range"