VBA - Range ne marche pas

Résolu
cs_mondon Messages postés 6 Date d'inscription vendredi 2 septembre 2011 Statut Membre Dernière intervention 2 septembre 2011 - 2 sept. 2011 à 11:12
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 2 sept. 2011 à 16:01
Bonjour,

J'utilise VB6.3 sous Windows 7.

J'essaie de créer un graphique m'ais je n'arrive pas à faire marcher "Range" :

Marche :
ActiveChart.SeriesCollection(1).XValues = activesheet.Cells(1, 1)

Marche pas :
ActiveChart.SeriesCollection(1).XValues = activesheet.range(Cells(1, 1))
ActiveChart.SeriesCollection(1).XValues = activesheet.range(Cells(1, 1), cells(1,2))

Est-ce quelqu'un aurait une idée ?

18 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 sept. 2011 à 13:41
Tu dis que :
MsgBox Worksheets("feuil1").Range(Worksheets("feuil1").Cells(1, 1)).Address

ne "marche pas".
évidemment !
mais marcherait :
tant :
MsgBox Worksheets("Feuil1").Range(Worksheets("Feuil1").Cells(1, 1), Worksheets("Feuil1").Cells(2, 1)).Address

que
MsgBox Worksheets("Feuil1").Range(Cells(1, 1), Cells(2, 1)).Address


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 sept. 2011 à 11:27
Bonjour,

je ne vois à priori aucune raison pour que ne fonctionne pas :
ActiveChart.SeriesCollection(1).XValues = activesheet.range(Cells(1, 1), cells(1,2))

Mais tu en auras le coeur net de cette manière :
msgbox activesheet.range(Cells(1, 1), cells(1,2)).address

ceci étant dit : tu utilises des cellules sur une même ligne.
Le "tableau" en résultant risque d'être assez curieux :
Fais donc ceci, pour voir :

ActiveChart.SeriesCollection(1).XValues = ActiveSheet.Application.Transpose(Range(Cells(1, 1), Cells(1, 2)))

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 sept. 2011 à 11:30
ce serait plus clair ainsi, d'ailleurs :
ActiveChart.SeriesCollection(1).XValues = Application.Transpose(ActiveSheet.Range(Cells(1, 1), Cells(1, 2)))


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_mondon Messages postés 6 Date d'inscription vendredi 2 septembre 2011 Statut Membre Dernière intervention 2 septembre 2011
2 sept. 2011 à 11:47
Merci de vos réponse.

Bon je vois que la forme de mon tableau ne vous plait :), OK pour changer !!!
Je voudrais faire fonctionner ceci :

ActiveChart.SeriesCollection(1).XValues = activesheet.range(Cells(1, 1), Cells(2, 1))

ucfoutu,

J'ai fait :
MsgBox activesheet.range(Cells(1, 1), Cells(2, 1)).Address

il a répondu
"la méthode 'cells' de l'objet '_Global' a échoué"
0

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

Posez votre question
NHenry Messages postés 15032 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 janvier 2023 156
2 sept. 2011 à 12:21
Bonjour,

Tu n'es pas en VB6, mais en VBA (Excel visiblement).
J'ai déplacé et renommé le sujet.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_mondon Messages postés 6 Date d'inscription vendredi 2 septembre 2011 Statut Membre Dernière intervention 2 septembre 2011
2 sept. 2011 à 12:42
J'ai tenté :
MsgBox activesheet.range(activesheet.Cells(1, 1)).Address

il a répondu la même chose
"la méthode 'cells' de l'objet '_Global' a échoué"

je suis bien coincé...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 sept. 2011 à 12:55
J'ai tenté :
MsgBox activesheet.range(activesheet.Cells(1, 1)).Address

il a répondu la même chose
"la méthode 'cells' de l'objet '_Global' a échoué"

je suis bien coincé...

Veux-tu bien s'il te plait nous "mettre" ici ton code par copier/coller et non par "refrappe" sur ce forum ?
Car celui que tu nous as montré :
1) ne peut que fonctionner dans des conditions normales
et
2) ne peut être un copier/coller que si tu as "créé" un objet nommé activesheet ° !!


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
2 sept. 2011 à 12:59
Salut

Mon idée première : Un Chart est aussi un Sheet.
ActiveSheet doit, je pense, pointer sur le Chart, pas sur la feuille.
Teste en désignant la feuille : Sheet("ma feuille")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 sept. 2011 à 13:11
Bonjour, jack,
j'y ai également pensé, mais ce qui m'a retenu, c'est cette partie du 1er message :
Marche :
ActiveChart.SeriesCollection(1).XValues = activesheet.Cells(1, 1)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_mondon Messages postés 6 Date d'inscription vendredi 2 septembre 2011 Statut Membre Dernière intervention 2 septembre 2011
2 sept. 2011 à 13:26
Hello,

Je vous mets tout le code, où activesheet et Worksheets("feuil1") sont la même chose :

Sub Worksheet_Activate()

MsgBox ActiveSheet.Cells(1, 1).Address
MsgBox Worksheets("feuil1").Cells(1, 1).Address
MsgBox Worksheets("feuil1").Range(Worksheets("feuil1").Cells(1, 1)).Address
'marche pas non plus :
' MsgBox Range(Worksheets("feuil1").Cells(1, 1)).Address

End Sub

Quand j'active la feuille, seuls les 2 1ers msgbox ne donne pas l'erreur
"la méthode 'cells' de l'objet '_Global' a échoué"
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
2 sept. 2011 à 13:42
Bonjour,

Il me semble que j'avais eu un soucis du genre à une époque, essayes de mettre un Worksheets("feuil1").Activate au début de la Sub, ca réglera peut être le problème...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 sept. 2011 à 13:43
et si VRAIMENT tu tiens à utiliser à la fois Range et Cells pour UNE SEULE cellule, "double-la alors !
MsgBox Worksheets("Feuil1").Range(Cells(1, 1), Cells(1, 1)).Address



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
2 sept. 2011 à 13:44
Worksheets("feuil1").Range(Worksheets("feuil1").Cells(1, 1))
Un peu lourd pour désigner la même chose.
Que tu utilises Range ou Cells, le résultat est le même.
A mon avis,
Worksheets("feuil1").Cells(1, 1)
ou
Worksheets("feuil1").Range("A1")
suffisent
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 sept. 2011 à 13:45
Bonjour,

Il me semble que j'avais eu un soucis du genre à une époque, essayes de mettre un Worksheets("feuil1").Activate au début de la Sub, ca réglera peut être le problème...


Bonjour, Julienj,
Oui, mais dans ce cas il lui faut modifier également ActiveChart, si le chart est sur une feuille à part entière .

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_mondon Messages postés 6 Date d'inscription vendredi 2 septembre 2011 Statut Membre Dernière intervention 2 septembre 2011
2 sept. 2011 à 14:09
Hello,

Merci de vos réponses !!
En effet, pour que "range" fonctionne, je dois lui mettre au moins 2 cases !!! Merci !!!

Sub Worksheet_Activate()

Dim myrange As Range

MsgBox ActiveSheet.Cells(1, 1).Address
MsgBox Worksheets("feuil1").Cells(1, 1).Address
MsgBox Worksheets("Feuil1").Range(Worksheets("Feuil1").Cells(1, 1),Worksheets("Feuil1").Cells(2, 1)).Address
MsgBox Worksheets("Feuil1").Range(Cells(1, 1), Cells(2, 1)).Address

Set myrange = Worksheets("Feuil1").Range(Cells(1, 1), Cells(2, 1))

End Sub
0
cs_mondon Messages postés 6 Date d'inscription vendredi 2 septembre 2011 Statut Membre Dernière intervention 2 septembre 2011
2 sept. 2011 à 14:10
Aie, je suis novice, comment je fais pour dire que mon problème a été résolu ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
2 sept. 2011 à 14:11
Oui, mais dans ce cas il lui faut modifier également ActiveChart, si le chart est sur une feuille à part entière


Oui, j'imagine, j'avais cette erreur à une époque lorsque j'utilisais la fonction Range et activer la feuille sur laquelle je bossait à corrigé le problème. après, je ne suis pas vraiment un expert en VB...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 sept. 2011 à 16:01
Aie, je suis novice, comment je fais pour dire que mon problème a été résolu ?

tu n'a qu'à cliquer sur le tag "Reponse acceptée" sur le(s) message(s) qui t'ont servi à résoudre le problème.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous