Gestion d'evenements de controles ajoutés dynamiquement

ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011 - 5 juil. 2008 à 17:00
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011 - 5 juil. 2008 à 20:32
Bonjour

Je souhaite creer dynamiquement des textbox sur un document Word et gerer les evenements associés à ces nouveaux controles
La création marche bien, mais j'ai une erreur 13 incompatibilité de type qui se produit sur la ligne de code suivante
    Set cl.tb = Obj

J'ai essayé plusieurs types pour la variable Obj mais sans succés
Je demande de l'aide car débutant sur ce type de programmation je pense que je dois faire une GROSSE erreur

Merci

Voici le code

dans un module
------------------------------------------------
Option Explicit
Public cl As Classe1
Public Obj As Variant
Public collect As Collection

dans un module de classe
-----------------------------------------------
Public WithEvents tb As MSForms.TextBox
Private Sub tb_Change()
Stop
End Sub

dans un userform
---------------------------------------------------
Private Sub CommandButton1_Click()
Set collect = New Collection
Set collect = Nothing
Set Obj = ActiveDocument.InlineShapes _
    .AddOLEControl(ClassType:="Forms.textBox.1")
'With Obj.OLEFormat.Object
    '.Text = "aa"
    '.Name = "tt"
'End With
Set cl = New Classe1
Set cl.tb = Obj
collect.Add cl
end sub

11 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2008 à 17:29
salut

Public WithEvents tb As MSForms.TextBox
Public Obj As Variant

ta classe attend un objet de type MSForms.TextBox, tu lui en donnes un de type Variant.
çà passe pas ;)
retype ton Obj correctement
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2008 à 17:31
ps :

Set collect = Nothing
(...)
collect.Add cl

tu ne pourras pas ajouter quoi que ce soit à NOTHING...
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
5 juil. 2008 à 17:50
Merci pour reponse, mais j'ai déjà essayé ce retype  et d'autres sans succés
J' ai aussi supprimé Set Collect=Nothing et j'ai toujours l'erreur 13


 
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2008 à 18:18
tu es sûr que ActiveDocument.InlineShapes te renvoie un type objet?...
erreur sur quelle ligne?
0

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

Posez votre question
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
5 juil. 2008 à 18:23
je suis sure de rien
j'ai erreur 13 sur ligne de code
    Set cl.tb =Obj
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2008 à 18:52
remplace ces 2 lignes :
Set cl.tb = Obj
collect.Add cl

par :
If obj Is Nothing Then
    MsgBox "j'essaye d'ajouter
RIEN/NULL"
Else
    If TypeOf Obj Is MSForms.TextBox Then
        MsgBox "ICI LE SEUL CAS Où LE CODE SERAIT BON
!!!"
        Set cl.tb = Obj
        'collect.Add cl
    Else
        MsgBox "J'essaye d'ajouter n'importe quoi : '" & VarType(obj) & "'"
    End If
End If

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
5 juil. 2008 à 19:06
ok Obj c'est n'importe quoi

Alors si le code est mauvais que faut-il ecrire pour parvenir à ajouter ces textbox et gerer leurs evenements ( cela marche quand on les ajoute sur un userform mais je veux les ajouter à un document......)
 Merci beaucoup si tu as des idées
0
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
5 juil. 2008 à 19:11
J'ai répondu trop rapidement en fait le type objet est=9 donc c'est un vbobjet d'aprés l'aide VBA
0
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
5 juil. 2008 à 19:21
en ajoutant
montest=IsObject(Obj)
cela me renvoie vrai
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juil. 2008 à 19:26
un objet mais qui n'est pas une textbox

ne faisant pas de VBA je n'ai pas LA solution
(je te l'aurais déjà donné sinon)

l'erreur vient de cette ligne :
Set Obj = ActiveDocument.InlineShapes _
    .AddOLEControl(ClassType:="Forms.textBox.1")

objet reçoit ActiveDocument.InlineShapes , vois ce que cette méthode renvoie

(c'était ma question de tout à l'heure ;) )
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
ptard Messages postés 27 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 30 septembre 2011
5 juil. 2008 à 20:32
Merci tu m'as mis sur la bonne piste

cela marche avec

Set Obj1 = ActiveDocument.Shapes _
    .AddOLEControl(ClassType:="Forms.textBox.1")



With Obj1.OLEFormat
    .Activate
    Set Obj = .Object
End With




With Obj.OLEFormat.Object
    .Text = "aa"
    .Name = "tt"
End With
Set cl = New Classe1
Set cl.tb = Obj
collect.Add cl
0
Rejoignez-nous