VBA - Range ne marche pas [Résolu]

Signaler
Messages postés
6
Date d'inscription
vendredi 2 septembre 2011
Statut
Membre
Dernière intervention
2 septembre 2011
-
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
6
Date d'inscription
vendredi 2 septembre 2011
Statut
Membre
Dernière intervention
2 septembre 2011

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é"
Messages postés
14671
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 avril 2020
140
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
Messages postés
6
Date d'inscription
vendredi 2 septembre 2011
Statut
Membre
Dernière intervention
2 septembre 2011

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é...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
65
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)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
6
Date d'inscription
vendredi 2 septembre 2011
Statut
Membre
Dernière intervention
2 septembre 2011

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é"
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
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...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
65
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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
Messages postés
6
Date d'inscription
vendredi 2 septembre 2011
Statut
Membre
Dernière intervention
2 septembre 2011

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
Messages postés
6
Date d'inscription
vendredi 2 septembre 2011
Statut
Membre
Dernière intervention
2 septembre 2011

Aie, je suis novice, comment je fais pour dire que mon problème a été résolu ?
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
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...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
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