Excel macro cells et range

KIDU -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Il est des fois où on peut indifféremment écrire Cells ou Range pour désigner un cellule ou son contenu... et il est des fois où ce n'est pas vrai. Je ne connais pa les nuances.
Si quelqu'un peut m"éclairer. .. Merci
A voir également:

6 réponses

Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Range peut faire référence à une seule cellule ou plusieurs cellules tandis que Cells ne fait référence qu'à une seule cellule

Exemple pour sélectionner la cellule B5

tu peux écrire:

Range.("B5").Select
'ou
Cells(5, 2).Select 'ce qui correspond à la cellule de la 5éme ligne et 2éme colonne

'ou encore plus simplement
[B5].select

7
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Salut Mike
[B5].select

les crochets entourant B5 sont l'abréviation de la fonction évaluate et devrait être réservée pour utiliser VBA avec des fonctions excel style macro-complémentaires où worksheetfunction ne fonctionne pas et avec des formules matricielles mais avec les crochets, VBA considère qu'il s'agit d'une formule matricielle

par exemple la fonction nb.jours ouvres(A1;B1)
donnera en vba
lavar=[workday(A1,B1)]

mais tu es obligé d'utiliser evaluate (prise de tête) si un des paramêtres est une variable
nbre = 50
dep = CLng(Range("A1"))
lavar= Evaluate("workday(" & dep & "," & nbre & ")")

donc, ce crochet est mis plutôt par le syndrome du poil dans la main: je l'utilise donc souvent...

mais je n'ai jamais résolu des matricielles avec evaluate...
source
http://xcell05.free.fr/pages/prog/accvba.htm#Evaluate
1
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,
tu écris:
et il est des fois où ce n'est pas vrai

Je ne crois pas mais si tu as rencontré le cas, dis le ca interressera tt le monde...

généralement, on utilise cells dans des boucles car il est plus élégant que Range

for i=1 to 100
    for j=3 to 10
        tavar=cells(i,j)
        tavar= range(j & ":" & i)

mais les 2 écritures fonctionnent

pour désigner un cellule ou son contenu.
range ou cells désignent toujours une adresse et la propriété value est la propriété par défaut
Il y a des des procédures où on est pratiquement obligé de préciser que l'on travaille sur le contenu et uniquement sur le contenu. on écrit alors range("A1").value

pour te rendre compte écris quelque chose dans A1 puis cette macro
sub test()
mavar=range("A1")
marvar =range("A1").value
end sub

et met un espion sur ma var (débogage-ajouter un espion)
et lance la macro en pas à pas (F8)

0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Re
sur post 2 lire:
tavar=range(j & i)
au lieu de
tavar= range(j & ":" & i) !!!

excusez moi
0
KIDU
 
Bonjour et merci à vous deux,
Je ne pige pas tout, (j"ai commencé à mettre mon nez dans l'informatique à 55 balais, et ça fait longtemps), mais je grapille dans vos courriers des enseignements intéressants.
Toutefois,
Quelle différence de signification entre Range(j & ":" & i) et Range(j & i) ?
Que signifie CLng(Range(A1))?
Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Emporté par l'élan, il en est de même pour moi

Range.("B5").Select

il convient de supprimer le point après Range
Range("B5").Select

Pour répondre à la pertinente remarque de Michel_m concernant la référence de cellule entre crochet, c’était pour compléter la demande qu’il était possible de rencontrer Range, Cells mais également des raccourcis. Et pour ma part avec l’âge je deviens de plus en plus fainéant et use de ces fonctions.
Par contre comme Michel_m l’a souligné, concernant cette fin de phrase
et il est des fois où ce n'est pas vrai

Pour ma part je serai curieux de savoir, en informatique c’est vrai ou faux mais des fois ou peut être je ne vois pas
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,
Quelle différence de signification entre Range(j & ":" & i) et Range(j & i) ?
Range(j & ":" & i) était une erreur de ma part

Que signifie CLng(Range(A1))?
On transforme la date en nombre (un peu comme dans format nombre tu demandais "standard"

j"ai commencé à mettre mon nez dans l'informatique à 55 balais, et ça fait longtemps
je ne suis pas tout jeune non plus et je crois que c'est la m^me chose pour Mike !...

Excel entretient les vieilles neurones ;-)
0