OVH Cloud OVH Cloud

[c] c.value

2 réponses
Avatar
Jacquouille
Bonjour,

Etant retourné dans mon atelier brico en VBA, je me suis fait ce filet de
macro:
------------------------------
Sub formule_1()
n = 1
For Each c In Range("g1:i25")
c.Value = Range("a" & n).Value
n = n + 1
Next
End Sub
----------------------------
Au départ, j'avais écrit:
[c]=Range("a" & n).Value
qui ne fonctionne pas.
Excepté Murphy, quelqu'un peut-il m'expliquer pourquoi, alors que cela
fonctionne dans d'autres macros?
------------------
Bref:
[c] <>c.value ????

Grand merci et bonne fin de journée

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.

2 réponses

Avatar
Michd
Bonjour Jacquouille,
Dans ta procédure, tu n'as pas déclaré la variable C As Range. Sans la
déclaration d'une variable, cette dernière est de type "Variant" et par
conséquent, tu peux lui affecter n'importe quel type de valeurs ou d'objets.
Dans la ligne For Each c In Range("g1:i25") , C est une cellule. À la ligne
suivante, c.Value = Range("a" & n).Value , "C" est soi du texte ou du
numérique selon le contenu de la cellule. Pour que le C demeure un "Range",
tu dois alors définir la propriété "Value". C'est une autre manière de dire
à Excel que la variable C de type "Range" à la première ligne demeure aussi
un "Range" à l'exécution de la deuxième ligne.
Je t'invite fortement à définir tes variables en début de procédure.
MichD
Avatar
Jacquouille
Merci beaucoup pour cette explication.
Sans vouloir me disculper, c'est un peu la faute à Excel, qui déclare les
variables automatiquement. C'est donc pour cela que je ne me suis jamais
trop préoccupé de la chose.
Je vais m'y appliquer, suite à ton invitation....
PS : j'aurais quand même préféré que tu m'invites à boire un pot .... -))
Encore merci et bonne soirée
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Michd" a écrit dans le message de groupe de discussion :
p90us2$9h3$
Bonjour Jacquouille,
Dans ta procédure, tu n'as pas déclaré la variable C As Range. Sans la
déclaration d'une variable, cette dernière est de type "Variant" et par
conséquent, tu peux lui affecter n'importe quel type de valeurs ou d'objets.
Dans la ligne For Each c In Range("g1:i25") , C est une cellule. À la ligne
suivante, c.Value = Range("a" & n).Value , "C" est soi du texte ou du
numérique selon le contenu de la cellule. Pour que le C demeure un "Range",
tu dois alors définir la propriété "Value". C'est une autre manière de dire
à Excel que la variable C de type "Range" à la première ligne demeure aussi
un "Range" à l'exécution de la deuxième ligne.
Je t'invite fortement à définir tes variables en début de procédure.
MichD