OVH Cloud OVH Cloud

Au secours ZOURY

6 réponses
Avatar
JCM
Bonjour

D=E9sol=E9 Zoury, mais je n'arrive pas a faire fonctionner mon=20
appli, cela beug =E0 frm.texte=3DsDefaut

j'ai modifi=E9 l'appli je veux afficher du texte et la date=20
retenue par calendar dans un label et cela a plusieurs=20
reprises avec des dates differentes pour chaque lable

voici mon code :

FORME APPLELANTE
'1 label : lblAccord et 1 label lblEnregistrement

Option Explicit
Private Sub Form_Load()
LblAccord.Caption =3D "Bon pour accord le "
LblEnregistrement.Caption =3D "enregistr=E9 le "
End Sub

Private Sub LblAccord_Click()
LblAccord.Caption =3D ObtenirAcd(LblAccord.Caption, Me)
FrmAppele.Show 1
End Sub

Private Sub LblEnregistrement_Click()
LblEnregistrement.Caption =3D ObtenirEnr
(LblEnregistrement.Caption, Me)
FrmAppele.Show 1
End Sub
Public Function ObtenirAcd(ByRef sDefault As String, ByRef=20
frmOwner As Object) As String
If (Not TypeOf frmOwner Is Form) Then Exit Function
Dim frm As FrmAppele
Set frm =3D New FrmAppele
frm.Texte =3D sDefault
Call frm.Show(vbModal, frmOwner)
ObtenirAcd =3D frm.Texte
Call Unload(frm)
End Function

Public Function ObtenirEnr(ByRef sDefault As String, ByRef=20
frmOwner As Object) As String
If (Not TypeOf frmOwner Is Form) Then Exit Function
Dim frm As FrmAppele
Set frm =3D New FrmAppele
frm.Texte =3D sDefault
Call frm.Show(vbModal, frmOwner)
ObtenirEnr =3D frm.Texte
Call Unload(frm)
End Function

FORME APPELEE
'1 calendar : cldCalendrier

Option Explicit
Private DateValue As Date

Private Sub CldCalendrier_Click()
DateValue =3D CldCalendrier.Value
Me.Hide
End Sub
Public Property Get ObtenirAcd() As String
ObtenirAcd =3D "Bon pour accord le " & CStr(DateValue)
End Property
Public Property Get ObtenirEnr() As String
ObtenirEnr =3D "Enregistr=E9 le " & CStr(DateValue)
End Property

sans doute je suis nul
merci de ta reponse

Jean Claude

6 réponses

Avatar
François Picalausa
"JCM" a écrit dans le message de
news:074901c3c94b$682c4dd0$
Bonjour

Désolé Zoury, mais je n'arrive pas a faire fonctionner mon
appli, cela beug à frm.texte=sDefaut

j'ai modifié l'appli je veux afficher du texte et la date
retenue par calendar dans un label et cela a plusieurs
reprises avec des dates differentes pour chaque lable

voici mon code :





Bonjour/soir,

sans doute je suis nul


Personne n'est nul.. tout le monde commence par apprendre ;-)
Et apprendre, c'est malheureusement aussi faire des fautes :-(

Et la première bonne chose à faire serait d'indenter ton code pour le rendre
plus lisible...

FORME APPLELANTE
'1 label : lblAccord et 1 label lblEnregistrement

Option Explicit
Public Function ObtenirEnr(ByRef sDefault As String, ByRef
frmOwner As Object) As String
If (Not TypeOf frmOwner Is Form) Then Exit Function
' Crée une nouvelle feuille de calendrier et initialise ses propriétés
Dim frm As FrmAppele
Set frm = New FrmAppele
frm.Texte = sDefault
'Affiche la feuille
Call frm.Show(vbModal, frmOwner)
'Récupère la saisie de l'utilisateur
ObtenirEnr = frm.Texte
'Décharge la feuille
Call Unload(frm)
End Function

FORME APPELEE
'1 calendar : cldCalendrier

Option Explicit
Private DateValue As Date

Private Sub CldCalendrier_Click()
DateValue = CldCalendrier.Value
Me.Hide
End Sub

Public Property Get ObtenirAcd() As String
ObtenirAcd = "Bon pour accord le " & CStr(DateValue)
End Property
Public Property Get ObtenirEnr() As String
ObtenirEnr = "Enregistré le " & CStr(DateValue)
End Property



Le problme est que en faisant
frm.Texte = sDefault


tu demande la propriété Texte d'un objet frm de type FrmAppele.
Le problème est que cette feuille ne possède pas cette propriété.
Dans l'exemple de Zoury, il commençait par appeler sa propriété Date puis
Value => même erreur... ou alors, j'ai pas compris son exemple?

Pour corriger ton code, tu dois donc fournir une propriété Texte dans
FrmAppele.
Tu as déjà deux propriétés pour la récupération, donc, on a besoin
uniquement d'une Property Let pour définir la valeur initiale de DateValue:
Public Property Let Texte(NewDate As String)
DateValue = CDate(NewDate)
End Property

Tu réemploie par la suite la propriété texte dans:
ObtenirEnr = frm.Texte


Mais, on a toujours pas de propriété Get pour récupérer le texte.. par
contre, tu as définit deux autres propriétés pour récupérer le texte. On va
donc les utiliser:
ObtenirEnr = frm.ObtenirEnr

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Zoury
> Dans l'exemple de Zoury, il commençait par appeler sa propriété Date puis
Value => même erreur... ou alors, j'ai pas compris son exemple?



Yep. c'est mon erreur.. J'avais commencé par l'appelée Date et j'ai changé
d'idée étant donnée que Date est un mot clé existant en VB je voulais donc
éviter les conflits mais j'ai aussi omit de faire la modification partout
dans le code.. :OP


