Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier,
Il n'y a aucune raison pour que cela arrive ...
quelle est la procédure du bouton qui ouvre ton fichier ?
Salutations!
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne
le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier,
Il n'y a aucune raison pour que cela arrive ...
quelle est la procédure du bouton qui ouvre ton fichier ?
Salutations!
"Xavier POWAGA" <xavierpowaga@free.fr> a écrit dans le message de news:
4417fd78$0$27989$626a54ce@news.free.fr...
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne
le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier,
Il n'y a aucune raison pour que cela arrive ...
quelle est la procédure du bouton qui ouvre ton fichier ?
Salutations!
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne
le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette fçon
de faire permet les sélections dans la feuille, mais ne donne pas la main
au clavier pour y écrire quoi que ce soit sauf par copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm conduisent
au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et
à partir du clic sur un bouton contenu dans cette form j'ouvre un fichier
en utilisant application.Getopenfilename. A partir de là ma form n'est
plus showmodal, c'est à dire que je peux activer d'autres fenetre alors
que je ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette fçon
de faire permet les sélections dans la feuille, mais ne donne pas la main
au clavier pour y écrire quoi que ce soit sauf par copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm conduisent
au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" <xavierpowaga@free.fr> a écrit dans le message de news:
4417fd78$0$27989$626a54ce@news.free.fr...
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et
à partir du clic sur un bouton contenu dans cette form j'ouvre un fichier
en utilisant application.Getopenfilename. A partir de là ma form n'est
plus showmodal, c'est à dire que je peux activer d'autres fenetre alors
que je ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette fçon
de faire permet les sélections dans la feuille, mais ne donne pas la main
au clavier pour y écrire quoi que ce soit sauf par copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm conduisent
au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et
à partir du clic sur un bouton contenu dans cette form j'ouvre un fichier
en utilisant application.Getopenfilename. A partir de là ma form n'est
plus showmodal, c'est à dire que je peux activer d'autres fenetre alors
que je ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier,
Il n'y a aucune raison pour que cela arrive ...
quelle est la procédure du bouton qui ouvre ton fichier ?
Salutations!
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne
le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier,
Il n'y a aucune raison pour que cela arrive ...
quelle est la procédure du bouton qui ouvre ton fichier ?
Salutations!
"Xavier POWAGA" <xavierpowaga@free.fr> a écrit dans le message de news:
4417fd78$0$27989$626a54ce@news.free.fr...
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne
le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier,
Il n'y a aucune raison pour que cela arrive ...
quelle est la procédure du bouton qui ouvre ton fichier ?
Salutations!
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et à
partir du clic sur un bouton contenu dans cette form j'ouvre un fichier en
utilisant application.Getopenfilename. A partir de là ma form n'est plus
showmodal, c'est à dire que je peux activer d'autres fenetre alors que je
ne
le souhaite pas.
comment empécher ce phénomène.
merci
c'est gentils Michel mais j'ai rien compris. Mon niveau en VBA ne me
permet pas d'intégrer tes remarques. J'ai bien essayé, mais rien à faire.
Une bonne nuit de sommeil et demain peut être que j'y arriverai.
merci
Xavier
"Michel Pierron" a écrit dans le message de news:
%Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette
fçon de faire permet les sélections dans la feuille, mais ne donne pas la
main au clavier pour y écrire quoi que ce soit sauf par copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm conduisent
au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et
à partir du clic sur un bouton contenu dans cette form j'ouvre un
fichier en utilisant application.Getopenfilename. A partir de là ma form
n'est plus showmodal, c'est à dire que je peux activer d'autres fenetre
alors que je ne le souhaite pas.
comment empécher ce phénomène.
merci
c'est gentils Michel mais j'ai rien compris. Mon niveau en VBA ne me
permet pas d'intégrer tes remarques. J'ai bien essayé, mais rien à faire.
Une bonne nuit de sommeil et demain peut être que j'y arriverai.
merci
Xavier
"Michel Pierron" <michel.pierron@free.fr> a écrit dans le message de news:
%23vLlGBESGHA.336@TK2MSFTNGP12.phx.gbl...
Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette
fçon de faire permet les sélections dans la feuille, mais ne donne pas la
main au clavier pour y écrire quoi que ce soit sauf par copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm conduisent
au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" <xavierpowaga@free.fr> a écrit dans le message de news:
4417fd78$0$27989$626a54ce@news.free.fr...
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et
à partir du clic sur un bouton contenu dans cette form j'ouvre un
fichier en utilisant application.Getopenfilename. A partir de là ma form
n'est plus showmodal, c'est à dire que je peux activer d'autres fenetre
alors que je ne le souhaite pas.
comment empécher ce phénomène.
merci
c'est gentils Michel mais j'ai rien compris. Mon niveau en VBA ne me
permet pas d'intégrer tes remarques. J'ai bien essayé, mais rien à faire.
Une bonne nuit de sommeil et demain peut être que j'y arriverai.
merci
Xavier
"Michel Pierron" a écrit dans le message de news:
%Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette
fçon de faire permet les sélections dans la feuille, mais ne donne pas la
main au clavier pour y écrire quoi que ce soit sauf par copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm conduisent
au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true et
à partir du clic sur un bouton contenu dans cette form j'ouvre un
fichier en utilisant application.Getopenfilename. A partir de là ma form
n'est plus showmodal, c'est à dire que je peux activer d'autres fenetre
alors que je ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier;
Je persiste et je signe, l'utilisation de GetOpenFilename annule en partie
la propriété modal de l'UserForm et autorise ensuite la sélection de
cellules sur la feuille (testé avec xl2003) pour les versions d'Excel
supérieures à xl97. Avec xl97, cette méthode annule totalement la
propriété modal de l'UserForm.
Pour éviter ce problème, en première ligne de ton module UserForm ou en
deuxième si tu utilises l'instruction Option Explicit, tu fais un
copier-coller des deux déclarations suivantes:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Ensuite, tu modifies ta procédure comme suit; je te conseille de passer
par une variable intermédiaire (fName ou ce que tu souhaites) pour gérer
le cas où l'utilisateur annule la sélection de fichier :
Private Sub Btnr_Click()
On Error Resume Next
Dim fName As String
NomduProgramme = ActiveWorkbook.Name
ChDrive Left(ThisWorkbook.Path, 1)
ChDir ThisWorkbook.Path
fName = Application.GetOpenFilename(("Fichier AIC (*.csv),*.csv"))
If Len(fName) > 7 Then TextNomFichier.Text = fName
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
Le nom du fichier comprend nécessairement au moins 8 caractères (exemple:
c:a.csv) tandis que l'annulation renvoie Faux ou False (suivant la
langue) qui ne correspond au mieux qu'à 5 caractères; la condition If
Len(fName) > 7 te permets donc de gérer la condition d'annulation et / ou
la sélection d'un nom de fichier valide.
La sélection possible des cellules dans le classeur suite à l'utilisation
de GetOpenFilename est annulée par la ligne d'instruction EnableWindow
FindWindow(vbNullString, Application.Caption), 0 et la réactivation de
l'UserForm au premier plan par l'instruction AppActivate Me.Caption
MP
"Xavier POWAGA" a écrit dans le message de news:
4418924a$0$13225$c'est gentils Michel mais j'ai rien compris. Mon niveau en VBA ne me
permet pas d'intégrer tes remarques. J'ai bien essayé, mais rien à faire.
Une bonne nuit de sommeil et demain peut être que j'y arriverai.
merci
Xavier
"Michel Pierron" a écrit dans le message de
news: %Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette
fçon de faire permet les sélections dans la feuille, mais ne donne pas
la main au clavier pour y écrire quoi que ce soit sauf par
copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm
conduisent au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true
et à partir du clic sur un bouton contenu dans cette form j'ouvre un
fichier en utilisant application.Getopenfilename. A partir de là ma
form n'est plus showmodal, c'est à dire que je peux activer d'autres
fenetre alors que je ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier;
Je persiste et je signe, l'utilisation de GetOpenFilename annule en partie
la propriété modal de l'UserForm et autorise ensuite la sélection de
cellules sur la feuille (testé avec xl2003) pour les versions d'Excel
supérieures à xl97. Avec xl97, cette méthode annule totalement la
propriété modal de l'UserForm.
Pour éviter ce problème, en première ligne de ton module UserForm ou en
deuxième si tu utilises l'instruction Option Explicit, tu fais un
copier-coller des deux déclarations suivantes:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Ensuite, tu modifies ta procédure comme suit; je te conseille de passer
par une variable intermédiaire (fName ou ce que tu souhaites) pour gérer
le cas où l'utilisateur annule la sélection de fichier :
Private Sub Btnr_Click()
On Error Resume Next
Dim fName As String
NomduProgramme = ActiveWorkbook.Name
ChDrive Left(ThisWorkbook.Path, 1)
ChDir ThisWorkbook.Path
fName = Application.GetOpenFilename(("Fichier AIC (*.csv),*.csv"))
If Len(fName) > 7 Then TextNomFichier.Text = fName
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
Le nom du fichier comprend nécessairement au moins 8 caractères (exemple:
c:a.csv) tandis que l'annulation renvoie Faux ou False (suivant la
langue) qui ne correspond au mieux qu'à 5 caractères; la condition If
Len(fName) > 7 te permets donc de gérer la condition d'annulation et / ou
la sélection d'un nom de fichier valide.
La sélection possible des cellules dans le classeur suite à l'utilisation
de GetOpenFilename est annulée par la ligne d'instruction EnableWindow
FindWindow(vbNullString, Application.Caption), 0 et la réactivation de
l'UserForm au premier plan par l'instruction AppActivate Me.Caption
MP
"Xavier POWAGA" <xavierpowaga@free.fr> a écrit dans le message de news:
4418924a$0$13225$626a54ce@news.free.fr...
c'est gentils Michel mais j'ai rien compris. Mon niveau en VBA ne me
permet pas d'intégrer tes remarques. J'ai bien essayé, mais rien à faire.
Une bonne nuit de sommeil et demain peut être que j'y arriverai.
merci
Xavier
"Michel Pierron" <michel.pierron@free.fr> a écrit dans le message de
news: %23vLlGBESGHA.336@TK2MSFTNGP12.phx.gbl...
Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette
fçon de faire permet les sélections dans la feuille, mais ne donne pas
la main au clavier pour y écrire quoi que ce soit sauf par
copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm
conduisent au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" <xavierpowaga@free.fr> a écrit dans le message de news:
4417fd78$0$27989$626a54ce@news.free.fr...
Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true
et à partir du clic sur un bouton contenu dans cette form j'ouvre un
fichier en utilisant application.Getopenfilename. A partir de là ma
form n'est plus showmodal, c'est à dire que je peux activer d'autres
fenetre alors que je ne le souhaite pas.
comment empécher ce phénomène.
merci
Bonjour Xavier;
Je persiste et je signe, l'utilisation de GetOpenFilename annule en partie
la propriété modal de l'UserForm et autorise ensuite la sélection de
cellules sur la feuille (testé avec xl2003) pour les versions d'Excel
supérieures à xl97. Avec xl97, cette méthode annule totalement la
propriété modal de l'UserForm.
Pour éviter ce problème, en première ligne de ton module UserForm ou en
deuxième si tu utilises l'instruction Option Explicit, tu fais un
copier-coller des deux déclarations suivantes:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Ensuite, tu modifies ta procédure comme suit; je te conseille de passer
par une variable intermédiaire (fName ou ce que tu souhaites) pour gérer
le cas où l'utilisateur annule la sélection de fichier :
Private Sub Btnr_Click()
On Error Resume Next
Dim fName As String
NomduProgramme = ActiveWorkbook.Name
ChDrive Left(ThisWorkbook.Path, 1)
ChDir ThisWorkbook.Path
fName = Application.GetOpenFilename(("Fichier AIC (*.csv),*.csv"))
If Len(fName) > 7 Then TextNomFichier.Text = fName
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
Le nom du fichier comprend nécessairement au moins 8 caractères (exemple:
c:a.csv) tandis que l'annulation renvoie Faux ou False (suivant la
langue) qui ne correspond au mieux qu'à 5 caractères; la condition If
Len(fName) > 7 te permets donc de gérer la condition d'annulation et / ou
la sélection d'un nom de fichier valide.
La sélection possible des cellules dans le classeur suite à l'utilisation
de GetOpenFilename est annulée par la ligne d'instruction EnableWindow
FindWindow(vbNullString, Application.Caption), 0 et la réactivation de
l'UserForm au premier plan par l'instruction AppActivate Me.Caption
MP
"Xavier POWAGA" a écrit dans le message de news:
4418924a$0$13225$c'est gentils Michel mais j'ai rien compris. Mon niveau en VBA ne me
permet pas d'intégrer tes remarques. J'ai bien essayé, mais rien à faire.
Une bonne nuit de sommeil et demain peut être que j'y arriverai.
merci
Xavier
"Michel Pierron" a écrit dans le message de
news: %Bonjour Xavier;
Bah oui, c'est l'une des techniques possibles pour rendre une forme non
modale avec xl97; néanmoins, avec une version excel supérieure, cette
fçon de faire permet les sélections dans la feuille, mais ne donne pas
la main au clavier pour y écrire quoi que ce soit sauf par
copier-coller.
Un exemple, les 3 techniques suivantes dans un module UserForm
conduisent au même constat:
Private Declare Function EnableWindow& Lib _
"user32" (ByVal hWnd&, ByVal fEnable&)
Private Declare Function FindWindow& Lib _
"user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Sub Technique1()
EnableWindow FindWindow(vbNullString, Application.Caption), 1
End Sub
Private Sub Technique2()
Application.SendKeys "{esc}", True
Application.CommandBars.FindControl(ID:7).Execute
End Sub
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
End Sub
Private Sub UserForm_Activate()
'Technique1
'Technique2
Technique3
End Sub
Pour annuler l'activation possible du classeur, tu peux modifier la
procédure Technique3 comme suit:
Private Sub Technique3()
Application.SendKeys "{esc}", True
Application.GetOpenFilename
EnableWindow FindWindow(vbNullString, Application.Caption), 0
AppActivate Me.Caption
End Sub
MP
"Xavier POWAGA" a écrit dans le message de news:
4417fd78$0$27989$Bonjour à tous,
encore un mystère pour moi. Voilà j'ai crée une "Form" showmodal=true
et à partir du clic sur un bouton contenu dans cette form j'ouvre un
fichier en utilisant application.Getopenfilename. A partir de là ma
form n'est plus showmodal, c'est à dire que je peux activer d'autres
fenetre alors que je ne le souhaite pas.
comment empécher ce phénomène.
merci