Range et []

Excel_lent

XLDnaute Impliqué
Bonjour à tous,

Il y a deux catégories de programmeurs :
-ceux qui sont pour écrire le maximum et
-ceux qui sont pour minimaliser le code.
Il y a ceux qui écrivent Range("A1") au lieu de Range("A1").Value.
D'autres qui utilisent [A1] au lieu de Range("A1").

Etant de la troisième catégorie*, j'ai cherché** s'il y avait une différence de sens (hors goût, habitude …) entre ces 2 dernières écritures.
Je précise que le propos ne porte pas sur une différence entre Range("A1").Value et Range("A1").Formula !
Le petit fichier joint apporte peut-être un autre éclairage.
Si certains ont des explications détaillées, je suis preneur.




* comme le plus grand nombre je pense
** comme beaucoup
 

Pièces jointes

  • Range E.zip
    10 KB · Affichages: 28

Pyrof

XLDnaute Occasionnel
Re : Range et []

Bonjour,

Il une autre catégorie :

cells(1,1)+cells(1,2)

Je n'utilise jamais range pour une seule cellule et je n'utilise jamais "A1". Il est plus facile d'utiliser des valeurs numériques

J'utilise range pour:
range(cells(1,1),cells(10,5))
 

mécano41

XLDnaute Accro
Re : Range et []

Bonjour,

Tu as oublié ceux qui préfèrent s'embêter avant, en nommant les cellules et en écrivant :

Range("Valeur1").Value + Range("Valeur2").Value

pour ne pas s'embêter après. S'il faut ajouter des lignes ou des colonnes dans la feuille, il n'y a rien à changer dans le code. En plus, pour moi, ça parle mieux car je donne des noms explicites. Ce n'est qu'un avis :)

Cordialement
 

michel_m

XLDnaute Accro
Re : Range et []

Bonjour,

la notation [...] ou evaluate (....) a été créée pour pouvoir utiliser des formules matricielles avec VBA.
la variable est alors définie sur l'ensemble de l'instruction comprise dans les crochets.
si on marque
mavar = [A1] + range("A2") (ou cells(x,y))

cette saisie est donc illogique car elle ferme l'évaluation alors qu'il y a autre chose à faire. En fermant trop tôt ou en ouvrant trop tard le crohets, le compilateur ne s'intéresse pas à ce qui est en dehors des crochets.

La rigueur voudrait que l'on emploie la fonction evaluate qu'en matriciel. Marqué [A1] est "prendre un marteau pour etc." mais ca m'arrive souvent de l'écrire car mon poil dans la main est prioritaire.
 

Spitnolan08

XLDnaute Barbatruc
Re : Range et []

Bonsoir à tous,

Merci pour cette info michel_m.
Je parle du poil dans la main bien sûr:p

Je rigole!:D Merci pour ton explication que je ne connaissais pas. Cependant il n'y a pas besoin en VBA de ces artifices pour faire du matriciel...:confused: Serait ce donc une survivance du passé ?

Cordialement
 

Excel_lent

XLDnaute Impliqué
Re : Range et []

Re, sans oublier les autres.

Merci Michel pour cette explication. J'étais loin de penser aux formules matricielles.
Elles me posent déjà pas mal de problèmes hors VBA.
Heureux les ambidextres qui peuvent faire de la main droite ce que refuse de faire la main gauche ! Malheureux sont les maladroits au clavier ! Pour eux, tous les coups ne sont pas permis.

Merci de vos interventions Pyrof, Mécano et Roland mais comme je l'ai dit, des goûts et de habitudes … chacun a sa recette.


Spit tu dois avoir encore en mémoire cette discussion :
https://www.excel-downloads.com/threads/feuille-activate-ou-feuille-select.93638/
J'ai failli intervenir pour ajouter que Range("A1") = Range("A2").Formula permet de copier la formule in extenso (sans réajustement d'adresse).


JC, j'ai cherché un bon moment avant d'arriver à ce test et en pensant à ceux qui ont des problèmes de codes à cause de variables ( non déclarées ou mal déclarées).
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia