OVH Cloud OVH Cloud

Petit probleme avec les modules

9 réponses
Avatar
Jean-Michel
Bonjour,

Voici ce que j'ai dans un module :

Public Sub OpenCom1() ' fonction ouvrir le port COM1
If COM1.PortOpen = False Then 'Si le port COM1 est fermé
With COM1
.CommPort = 1
.Handshaking = 2 - comRTS
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
' Garde les valeurs par défaut de tous les autres paramètres.
End With
End If
End Sub

Et depuis une feuille, j'appelle OpenCom1, mais il me sors une erreur comme
quoi un objet est requis ( au niveau de la deuxiement ligne ), je suis
d'accord que l'objet COM1 est sur le feuille et pas dans le module
Ce que je veux faire c'est que OpenCom1, CloseCom1 et l'evenement OnComm
soit gerer par le module pour eviter de le mettre sur chaque feuille car je
veux verifier en permanance qu'il n'y ai pas un caractere recu qui, peu
importe dans quel feuille on est, puisse arreter le prog pour pouvoir lancer
une fenetre !

Merci de votre aide

Jean-Michel

9 réponses

Avatar
Jean-Michel
Merci, ca a l'aire de marcher :)
"Patrice Henrio" a écrit dans le
message de news:eXT$
Je ne sais pas si c'est le mieux mais pour ma part de dédierait une


feuille
à ce contrôle, et seulement à lui.

"Jean-Michel" a écrit dans le
message de news:
> Bonjour,
>
> Voici ce que j'ai dans un module :
>
> Public Sub OpenCom1() ' fonction ouvrir le port COM1
> If COM1.PortOpen = False Then 'Si le port COM1 est fermé
> With COM1
> .CommPort = 1
> .Handshaking = 2 - comRTS
> .RThreshold = 1
> .RTSEnable = True
> .Settings = "9600,n,8,1"
> .SThreshold = 1
> .PortOpen = True
> ' Garde les valeurs par défaut de tous les autres


paramètres.
> End With
> End If
> End Sub
>
> Et depuis une feuille, j'appelle OpenCom1, mais il me sors une erreur
comme
> quoi un objet est requis ( au niveau de la deuxiement ligne ), je suis
> d'accord que l'objet COM1 est sur le feuille et pas dans le module
> Ce que je veux faire c'est que OpenCom1, CloseCom1 et l'evenement OnComm
> soit gerer par le module pour eviter de le mettre sur chaque feuille car
je
> veux verifier en permanance qu'il n'y ai pas un caractere recu qui, peu
> importe dans quel feuille on est, puisse arreter le prog pour pouvoir
lancer
> une fenetre !
>
> Merci de votre aide
>
> Jean-Michel
>
>




Avatar
Patrice Henrio
Je ne sais pas si c'est le mieux mais pour ma part de dédierait une feuille
à ce contrôle, et seulement à lui.

"Jean-Michel" a écrit dans le
message de news:
Bonjour,

Voici ce que j'ai dans un module :

Public Sub OpenCom1() ' fonction ouvrir le port COM1
If COM1.PortOpen = False Then 'Si le port COM1 est fermé
With COM1
.CommPort = 1
.Handshaking = 2 - comRTS
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
' Garde les valeurs par défaut de tous les autres paramètres.
End With
End If
End Sub

Et depuis une feuille, j'appelle OpenCom1, mais il me sors une erreur


comme
quoi un objet est requis ( au niveau de la deuxiement ligne ), je suis
d'accord que l'objet COM1 est sur le feuille et pas dans le module
Ce que je veux faire c'est que OpenCom1, CloseCom1 et l'evenement OnComm
soit gerer par le module pour eviter de le mettre sur chaque feuille car


je
veux verifier en permanance qu'il n'y ai pas un caractere recu qui, peu
importe dans quel feuille on est, puisse arreter le prog pour pouvoir


lancer
une fenetre !

Merci de votre aide

Jean-Michel




Avatar
Zoury
> je suis
d'accord que l'objet COM1 est sur le feuille et pas dans le module



tu n'as qu'à spécifier le nom du formulaire devant le nom du contrôle...
'***
With Form1.COM1
If .PortOpen = False Then 'Si le port COM1 est fermé
.CommPort = 1
.Handshaking = 2 - comRTS
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
' Garde les valeurs par défaut de tous les autres paramètres.
End If
End With
'***


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Laurent Castagnetti
D'accord avec ce code, mais dans ce cas quel est l'interet de traiter cette
procédure dans un module a part. Autant le traiter dans la Form !?

Laurent

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
> je suis
> d'accord que l'objet COM1 est sur le feuille et pas dans le module

tu n'as qu'à spécifier le nom du formulaire devant le nom du contrôle...
'***
With Form1.COM1
If .PortOpen = False Then 'Si le port COM1 est fermé
.CommPort = 1
.Handshaking = 2 - comRTS
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
' Garde les valeurs par défaut de tous les autres paramètres.
End If
End With
'***


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous




Avatar
ThunderMusic
Pourquoi ne pas créer ton object COM1 comme un object public indépendant de
toutes forms? Ca peut être fait, alors pourquoi ne pas l'utiliser.

public withevents COM1 as MSComm (je suppose que c'est le control que tu
utilises)

et au démarrage de ton appli (ou quelque part) faire ceci

set COM1 = new MSComm

et à la fin de ton appli (ou quelque part apres ton traitement) faire ceci

set COM1 = Nothing

et voilà, tu as un control COM1 completement indépendant de Form.

j'espère que ca a pu t'aider.

ThunderMusic

"Jean-Michel" wrote in message
news:
Bonjour,

Voici ce que j'ai dans un module :

Public Sub OpenCom1() ' fonction ouvrir le port COM1
If COM1.PortOpen = False Then 'Si le port COM1 est fermé
With COM1
.CommPort = 1
.Handshaking = 2 - comRTS
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
' Garde les valeurs par défaut de tous les autres paramètres.
End With
End If
End Sub

Et depuis une feuille, j'appelle OpenCom1, mais il me sors une erreur


comme
quoi un objet est requis ( au niveau de la deuxiement ligne ), je suis
d'accord que l'objet COM1 est sur le feuille et pas dans le module
Ce que je veux faire c'est que OpenCom1, CloseCom1 et l'evenement OnComm
soit gerer par le module pour eviter de le mettre sur chaque feuille car


je
veux verifier en permanance qu'il n'y ai pas un caractere recu qui, peu
importe dans quel feuille on est, puisse arreter le prog pour pouvoir


lancer
une fenetre !

Merci de votre aide

Jean-Michel




Avatar
Zoury
> D'accord avec ce code, mais dans ce cas quel est l'interet de traiter


cette
procédure dans un module a part. Autant le traiter dans la Form !?



entièrement d'accord.. :O)
personnellement c'est ce que je fais.
si, toutefois, tu as plus d'un COM, tu devrais mettre ta fonction dans un
module et lui passé l'objet COM en paramètre..

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
Zoury
Salyt Dany! :O)

Les contrôles (.ocx) ne peuvent malheureusement être instancié que sur un
formulaire...

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"ThunderMusic" wrote in message
news:
Pourquoi ne pas créer ton object COM1 comme un object public indépendant


de
toutes forms? Ca peut être fait, alors pourquoi ne pas l'utiliser.

public withevents COM1 as MSComm (je suppose que c'est le control que tu
utilises)

et au démarrage de ton appli (ou quelque part) faire ceci

set COM1 = new MSComm

et à la fin de ton appli (ou quelque part apres ton traitement) faire ceci

set COM1 = Nothing

et voilà, tu as un control COM1 completement indépendant de Form.

j'espère que ca a pu t'aider.

ThunderMusic

"Jean-Michel" wrote in message
news:
> Bonjour,
>
> Voici ce que j'ai dans un module :
>
> Public Sub OpenCom1() ' fonction ouvrir le port COM1
> If COM1.PortOpen = False Then 'Si le port COM1 est fermé
> With COM1
> .CommPort = 1
> .Handshaking = 2 - comRTS
> .RThreshold = 1
> .RTSEnable = True
> .Settings = "9600,n,8,1"
> .SThreshold = 1
> .PortOpen = True
> ' Garde les valeurs par défaut de tous les autres


paramètres.
> End With
> End If
> End Sub
>
> Et depuis une feuille, j'appelle OpenCom1, mais il me sors une erreur
comme
> quoi un objet est requis ( au niveau de la deuxiement ligne ), je suis
> d'accord que l'objet COM1 est sur le feuille et pas dans le module
> Ce que je veux faire c'est que OpenCom1, CloseCom1 et l'evenement OnComm
> soit gerer par le module pour eviter de le mettre sur chaque feuille car
je
> veux verifier en permanance qu'il n'y ai pas un caractere recu qui, peu
> importe dans quel feuille on est, puisse arreter le prog pour pouvoir
lancer
> une fenetre !
>
> Merci de votre aide
>
> Jean-Michel
>
>




Avatar
ThunderMusic
ah, oups. j'ai confondu avec les objects Com (via dll)... désolé!

"Zoury" <yanick_lefebvre at hotmail dot com> wrote in message
news:%
Salyt Dany! :O)

Les contrôles (.ocx) ne peuvent malheureusement être instancié que sur un
formulaire...

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"ThunderMusic" wrote in message
news:
> Pourquoi ne pas créer ton object COM1 comme un object public indépendant
de
> toutes forms? Ca peut être fait, alors pourquoi ne pas l'utiliser.
>
> public withevents COM1 as MSComm (je suppose que c'est le control que


tu
> utilises)
>
> et au démarrage de ton appli (ou quelque part) faire ceci
>
> set COM1 = new MSComm
>
> et à la fin de ton appli (ou quelque part apres ton traitement) faire


ceci
>
> set COM1 = Nothing
>
> et voilà, tu as un control COM1 completement indépendant de Form.
>
> j'espère que ca a pu t'aider.
>
> ThunderMusic
>
> "Jean-Michel" wrote in message
> news:
> > Bonjour,
> >
> > Voici ce que j'ai dans un module :
> >
> > Public Sub OpenCom1() ' fonction ouvrir le port COM1
> > If COM1.PortOpen = False Then 'Si le port COM1 est fermé
> > With COM1
> > .CommPort = 1
> > .Handshaking = 2 - comRTS
> > .RThreshold = 1
> > .RTSEnable = True
> > .Settings = "9600,n,8,1"
> > .SThreshold = 1
> > .PortOpen = True
> > ' Garde les valeurs par défaut de tous les autres
paramètres.
> > End With
> > End If
> > End Sub
> >
> > Et depuis une feuille, j'appelle OpenCom1, mais il me sors une erreur
> comme
> > quoi un objet est requis ( au niveau de la deuxiement ligne ), je suis
> > d'accord que l'objet COM1 est sur le feuille et pas dans le module
> > Ce que je veux faire c'est que OpenCom1, CloseCom1 et l'evenement


OnComm
> > soit gerer par le module pour eviter de le mettre sur chaque feuille


car
> je
> > veux verifier en permanance qu'il n'y ai pas un caractere recu qui,


peu
> > importe dans quel feuille on est, puisse arreter le prog pour pouvoir
> lancer
> > une fenetre !
> >
> > Merci de votre aide
> >
> > Jean-Michel
> >
> >
>
>




Avatar
Jean-Michel
Merci pour tout j'ai pu m'en sortir :)

Bonne journée

"ThunderMusic" a écrit dans le message de
news:
ah, oups. j'ai confondu avec les objects Com (via dll)... désolé!

"Zoury" <yanick_lefebvre at hotmail dot com> wrote in message
news:%
> Salyt Dany! :O)
>
> Les contrôles (.ocx) ne peuvent malheureusement être instancié que sur


un
> formulaire...
>
> --
> Cordialement
> Yanick Lefebvre - MVP pour Visual Basic
> http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
>
> Merci de poster les réponses au groupe afin d'en faire profiter à tous
> "ThunderMusic" wrote in message
> news:
> > Pourquoi ne pas créer ton object COM1 comme un object public


indépendant
> de
> > toutes forms? Ca peut être fait, alors pourquoi ne pas l'utiliser.
> >
> > public withevents COM1 as MSComm (je suppose que c'est le control que
tu
> > utilises)
> >
> > et au démarrage de ton appli (ou quelque part) faire ceci
> >
> > set COM1 = new MSComm
> >
> > et à la fin de ton appli (ou quelque part apres ton traitement) faire
ceci
> >
> > set COM1 = Nothing
> >
> > et voilà, tu as un control COM1 completement indépendant de Form.
> >
> > j'espère que ca a pu t'aider.
> >
> > ThunderMusic
> >
> > "Jean-Michel" wrote in message
> > news:
> > > Bonjour,
> > >
> > > Voici ce que j'ai dans un module :
> > >
> > > Public Sub OpenCom1() ' fonction ouvrir le port COM1
> > > If COM1.PortOpen = False Then 'Si le port COM1 est fermé
> > > With COM1
> > > .CommPort = 1
> > > .Handshaking = 2 - comRTS
> > > .RThreshold = 1
> > > .RTSEnable = True
> > > .Settings = "9600,n,8,1"
> > > .SThreshold = 1
> > > .PortOpen = True
> > > ' Garde les valeurs par défaut de tous les autres
> paramètres.
> > > End With
> > > End If
> > > End Sub
> > >
> > > Et depuis une feuille, j'appelle OpenCom1, mais il me sors une


erreur
> > comme
> > > quoi un objet est requis ( au niveau de la deuxiement ligne ), je


suis
> > > d'accord que l'objet COM1 est sur le feuille et pas dans le module
> > > Ce que je veux faire c'est que OpenCom1, CloseCom1 et l'evenement
OnComm
> > > soit gerer par le module pour eviter de le mettre sur chaque feuille
car
> > je
> > > veux verifier en permanance qu'il n'y ai pas un caractere recu qui,
peu
> > > importe dans quel feuille on est, puisse arreter le prog pour


pouvoir
> > lancer
> > > une fenetre !
> > >
> > > Merci de votre aide
> > >
> > > Jean-Michel
> > >
> > >
> >
> >
>
>