Erreur compil [Résolu]

Signaler
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013
-
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013
-
Bonjour
j'ai une application utilisant des modules fichiers.bas dans un projet ocx
je veux lorsque j'ai une erreur dans mon .bas appeller une routine de mon ocx afin de faire un raise event

voici mes sources
dans l'ocx:
Public Sub ErrMod(MsgErr As String)
MsgBox MsgErr
End Sub



Private Sub Command1_Click()
testMod (4)
End Sub



dans le module.bas
Public Sub testMod(i As Integer)
On Error GoTo ErrHandler '***** Management error **********
Dim str As String
i = i + 1
i = str
Exit Sub
ErrHandler:
    'Logging
    UserControl1.ErrMod (" No: " + CStr(Err.Number) + " " + Err.Description + "[EffacerSection(" + Section + "," + Nomfic + ")]")
    If Not UnloadOnError Then
        Resume Next
    End If
End Sub




Quelqu'un peut m'aider merci

Jean louis

15 réponses

Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
Bonjour

Dans ton module tu déclare une variable globale (endehors de toutes procédure):
Public MonCtl as UserControl1

Ensuite dans l'event de chargement de ton UserControl, tu fais
Set MonModule.MonCtl=Me

Ensuite pour l'event :
MonCtl.ErrMod

Ou sinon tu ajoute un paramètre :
Public sub TestMod(byval i as long,byval MonCtl as UserControl1)

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
Bonjour

C'est du VB6, tu t'es trompé de catégorie ......

Où est ton UserControl ? Si uil est dans une form (je ne vois pas où il pourrais-être sinon), il faut faire :
NomForm.NomCtl

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

oui c'est du vb6
mon usercontrol est dans mon ocx il n'y pas de form

Jean louis
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
Bonjour

A ce moment là, il faut que tu prévopi que lors de la création de ton Usercontrol (par l'app utilisatrice) de l'inscrire dans ton module (par une variable Public par exemple).

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

Jean louis
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

ah mon msg a m...
je disais que ce n'est pas vraiment ce que je veux


je peux t'envoyer mes sources se sera plus simple pour comprendre


si tu es ok donne moi une adresse email


merci

Jean louis
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
Bonjour

Je préferais éviter pour l'instant, car j'ai juste quelques autres question avant :
- est-ce pour décharger le code du UserCotrol que tu as fait ce module ?
- Y-a-t-il posssibilité de multiplicité des instances du control ? (plusieur controles du type UserControl1 en même temps)
- A quoi te sert ton contolre ?
   - A faire un Log ?
   - A être utilisateur du module ?

Sinon concernant le code copié :
Public Sub testMod(i As Integer)
Dim str As String
i = i + 1
i = str

Integer=String ????
Utilises Cint ou Val pour convertir les chaines en entier.
Préfère l'utilisation de Long au lieu de Integer (léger gain de rapidité).
Tu n'initialises pas Str, donc i=0 tt le tmp.

J'attends ta réponse pour voir les solutions possibles.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

Jean louis
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

Jean louis
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

Jean louis
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

Ca fait 3 fois que je reponds et qu'il m'efface tout
donc je disais
je veux creer une erreur dans mon ocx d'ou la routine
et recuper l'evenement dans mon ecran utilisant l'ocx
dans mon .bas
Public Sub testMod(i As Integer)
On Error GoTo ErrHandler '***** Management error **********
Dim str As String
i = i + 1
i = str
Exit Sub
ErrHandler:
    'Logging
    UserControl1.ErrMod (" No: " + CStr(Err.Number) + " " + Err.Description + "[EffacerSection(" + Section + "," + Nomfic + ")]")
    If Not UnloadOnError Then
        Resume Next
    End If
End Sub

dans .ctl
Public Sub ErrMod(MsgErr As String)
    RaiseEvent ErrorEvt MsgErr
End Sub

Jean louis
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
Bonjour

Soit tu ajoutes un paramètre contenant le UserControl, afin que ta Sub utilises ce control.
Soit il faut que tu mémorise (dans le module) une référence vers ce UserControl, il n'y a pas d'autres solutions (à moins de voir comment faire avec des Shared, mais ça ne solutionneras pas ton pb je penses).

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

Jean louis
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

Je ne comprends pas bien comment ajouter un paramètre à mon usercontrol
ou comment memoriser une reference desole de pose autant de questions

Jean louis
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013

merci super

Jean louis