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."
.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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
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
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$1@gioia.aioe.org...
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.
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