mymsg.frm me sert de MsgBox.
Elle est équipée de 2 boutons "Oui" et "Non" codés comme suit :
Private Sub cmdnon_Click()
mgret = 7
Unload Me
End Sub
Private Sub cmdoui_Click()
mgret = 6
Unload Me
End Sub
mgret est une variable publique (Integer).
mymsg.frm est appelée par ma fonction ShowMsg ci-dessous :
Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer
Msg = A
If Not IsMissing(B) Then mgIt = B
If Not IsMissing(C) Then mgtit = C
mymsg.Show 1
ShowMsg = mgret
End Function
A un 1er appel, je réponds "Oui" (donc cmdoui_Click).
A un 2ème appel, je réponds "Non" (donc cmdnon_Click).
Au 3ème appel mymsg n'apparaît pas et VB me dit :
<Erreur d'exécution '400':
Feuille déjà affichée; impossible d'afficher modalement.>
Quel culot quand on voit que mes cmdnon_Click et cmdoui_Click lui ont dit
Unload Me !
D'autant plus que cet incident ne se reproduit pas si, dans ShowMsg, j'écris
<Unload mymsg> avant <mymsg.Show 1>
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc
"Yves Boyer" a écrit dans le message de news:
mymsg.frm me sert de MsgBox. Elle est équipée de 2 boutons "Oui" et "Non" codés comme suit : Private Sub cmdnon_Click() mgret = 7 Unload Me End Sub
Private Sub cmdoui_Click() mgret = 6 Unload Me End Sub
mgret est une variable publique (Integer). mymsg.frm est appelée par ma fonction ShowMsg ci-dessous : Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer Msg = A If Not IsMissing(B) Then mgIt = B If Not IsMissing(C) Then mgtit = C mymsg.Show 1 ShowMsg = mgret End Function
A un 1er appel, je réponds "Oui" (donc cmdoui_Click). A un 2ème appel, je réponds "Non" (donc cmdnon_Click). Au 3ème appel mymsg n'apparaît pas et VB me dit : <Erreur d'exécution '400': Feuille déjà affichée; impossible d'afficher modalement.>
Quel culot quand on voit que mes cmdnon_Click et cmdoui_Click lui ont dit Unload Me ! D'autant plus que cet incident ne se reproduit pas si, dans ShowMsg,
j'écris
<Unload mymsg> avant <mymsg.Show 1>
Alors comment expliquez-vous cette lubie de VB ?
Hello,
impossible de reproduire ton probleme. Voici comment j'ai fait:
voici ma form principale: *** Option Explicit Dim mgit As String Dim mgtit As String Dim msg As String
Private Sub Command1_Click() Call ShowMsg("hh") End Sub Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer msg = A If Not IsMissing(B) Then mgit = B If Not IsMissing(C) Then mgtit = C mymsg.Show 1 ShowMsg = mgret End Function ***
la forme mymsg *** Option Explicit
Private Sub cmdnon_Click() mgret = 7 Unload Me End Sub
Private Sub cmdoui_Click() mgret = 6 Unload Me End Sub ***
et le module pour la variable publique *** Option Explicit Public mgret As Integer ****
A priori, le probleme vient d'ailleurs;
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
"Yves Boyer" <yboyerNOSPAM@tiscali.ch> a écrit dans le message de
news:ePmRicGuEHA.1884@TK2MSFTNGP15.phx.gbl...
mymsg.frm me sert de MsgBox.
Elle est équipée de 2 boutons "Oui" et "Non" codés comme suit :
Private Sub cmdnon_Click()
mgret = 7
Unload Me
End Sub
Private Sub cmdoui_Click()
mgret = 6
Unload Me
End Sub
mgret est une variable publique (Integer).
mymsg.frm est appelée par ma fonction ShowMsg ci-dessous :
Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer
Msg = A
If Not IsMissing(B) Then mgIt = B
If Not IsMissing(C) Then mgtit = C
mymsg.Show 1
ShowMsg = mgret
End Function
A un 1er appel, je réponds "Oui" (donc cmdoui_Click).
A un 2ème appel, je réponds "Non" (donc cmdnon_Click).
Au 3ème appel mymsg n'apparaît pas et VB me dit :
<Erreur d'exécution '400':
Feuille déjà affichée; impossible d'afficher modalement.>
Quel culot quand on voit que mes cmdnon_Click et cmdoui_Click lui ont dit
Unload Me !
D'autant plus que cet incident ne se reproduit pas si, dans ShowMsg,
j'écris
<Unload mymsg> avant <mymsg.Show 1>
Alors comment expliquez-vous cette lubie de VB ?
Hello,
impossible de reproduire ton probleme.
Voici comment j'ai fait:
voici ma form principale:
***
Option Explicit
Dim mgit As String
Dim mgtit As String
Dim msg As String
Private Sub Command1_Click()
Call ShowMsg("hh")
End Sub
Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer
msg = A
If Not IsMissing(B) Then mgit = B
If Not IsMissing(C) Then mgtit = C
mymsg.Show 1
ShowMsg = mgret
End Function
***
la forme mymsg
***
Option Explicit
Private Sub cmdnon_Click()
mgret = 7
Unload Me
End Sub
Private Sub cmdoui_Click()
mgret = 6
Unload Me
End Sub
***
et le module pour la variable publique
***
Option Explicit
Public mgret As Integer
****
A priori, le probleme vient d'ailleurs;
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mymsg.frm me sert de MsgBox. Elle est équipée de 2 boutons "Oui" et "Non" codés comme suit : Private Sub cmdnon_Click() mgret = 7 Unload Me End Sub
Private Sub cmdoui_Click() mgret = 6 Unload Me End Sub
mgret est une variable publique (Integer). mymsg.frm est appelée par ma fonction ShowMsg ci-dessous : Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer Msg = A If Not IsMissing(B) Then mgIt = B If Not IsMissing(C) Then mgtit = C mymsg.Show 1 ShowMsg = mgret End Function
A un 1er appel, je réponds "Oui" (donc cmdoui_Click). A un 2ème appel, je réponds "Non" (donc cmdnon_Click). Au 3ème appel mymsg n'apparaît pas et VB me dit : <Erreur d'exécution '400': Feuille déjà affichée; impossible d'afficher modalement.>
Quel culot quand on voit que mes cmdnon_Click et cmdoui_Click lui ont dit Unload Me ! D'autant plus que cet incident ne se reproduit pas si, dans ShowMsg,
j'écris
<Unload mymsg> avant <mymsg.Show 1>
Alors comment expliquez-vous cette lubie de VB ?
Hello,
impossible de reproduire ton probleme. Voici comment j'ai fait:
voici ma form principale: *** Option Explicit Dim mgit As String Dim mgtit As String Dim msg As String
Private Sub Command1_Click() Call ShowMsg("hh") End Sub Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer msg = A If Not IsMissing(B) Then mgit = B If Not IsMissing(C) Then mgtit = C mymsg.Show 1 ShowMsg = mgret End Function ***
la forme mymsg *** Option Explicit
Private Sub cmdnon_Click() mgret = 7 Unload Me End Sub
Private Sub cmdoui_Click() mgret = 6 Unload Me End Sub ***
et le module pour la variable publique *** Option Explicit Public mgret As Integer ****
A priori, le probleme vient d'ailleurs;
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
Christian HUBERT-HUGOUD- Xtrem7
Salut,
En fait tu n'es jamais certain que ta feuille soit déchargée, même si tu l'unload. Il faut la mettre à nothing impérativement.
Evidemment, tu ne peux pas la mettre à nothing depuis elle-même ; donc tu dois avoir une fonction externe.
J'ai moi aussi développé ma msgbox ; voici ma stratégie :
Dans la feuille elle-même une fonction Use, qui reçoit des paramètres. Dans Use, je me montre moi-même en modal (le code de la fonction Use s'arrête alors ici, tant que la feuille n'est pas cachée). Lorsque la feuille est cachée par un Me.hide lors du clic dans un bouton de la feuille, le code repart. Et on affecte une valeur à Use (cela évite d'avoir une variable globale)...
Dans un module public...
Public Function BoxInfo&(ByVal Message As String, Optional Buttons As String)
Dim f As fBox 'fBox est MA msgbox propriétaire
Set f = New fBox 'pour pouvoir afficher plusieurs msgbox en même temps
BoxInfo = f.Use(Message, Buttons, info) 'on appelle la fonction Use de la feuille elle-même, et elle renvoie une valeur (inutilisée ici) Unload f Set f = Nothing 'c'est là que la feuille est vraiment déchargée
End Function
maintenant la fonction Use de la feuille...
Public Function Use(ByVal Text As String, Optional ByVal Buttons As String, Optional ByVal Mode As cfBoxUseMode) As Long
'ici il y a tout un code pour paramétrer la feuille
show vbModal 'le code s'arrête ici tant que la feuille est visible
Use = m_back 'Use renvoie l'index du bouton sur lequel on a cliqué
End Function
Puis le code d'un des boutons de la feuille...
Private Sub b_Click(Index As Integer) 'index car il y a plusieurs boutons
m_back = Index 'm_back est une variable locale qui me sera utile pour savoir sur quel bouton on a cliqué dans Use Me.Hide 'permet au code de la fonction Use de reprendre
End Sub
Hope this helps...
Christian
"Jean-Marc" a écrit dans le message de news:41795c1b$0$22747$
"Yves Boyer" a écrit dans le message de news: > mymsg.frm me sert de MsgBox. > Elle est équipée de 2 boutons "Oui" et "Non" codés comme suit : > Private Sub cmdnon_Click() > mgret = 7 > Unload Me > End Sub > > Private Sub cmdoui_Click() > mgret = 6 > Unload Me > End Sub > > mgret est une variable publique (Integer). > mymsg.frm est appelée par ma fonction ShowMsg ci-dessous : > Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer > Msg = A > If Not IsMissing(B) Then mgIt = B > If Not IsMissing(C) Then mgtit = C > mymsg.Show 1 > ShowMsg = mgret > End Function > > A un 1er appel, je réponds "Oui" (donc cmdoui_Click). > A un 2ème appel, je réponds "Non" (donc cmdnon_Click). > Au 3ème appel mymsg n'apparaît pas et VB me dit : > <Erreur d'exécution '400': > Feuille déjà affichée; impossible d'afficher modalement.> > > Quel culot quand on voit que mes cmdnon_Click et cmdoui_Click lui ont
dit
> Unload Me ! > D'autant plus que cet incident ne se reproduit pas si, dans ShowMsg, j'écris > <Unload mymsg> avant <mymsg.Show 1> > > Alors comment expliquez-vous cette lubie de VB ?
Hello,
impossible de reproduire ton probleme. Voici comment j'ai fait:
voici ma form principale: *** Option Explicit Dim mgit As String Dim mgtit As String Dim msg As String
Private Sub Command1_Click() Call ShowMsg("hh") End Sub Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer msg = A If Not IsMissing(B) Then mgit = B If Not IsMissing(C) Then mgtit = C mymsg.Show 1 ShowMsg = mgret End Function ***
la forme mymsg *** Option Explicit
Private Sub cmdnon_Click() mgret = 7 Unload Me End Sub
Private Sub cmdoui_Click() mgret = 6 Unload Me End Sub ***
et le module pour la variable publique *** Option Explicit Public mgret As Integer ****
A priori, le probleme vient d'ailleurs;
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
Salut,
En fait tu n'es jamais certain que ta feuille soit déchargée, même si tu
l'unload. Il faut la mettre à nothing impérativement.
Evidemment, tu ne peux pas la mettre à nothing depuis elle-même ; donc tu
dois avoir une fonction externe.
J'ai moi aussi développé ma msgbox ; voici ma stratégie :
Dans la feuille elle-même une fonction Use, qui reçoit des paramètres. Dans
Use, je me montre moi-même en modal (le code de la fonction Use s'arrête
alors ici, tant que la feuille n'est pas cachée). Lorsque la feuille est
cachée par un Me.hide lors du clic dans un bouton de la feuille, le code
repart. Et on affecte une valeur à Use (cela évite d'avoir une variable
globale)...
Dans un module public...
Public Function BoxInfo&(ByVal Message As String, Optional Buttons As
String)
Dim f As fBox 'fBox est MA msgbox propriétaire
Set f = New fBox 'pour pouvoir afficher plusieurs msgbox en même temps
BoxInfo = f.Use(Message, Buttons, info) 'on appelle la fonction Use de la
feuille elle-même, et elle renvoie une valeur (inutilisée ici)
Unload f
Set f = Nothing 'c'est là que la feuille est vraiment déchargée
End Function
maintenant la fonction Use de la feuille...
Public Function Use(ByVal Text As String, Optional ByVal Buttons As String,
Optional ByVal Mode As cfBoxUseMode) As Long
'ici il y a tout un code pour paramétrer la feuille
show vbModal 'le code s'arrête ici tant que la feuille est visible
Use = m_back 'Use renvoie l'index du bouton sur lequel on a cliqué
End Function
Puis le code d'un des boutons de la feuille...
Private Sub b_Click(Index As Integer) 'index car il y a plusieurs boutons
m_back = Index 'm_back est une variable locale qui me sera utile pour
savoir sur quel bouton on a cliqué dans Use
Me.Hide 'permet au code de la fonction Use de reprendre
End Sub
Hope this helps...
Christian
"Jean-Marc" <nospamjean_marc_n2@yahoo.fr> a écrit dans le message de
news:41795c1b$0$22747$ba620e4c@news.skynet.be...
"Yves Boyer" <yboyerNOSPAM@tiscali.ch> a écrit dans le message de
news:ePmRicGuEHA.1884@TK2MSFTNGP15.phx.gbl...
> mymsg.frm me sert de MsgBox.
> Elle est équipée de 2 boutons "Oui" et "Non" codés comme suit :
> Private Sub cmdnon_Click()
> mgret = 7
> Unload Me
> End Sub
>
> Private Sub cmdoui_Click()
> mgret = 6
> Unload Me
> End Sub
>
> mgret est une variable publique (Integer).
> mymsg.frm est appelée par ma fonction ShowMsg ci-dessous :
> Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer
> Msg = A
> If Not IsMissing(B) Then mgIt = B
> If Not IsMissing(C) Then mgtit = C
> mymsg.Show 1
> ShowMsg = mgret
> End Function
>
> A un 1er appel, je réponds "Oui" (donc cmdoui_Click).
> A un 2ème appel, je réponds "Non" (donc cmdnon_Click).
> Au 3ème appel mymsg n'apparaît pas et VB me dit :
> <Erreur d'exécution '400':
> Feuille déjà affichée; impossible d'afficher modalement.>
>
> Quel culot quand on voit que mes cmdnon_Click et cmdoui_Click lui ont
dit
> Unload Me !
> D'autant plus que cet incident ne se reproduit pas si, dans ShowMsg,
j'écris
> <Unload mymsg> avant <mymsg.Show 1>
>
> Alors comment expliquez-vous cette lubie de VB ?
Hello,
impossible de reproduire ton probleme.
Voici comment j'ai fait:
voici ma form principale:
***
Option Explicit
Dim mgit As String
Dim mgtit As String
Dim msg As String
Private Sub Command1_Click()
Call ShowMsg("hh")
End Sub
Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer
msg = A
If Not IsMissing(B) Then mgit = B
If Not IsMissing(C) Then mgtit = C
mymsg.Show 1
ShowMsg = mgret
End Function
***
la forme mymsg
***
Option Explicit
Private Sub cmdnon_Click()
mgret = 7
Unload Me
End Sub
Private Sub cmdoui_Click()
mgret = 6
Unload Me
End Sub
***
et le module pour la variable publique
***
Option Explicit
Public mgret As Integer
****
A priori, le probleme vient d'ailleurs;
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
En fait tu n'es jamais certain que ta feuille soit déchargée, même si tu l'unload. Il faut la mettre à nothing impérativement.
Evidemment, tu ne peux pas la mettre à nothing depuis elle-même ; donc tu dois avoir une fonction externe.
J'ai moi aussi développé ma msgbox ; voici ma stratégie :
Dans la feuille elle-même une fonction Use, qui reçoit des paramètres. Dans Use, je me montre moi-même en modal (le code de la fonction Use s'arrête alors ici, tant que la feuille n'est pas cachée). Lorsque la feuille est cachée par un Me.hide lors du clic dans un bouton de la feuille, le code repart. Et on affecte une valeur à Use (cela évite d'avoir une variable globale)...
Dans un module public...
Public Function BoxInfo&(ByVal Message As String, Optional Buttons As String)
Dim f As fBox 'fBox est MA msgbox propriétaire
Set f = New fBox 'pour pouvoir afficher plusieurs msgbox en même temps
BoxInfo = f.Use(Message, Buttons, info) 'on appelle la fonction Use de la feuille elle-même, et elle renvoie une valeur (inutilisée ici) Unload f Set f = Nothing 'c'est là que la feuille est vraiment déchargée
End Function
maintenant la fonction Use de la feuille...
Public Function Use(ByVal Text As String, Optional ByVal Buttons As String, Optional ByVal Mode As cfBoxUseMode) As Long
'ici il y a tout un code pour paramétrer la feuille
show vbModal 'le code s'arrête ici tant que la feuille est visible
Use = m_back 'Use renvoie l'index du bouton sur lequel on a cliqué
End Function
Puis le code d'un des boutons de la feuille...
Private Sub b_Click(Index As Integer) 'index car il y a plusieurs boutons
m_back = Index 'm_back est une variable locale qui me sera utile pour savoir sur quel bouton on a cliqué dans Use Me.Hide 'permet au code de la fonction Use de reprendre
End Sub
Hope this helps...
Christian
"Jean-Marc" a écrit dans le message de news:41795c1b$0$22747$
"Yves Boyer" a écrit dans le message de news: > mymsg.frm me sert de MsgBox. > Elle est équipée de 2 boutons "Oui" et "Non" codés comme suit : > Private Sub cmdnon_Click() > mgret = 7 > Unload Me > End Sub > > Private Sub cmdoui_Click() > mgret = 6 > Unload Me > End Sub > > mgret est une variable publique (Integer). > mymsg.frm est appelée par ma fonction ShowMsg ci-dessous : > Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer > Msg = A > If Not IsMissing(B) Then mgIt = B > If Not IsMissing(C) Then mgtit = C > mymsg.Show 1 > ShowMsg = mgret > End Function > > A un 1er appel, je réponds "Oui" (donc cmdoui_Click). > A un 2ème appel, je réponds "Non" (donc cmdnon_Click). > Au 3ème appel mymsg n'apparaît pas et VB me dit : > <Erreur d'exécution '400': > Feuille déjà affichée; impossible d'afficher modalement.> > > Quel culot quand on voit que mes cmdnon_Click et cmdoui_Click lui ont
dit
> Unload Me ! > D'autant plus que cet incident ne se reproduit pas si, dans ShowMsg, j'écris > <Unload mymsg> avant <mymsg.Show 1> > > Alors comment expliquez-vous cette lubie de VB ?
Hello,
impossible de reproduire ton probleme. Voici comment j'ai fait:
voici ma form principale: *** Option Explicit Dim mgit As String Dim mgtit As String Dim msg As String
Private Sub Command1_Click() Call ShowMsg("hh") End Sub Public Function ShowMsg(A$, Optional B%, Optional C$) As Integer msg = A If Not IsMissing(B) Then mgit = B If Not IsMissing(C) Then mgtit = C mymsg.Show 1 ShowMsg = mgret End Function ***
la forme mymsg *** Option Explicit
Private Sub cmdnon_Click() mgret = 7 Unload Me End Sub
Private Sub cmdoui_Click() mgret = 6 Unload Me End Sub ***
et le module pour la variable publique *** Option Explicit Public mgret As Integer ****
A priori, le probleme vient d'ailleurs;
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
Yves Boyer
Merci pour cette solution qui est très bien expliquée.
Ainsi le code <Unload f: Set f = Nothing> montre bien qu'un simple Unload peut être insuffisant et qu'il faut le doubler d'un <Set ... = Nothing> J'ai donc écrit dans mes codes de boutons "Oui" et "Non" de ma feuille mymsg.frm : <Unload Me Set mymsg = Nothing> et ça marche.
Je ne comprends pas pourquoi le code de ta fonction Use s'arrête à "Show vbModal" tant que la feuille f est visible. Pourquoi le "Me.Hide" de b_Click permet-il à ce code de se poursuivre par <Use = m_back> sachant que l'Integer m_back est une variable au niveau de la feuille f ?
Bon dimanche !
Yves Boyer
Merci pour cette solution qui est très bien expliquée.
Ainsi le code <Unload f: Set f = Nothing> montre bien qu'un simple Unload
peut être insuffisant et qu'il faut le doubler d'un <Set ... = Nothing>
J'ai donc écrit dans mes codes de boutons "Oui" et "Non" de ma feuille
mymsg.frm :
<Unload Me
Set mymsg = Nothing>
et ça marche.
Je ne comprends pas pourquoi le code de ta fonction Use s'arrête à "Show
vbModal" tant que la feuille f est visible. Pourquoi le "Me.Hide" de b_Click
permet-il à ce code de se poursuivre par
<Use = m_back> sachant que l'Integer m_back est une variable au niveau de la
feuille f ?
Merci pour cette solution qui est très bien expliquée.
Ainsi le code <Unload f: Set f = Nothing> montre bien qu'un simple Unload peut être insuffisant et qu'il faut le doubler d'un <Set ... = Nothing> J'ai donc écrit dans mes codes de boutons "Oui" et "Non" de ma feuille mymsg.frm : <Unload Me Set mymsg = Nothing> et ça marche.
Je ne comprends pas pourquoi le code de ta fonction Use s'arrête à "Show vbModal" tant que la feuille f est visible. Pourquoi le "Me.Hide" de b_Click permet-il à ce code de se poursuivre par <Use = m_back> sachant que l'Integer m_back est une variable au niveau de la feuille f ?
Bon dimanche !
Yves Boyer
Christian HUBERT-HUGOUD- Xtrem7
Bonjour,
Attention : je ne pense pas que le code set me = nothing puisse fonctionner (je ne pense pas qu'on puisse s'autodétruire). Si la feuille est réellement déchargée, c'est le fait du hasard, selon moi. Cela n'arrivera pas toujours.
Le code s'arrête parce que la feuille est modale. Sinon, il continuerait à s'éxécuter. Cette façon de faire est très "solide" et un peu agricole. Elle fonctionne à coup sur sous tous les OS Windows.
Le me.hide "supprime" le caractère modale de la feuille (c'est l'idée générale). En mode modal, les instruction s'exécutent les unes à la suite des autres. C'est ce qu'on faisait partout avant l'évènementiel. En mode modal, le programmeur sait toujours où est l'utilisateur. De ce fait, l'utilisateur ne peut pas faire n'importe quoi. C'est le cas des ancien programmes en mode console. En évènementiel, c'est autre chose : on doit gérer tous les cas.
Voila...
Christian
"Yves Boyer" a écrit dans le message de news:
Merci pour cette solution qui est très bien expliquée.
Ainsi le code <Unload f: Set f = Nothing> montre bien qu'un simple Unload peut être insuffisant et qu'il faut le doubler d'un <Set ... = Nothing> J'ai donc écrit dans mes codes de boutons "Oui" et "Non" de ma feuille mymsg.frm : <Unload Me Set mymsg = Nothing> et ça marche.
Je ne comprends pas pourquoi le code de ta fonction Use s'arrête à "Show vbModal" tant que la feuille f est visible. Pourquoi le "Me.Hide" de
b_Click
permet-il à ce code de se poursuivre par <Use = m_back> sachant que l'Integer m_back est une variable au niveau de
la
feuille f ?
Bon dimanche !
Yves Boyer
Bonjour,
Attention : je ne pense pas que le code set me = nothing puisse fonctionner
(je ne pense pas qu'on puisse s'autodétruire). Si la feuille est réellement
déchargée, c'est le fait du hasard, selon moi. Cela n'arrivera pas toujours.
Le code s'arrête parce que la feuille est modale. Sinon, il continuerait à
s'éxécuter. Cette façon de faire est très "solide" et un peu agricole. Elle
fonctionne à coup sur sous tous les OS Windows.
Le me.hide "supprime" le caractère modale de la feuille (c'est l'idée
générale). En mode modal, les instruction s'exécutent les unes à la suite
des autres. C'est ce qu'on faisait partout avant l'évènementiel. En mode
modal, le programmeur sait toujours où est l'utilisateur. De ce fait,
l'utilisateur ne peut pas faire n'importe quoi. C'est le cas des ancien
programmes en mode console. En évènementiel, c'est autre chose : on doit
gérer tous les cas.
Voila...
Christian
"Yves Boyer" <yboyerNOSPAM@tiscali.ch> a écrit dans le message de
news:etJImCauEHA.2508@TK2MSFTNGP10.phx.gbl...
Merci pour cette solution qui est très bien expliquée.
Ainsi le code <Unload f: Set f = Nothing> montre bien qu'un simple Unload
peut être insuffisant et qu'il faut le doubler d'un <Set ... = Nothing>
J'ai donc écrit dans mes codes de boutons "Oui" et "Non" de ma feuille
mymsg.frm :
<Unload Me
Set mymsg = Nothing>
et ça marche.
Je ne comprends pas pourquoi le code de ta fonction Use s'arrête à "Show
vbModal" tant que la feuille f est visible. Pourquoi le "Me.Hide" de
b_Click
permet-il à ce code de se poursuivre par
<Use = m_back> sachant que l'Integer m_back est une variable au niveau de
Attention : je ne pense pas que le code set me = nothing puisse fonctionner (je ne pense pas qu'on puisse s'autodétruire). Si la feuille est réellement déchargée, c'est le fait du hasard, selon moi. Cela n'arrivera pas toujours.
Le code s'arrête parce que la feuille est modale. Sinon, il continuerait à s'éxécuter. Cette façon de faire est très "solide" et un peu agricole. Elle fonctionne à coup sur sous tous les OS Windows.
Le me.hide "supprime" le caractère modale de la feuille (c'est l'idée générale). En mode modal, les instruction s'exécutent les unes à la suite des autres. C'est ce qu'on faisait partout avant l'évènementiel. En mode modal, le programmeur sait toujours où est l'utilisateur. De ce fait, l'utilisateur ne peut pas faire n'importe quoi. C'est le cas des ancien programmes en mode console. En évènementiel, c'est autre chose : on doit gérer tous les cas.
Voila...
Christian
"Yves Boyer" a écrit dans le message de news:
Merci pour cette solution qui est très bien expliquée.
Ainsi le code <Unload f: Set f = Nothing> montre bien qu'un simple Unload peut être insuffisant et qu'il faut le doubler d'un <Set ... = Nothing> J'ai donc écrit dans mes codes de boutons "Oui" et "Non" de ma feuille mymsg.frm : <Unload Me Set mymsg = Nothing> et ça marche.
Je ne comprends pas pourquoi le code de ta fonction Use s'arrête à "Show vbModal" tant que la feuille f est visible. Pourquoi le "Me.Hide" de
b_Click
permet-il à ce code de se poursuivre par <Use = m_back> sachant que l'Integer m_back est une variable au niveau de