--
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
François Picalausa
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:%
Dans l'exemple de Zoury, il commençait par appeler sa propriété Date
puis Value => même erreur... ou alors, j'ai pas compris son exemple?



Yep. c'est mon erreur.. J'avais commencé par l'appelée Date et j'ai
changé d'idée étant donnée que Date est un mot clé existant en VB je
voulais donc éviter les conflits mais j'ai aussi omit de faire la
modification partout dans le code.. :OP



Je connais ça... et je me doutais de la raison... je voulais juste m'en
assurer ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
JCM
Bonjour François

Merci pour ta réponse, mais je crois que je vais passer un
mauvais Noel, car cela beug encore

j'ai fait les modif et cela beug au Public property Let.
cela me dit : Type incompatible

Voici le code corrigé :

FORME APPLELANTE
'1 label : lblAccord et 1 label lblEnregistrement

Option Explicit
Private Sub Form_Load()
LblAccord.Caption = "Bon pour accord le "
LblEnregistrement.Caption = "enregistré le "
End Sub

Private Sub LblAccord_Click()
LblAccord.Caption = ObtenirAcd(LblAccord.Caption, Me)
FrmAppele.Show 1
End Sub

Private Sub LblEnregistrement_Click()
LblEnregistrement.Caption = ObtenirEnr
(LblEnregistrement.Caption, Me)
FrmAppele.Show 1
End Sub

Public Function ObtenirEnr(ByRef sDefault As String, ByRef
frmOwner As Object) As String
If (Not TypeOf frmOwner Is Form) Then Exit Function
'Crée une nouvelle feuille de calendrier et initialise
ses propriétés
Dim frm As FrmAppele
Set frm = New FrmAppele
frm.Texte = sDefault
'Affiche la feuille
Call frm.Show(vbModal, frmOwner)
'Récupère la saisie de l'utilisateur
ObtenirEnr = frm.ObtenirEnr
'Décharge la feuille
Call Unload(frm)
End Function
Public Function ObtenirAcd(ByRef sDefault As String, ByRef
frmOwner As Object) As String
If (Not TypeOf frmOwner Is Form) Then Exit Function
'Crée une nouvelle feuille de calendrier et initialise
ses propriétés
Dim frm As FrmAppele
Set frm = New FrmAppele
frm.Texte = sDefault
'Affiche la feuille
Call frm.Show(vbModal, frmOwner)
'Récupère la saisie de l'utilisateur
ObtenirAcd = frm.ObtenirAcd
'Décharge la feuille
Call Unload(frm)
End Function

FORME APPELEE
'1 calendar : cldCalendrier

Option Explicit
Private DateValue As Date

Private Sub CldCalendrier_Click()
DateValue = CldCalendrier.Value
Me.Hide
End Sub
Public Property Get ObtenirAcd() As String
ObtenirAcd = "Bon pour accord le " & CStr(DateValue)
End Property
Public Property Get ObtenirEnr() As String
ObtenirEnr = "Enregistré le " & CStr(DateValue)
End Property
Public Property Let Texte(Newdate As String)
DateValue = CDate(Newdate)
End Property

Merci de ta réponse
Jean Claude
-----Message d'origine-----
"JCM" a écrit dans le


message de
news:074901c3c94b$682c4dd0$

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


.



Avatar
François Picalausa
"JCM" a écrit dans le message de
news:05fb01c3c9f9$446cb340$
Bonjour François

Merci pour ta réponse, mais je crois que je vais passer un
mauvais Noel, car cela beug encore

j'ai fait les modif et cela beug au Public property Let.
cela me dit : Type incompatible



Bonjour/soir,

Modifie Let comme ceci:
Public Property Let Texte(Newdate As String)
'On s'assure qu'il y a une date présente
If Newdate <> "" Then
cldCalendrier.Value = CDate(Newdate)
DateValue = CDate(Newdate)
Else 'Sinon, on utilise celle actuelle
cldCalendrier.Value = Date
DateValue = Date
End If
End Property

Dans ObtenirEnr, on va recouper la partie de texte inutile pour passer une
date à la propriété Texte:
frm.Texte = Mid$(sDefault, 15)
15 correspond à Len("enregistré le ")+1; le début de la date

dans Obtenir Acd:
frm.Texte = Mid$(sDefault, 20)

Comme celà, ça devrait fonctionner ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
JCM
Merci François

Cela marche, toutefois il faut supprimer dans le
label.click : frmAppele.show, sinon la form s'affiche deux
fois.

Merci encore de ton secours et surtout passe un joyeux Noel

Jean Claude
-----Message d'origine-----
"JCM" a écrit dans le


message de
news:05fb01c3c9f9$446cb340$
Bonjour François

Merci pour ta réponse, mais je crois que je vais passer




un
mauvais Noel, car cela beug encore

j'ai fait les modif et cela beug au Public property Let.
cela me dit : Type incompatible



Bonjour/soir,

Modifie Let comme ceci:
Public Property Let Texte(Newdate As String)
'On s'assure qu'il y a une date présente
If Newdate <> "" Then
cldCalendrier.Value = CDate(Newdate)
DateValue = CDate(Newdate)
Else 'Sinon, on utilise celle actuelle
cldCalendrier.Value = Date
DateValue = Date
End If
End Property

Dans ObtenirEnr, on va recouper la partie de texte


inutile pour passer une
date à la propriété Texte:
frm.Texte = Mid$(sDefault, 15)
15 correspond à Len("enregistré le ")+1; le début de la


date

dans Obtenir Acd:
frm.Texte = Mid$(sDefault, 20)

Comme celà, ça devrait fonctionner ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


.