Appeler un shape dans une procédure

pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010 - 18 sept. 2005 à 15:11
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010 - 25 oct. 2005 à 12:02
Bonjour!
Je souhaite créer des dynamiquement des shapes via une procédure : pour cela voilà ce que j'ai fait indexé mon objet Shape1 :

- Dans ma page principale :
Call CreerPalette(Nb, Shape1)

- Dans mon module :
Sub CreerPalette(ByVal Nb As Integer, ByRef MonShape As Shape)
For i = 1 To Nb
Call Load(MonShape(i))
MonShape(i).Visible = True
Next
End Sub

Je ne comprend pourquoi il me met le message :
"Type incompatible".
Merci de votre aide.
A+.

6 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
18 sept. 2005 à 16:32
Bonjour,
Essaie cette méthode

Private Sub Form_Load()
Dim I
'Positionne le contrôle Shape
Shape1(0).Move 0, 100, 700, 300
' Crée les autres boutons.
For I = 1 To 3
' Crée un bouton.
Load Shape1(I)
' Place et dimensionne le contrôle
Shape1(I).Move I * 700, 100, 600, 300
Shape1(1).Top = 500
' Affiche le contrôle
Shape1(I).Visible = True
Shape1(1).BorderColor = vbRed
Shape1(0).Shape = 2
Next I


End Sub

jpleroisse
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
18 sept. 2005 à 16:55
Re,
Place un contrôle Shape sur ta Form et met son Index à 0
jpleroisse
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
18 sept. 2005 à 23:08
Merci pour la réponse.

Je sais déjà faire ce que tu viens de me montrer.

Mais là, je souhaite vraiment créer mes shapes via une procédure se
trouvant dans un module. Référe-toi à mon premier post qui montre que
je sépare le code de mon "Form1" qui appelle la procédure et celui du
"Module" qui contient la procédure.

Si tu as une solution ou que quelqu'un comprend bien ce que je souhaite, merci pour votre solution!!!

A bientôt.
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
19 sept. 2005 à 06:31
Bonjour,
Rien ne t'empêches de placer cette procédure dans un module et l'appeler depuis ta Form.
Dans un Module.

Public Sub CréerShape()
Dim I
'Positionne le contrôle Shape
Form1.Shape1(0).Move 0, 100, 700, 300
' Crée les autres shapes.
For I = 1 To 3
' Crée un bouton.
Load Form1.Shape1(I)
' Place et dimensionne le contrôle
Form1.Shape1(I).Move I * 700, 100, 600, 300
Form1.Shape1(1).Top = 500
' Affiche le contrôle
Form1.Shape1(I).Visible = True
Form1.Shape1(1).BorderColor = vbRed
Form1.Shape1(0).Shape = 2
Next I
End Sub

'Dans le module de la Form.

Private Sub Form_Load()
Call CréerShape
End Sub

jpleroisse
0

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

Posez votre question
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
19 sept. 2005 à 08:55
Oui mais le truc est que je souhaite que l'objet "shape" soit en paramètre dans la procédure pour pouvoir l'utiliser ultérieument dans plusieurs feuilles.
Ainsi, ma procédure pourra être appelée de n'importe quelle feuille si je passe en paramètre : Form1.Shape1 ou Form2.Shape1 ou Form3.Shape1 .....
J'espère avoir été clair.
A bientôt.
Merci pour ton aide.
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
25 oct. 2005 à 12:02
Bonjour!
Voilà un petit moment que j'avais posté ce message et j'ai de nouveau besoin de vous car à l'époque j'avais créé ma procédure de la façon suivante dans un module:
sub ColorierShape(Cellules as Objet)
for i=0 to 9
Cellules(i).backcolor=&HFF8080
next
endsub
Comme vous pouvez le voir dans ma procédure, j'ai indéxé mes shapes.

Dans mon programme principale, je faisais :
ColorierShape(MesCellules)

Maintenant, je souhaite modifier ma procédure par :
sub ColorierShape(Cellules as Shape)
mais ça ne marche pas car quand je met :
ColorierShape(MesCellules)
il me met l'erreur "Type incompatible"
Auriez-vous une idée de comment mettre un shape indéxé en paramètre et comment l'appeler?
Merci de votre réponse.
A bientôt.
0
Rejoignez-nous