Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Faire disparaître un userform

13 réponses
Avatar
Golf
Bonsoir,

Je désire créer un message informatif dans un userform, à l'ouverture du
fichier.
Je souhaite mettre dessus le message suivant : "Ne plus afficher ce message"
avec une case à cocher. Je souhaite que si l'utilisateur coche la case à
cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf

10 réponses

1 2
Avatar
Joel
Bonsoir,

voici quelquechose qui devrait répondre, de façon détournée à la demande :
Hypothèse :
Code du module "Special" :

Sub Auto_Open()
AfficherFormulaire
End Sub

Sub AfficherFormulaire()
UFInfo.Show
End Sub


à placer dans le module privé du Formulaire (nommé "UFInfo"), code du bouton
de commande "OK" :,
en supposant que la commande qui permet d'afficher le formulaire se trouve
dans le module "Special"

Private Sub CmBOK_Click()
Dim i As Long
If Me.ChkSupp Then
With ActiveWorkbook.VBProject.VBComponents("Special").CodeModule
For i = .CountOfLines To 1 Step -1
If InStr(1, .Lines(i, i), "UFInfo.Show") > 0 Then
.DeleteLines i
End If
Next
End With
End If
Me.Hide
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Golf" a écrit dans le message de
news:
Bonsoir,

Je désire créer un message informatif dans un userform, à l'ouverture du
fichier.
Je souhaite mettre dessus le message suivant : "Ne plus afficher ce
message"

avec une case à cocher. Je souhaite que si l'utilisateur coche la case à
cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf





Avatar
Joel
J'avais oublié de préciser que la case à cocher a été nommée : "ChkSupp"

mais tout le monde l'avais compris

;-)
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joel" a écrit dans le message de
news:cc9m0s$f8r$
Bonsoir,

voici quelquechose qui devrait répondre, de façon détournée à la demande :
Hypothèse :
Code du module "Special" :

Sub Auto_Open()
AfficherFormulaire
End Sub

Sub AfficherFormulaire()
UFInfo.Show
End Sub


à placer dans le module privé du Formulaire (nommé "UFInfo"), code du
bouton

de commande "OK" :,
en supposant que la commande qui permet d'afficher le formulaire se trouve
dans le module "Special"

Private Sub CmBOK_Click()
Dim i As Long
If Me.ChkSupp Then
With ActiveWorkbook.VBProject.VBComponents("Special").CodeModule
For i = .CountOfLines To 1 Step -1
If InStr(1, .Lines(i, i), "UFInfo.Show") > 0 Then
.DeleteLines i
End If
Next
End With
End If
Me.Hide
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Golf" a écrit dans le message de
news:
Bonsoir,

Je désire créer un message informatif dans un userform, à l'ouverture du
fichier.
Je souhaite mettre dessus le message suivant : "Ne plus afficher ce
message"

avec une case à cocher. Je souhaite que si l'utilisateur coche la case à
cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf









Avatar
Philippe.R
Bonsoir Golf,
Un petit coup d'oeil sur la page dédiée du Disciplus :
http://www.excelabo.net/xl/userforms.php
--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002

"Golf" a écrit dans le message de news:
Bonsoir,

Je désire créer un message informatif dans un userform, à l'ouverture du
fichier.
Je souhaite mettre dessus le message suivant : "Ne plus afficher ce message"
avec une case à cocher. Je souhaite que si l'utilisateur coche la case à
cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf





Avatar
Golf
Bonjour

En fait, il s'afit de détruire le userform, et non le
cacher.
Merci quand même.
Golf

-----Message d'origine-----
Bonsoir Golf,
Un petit coup d'oeil sur la page dédiée du Disciplus :
http://www.excelabo.net/xl/userforms.php
--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002

"Golf" a écrit dans le message de
news:

Bonsoir,

Je désire créer un message informatif dans un userform,
à l'ouverture du


fichier.
Je souhaite mettre dessus le message suivant : "Ne plus
afficher ce message"


avec une case à cocher. Je souhaite que si
l'utilisateur coche la case à


cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf






.




Avatar
Golf
Bonjour

Merci pour cette proc très sympa.
En fait je souhaite détruire le userfom, et non le cacher.
Merci quand même.
P.S. Ton site est lui aussi très sympa.
Golf


-----Message d'origine-----
J'avais oublié de préciser que la case à cocher a été
nommée : "ChkSupp"


mais tout le monde l'avais compris

;-)
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joel" a écrit dans le message de
news:cc9m0s$f8r$
Bonsoir,

voici quelquechose qui devrait répondre, de façon
détournée à la demande :


Hypothèse :
Code du module "Special" :

Sub Auto_Open()
AfficherFormulaire
End Sub

Sub AfficherFormulaire()
UFInfo.Show
End Sub


à placer dans le module privé du Formulaire
(nommé "UFInfo"), code du


bouton
de commande "OK" :,
en supposant que la commande qui permet d'afficher le
formulaire se trouve


dans le module "Special"

Private Sub CmBOK_Click()
Dim i As Long
If Me.ChkSupp Then
With ActiveWorkbook.VBProject.VBComponents
("Special").CodeModule


For i = .CountOfLines To 1 Step -1
If InStr(1, .Lines(i, i), "UFInfo.Show") > 0 Then
.DeleteLines i
End If
Next
End With
End If
Me.Hide
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Golf" a écrit dans le message de
news:
Bonsoir,

Je désire créer un message informatif dans un
userform, à l'ouverture du



fichier.
Je souhaite mettre dessus le message suivant : "Ne
plus afficher ce



message"
avec une case à cocher. Je souhaite que si
l'utilisateur coche la case à



cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf









.





Avatar
Joel
Bonjour Golf !

Merci pour les remarques sympas....

J'ai donc fait un effort supplémentaire ...

dans le module "Special"

Option Explicit
Public UsForm As Object 'AfficherFormulaire
Sub Auto_Open()
AfficherFormulaire
End Sub
Sub AfficherFormulaire()
UFInfo.Show 'AfficherFormulaire
If UFInfo.ChkSupp Then 'AfficherFormulaire
Set UsForm = ActiveWorkbook.VBProject.VBComponents("UFInfo")
'AfficherFormulaire
ActiveWorkbook.VBProject.VBComponents.Remove UsForm 'AfficherFormulaire
End If 'AfficherFormulaire
End Sub 'AfficherFormulaire

et dans le module privé du formulaire :

Option Explicit

Private Sub CmBOK_Click()
Dim i As Long
If Me.ChkSupp Then
With ActiveWorkbook.VBProject.VBComponents("Special").CodeModule
For i = .CountOfLines To 1 Step -1
If InStr(1, .Lines(i, i), "AfficherFormulaire") > 0 Then
.DeleteLines i
End If
Next
End With
End If
Me.Hide
End Sub


c'est tout ce que j'ai pu trouvé !!!!

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Golf" a écrit dans le message de
news:2650401c46268$7e9b8a20$
Bonjour

Merci pour cette proc très sympa.
En fait je souhaite détruire le userfom, et non le cacher.
Merci quand même.
P.S. Ton site est lui aussi très sympa.
Golf


-----Message d'origine-----
J'avais oublié de préciser que la case à cocher a été
nommée : "ChkSupp"


mais tout le monde l'avais compris

;-)
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joel" a écrit dans le message de
news:cc9m0s$f8r$
Bonsoir,

voici quelquechose qui devrait répondre, de façon
détournée à la demande :


Hypothèse :
Code du module "Special" :

Sub Auto_Open()
AfficherFormulaire
End Sub

Sub AfficherFormulaire()
UFInfo.Show
End Sub


à placer dans le module privé du Formulaire
(nommé "UFInfo"), code du


bouton
de commande "OK" :,
en supposant que la commande qui permet d'afficher le
formulaire se trouve


dans le module "Special"

Private Sub CmBOK_Click()
Dim i As Long
If Me.ChkSupp Then
With ActiveWorkbook.VBProject.VBComponents
("Special").CodeModule


For i = .CountOfLines To 1 Step -1
If InStr(1, .Lines(i, i), "UFInfo.Show") > 0 Then
.DeleteLines i
End If
Next
End With
End If
Me.Hide
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Golf" a écrit dans le message de
news:
Bonsoir,

Je désire créer un message informatif dans un
userform, à l'ouverture du



fichier.
Je souhaite mettre dessus le message suivant : "Ne
plus afficher ce



message"
avec une case à cocher. Je souhaite que si
l'utilisateur coche la case à



cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf









.





Avatar
Joel
c'est tout ce que j'ai pu trouver !!!! il va sans dire LOL

;-)

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joel" a écrit dans le message de
news:ccb7ed$qt5$
Bonjour Golf !

Merci pour les remarques sympas....

J'ai donc fait un effort supplémentaire ...

dans le module "Special"

Option Explicit
Public UsForm As Object 'AfficherFormulaire
Sub Auto_Open()
AfficherFormulaire
End Sub
Sub AfficherFormulaire()
UFInfo.Show 'AfficherFormulaire
If UFInfo.ChkSupp Then 'AfficherFormulaire
Set UsForm = ActiveWorkbook.VBProject.VBComponents("UFInfo")
'AfficherFormulaire
ActiveWorkbook.VBProject.VBComponents.Remove UsForm
'AfficherFormulaire

End If 'AfficherFormulaire
End Sub 'AfficherFormulaire

et dans le module privé du formulaire :

Option Explicit

Private Sub CmBOK_Click()
Dim i As Long
If Me.ChkSupp Then
With ActiveWorkbook.VBProject.VBComponents("Special").CodeModule
For i = .CountOfLines To 1 Step -1
If InStr(1, .Lines(i, i), "AfficherFormulaire") > 0 Then
.DeleteLines i
End If
Next
End With
End If
Me.Hide
End Sub


c'est tout ce que j'ai pu trouvé !!!!

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Golf" a écrit dans le message de
news:2650401c46268$7e9b8a20$
Bonjour

Merci pour cette proc très sympa.
En fait je souhaite détruire le userfom, et non le cacher.
Merci quand même.
P.S. Ton site est lui aussi très sympa.
Golf


-----Message d'origine-----
J'avais oublié de préciser que la case à cocher a été
nommée : "ChkSupp"


mais tout le monde l'avais compris

;-)
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Joel" a écrit dans le message de
news:cc9m0s$f8r$
Bonsoir,

voici quelquechose qui devrait répondre, de façon
détournée à la demande :


Hypothèse :
Code du module "Special" :

Sub Auto_Open()
AfficherFormulaire
End Sub

Sub AfficherFormulaire()
UFInfo.Show
End Sub


à placer dans le module privé du Formulaire
(nommé "UFInfo"), code du


bouton
de commande "OK" :,
en supposant que la commande qui permet d'afficher le
formulaire se trouve


dans le module "Special"

Private Sub CmBOK_Click()
Dim i As Long
If Me.ChkSupp Then
With ActiveWorkbook.VBProject.VBComponents
("Special").CodeModule


For i = .CountOfLines To 1 Step -1
If InStr(1, .Lines(i, i), "UFInfo.Show") > 0 Then
.DeleteLines i
End If
Next
End With
End If
Me.Hide
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Golf" a écrit dans le message de
news:
Bonsoir,

Je désire créer un message informatif dans un
userform, à l'ouverture du



fichier.
Je souhaite mettre dessus le message suivant : "Ne
plus afficher ce



message"
avec une case à cocher. Je souhaite que si
l'utilisateur coche la case à



cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf









.









Avatar
michdenis
Bonjour Golf,

Tu peux utiliser une des 2 syntaxes :


'---------------------------------
Sub DétruireUserform()

ThisWorkbook.VBProject.VBComponents.Remove _
ThisWorkbook.VBProject.VBComponents("Userform1")
End Sub
'---------------------------------


OU si tu préfères cette syntaxe :


'---------------------------------
Sub DétruireUserform()

With ThisWorkbook.VBProject.VBComponents
.Remove .Item("Userform1")
End With

End Sub
'---------------------------------


Salutations!



"Golf" a écrit dans le message de news:
Bonsoir,

Je désire créer un message informatif dans un userform, à l'ouverture du
fichier.
Je souhaite mettre dessus le message suivant : "Ne plus afficher ce message"
avec une case à cocher. Je souhaite que si l'utilisateur coche la case à
cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf
Avatar
Joel
Bonjour Denis

... sans oublier de détruire les lignes de commandes relatives à l'affichage
du formulaire, lors de l'ouverture du classeur ...

je suis certain que tu as une solution plus propre que la mienne pour ce
faire (je n'avais pas trouvé mieux !)

en toute amitié

;-)

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"michdenis" a écrit dans le message de
news:
Bonjour Golf,

Tu peux utiliser une des 2 syntaxes :


'---------------------------------
Sub DétruireUserform()

ThisWorkbook.VBProject.VBComponents.Remove _
ThisWorkbook.VBProject.VBComponents("Userform1")
End Sub
'---------------------------------


OU si tu préfères cette syntaxe :


'---------------------------------
Sub DétruireUserform()

With ThisWorkbook.VBProject.VBComponents
.Remove .Item("Userform1")
End With

End Sub
'---------------------------------


Salutations!



"Golf" a écrit dans le message de
news:

Bonsoir,

Je désire créer un message informatif dans un userform, à l'ouverture du
fichier.
Je souhaite mettre dessus le message suivant : "Ne plus afficher ce
message"

avec une case à cocher. Je souhaite que si l'utilisateur coche la case à
cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf






Avatar
michdenis
Bonjour Joel,

J'ai lui la demande de Golf,

Je n'ai rien vu de ceci dans son message.
"sans oublier de détruire les lignes de commandes relatives à l'affichage du formulaire"


Il pourrait cependant utiliser ceci pour lancer son formulaire, et si le formulaire n'existe plus (Après sa
destruction), il n'aura aucun message d'erreur et le formulaire n'apparaîtra pas et aucune ligne de code à supprimer.

Dim S As UserForm

On Error Resume Next
Set S = UserForm1
If Err = 0 Then
UserForm1.Show
Else
On Error GoTo 0
End If
Set S = Nothing



Et s'il désire détruire la procédure complète Workbook_Open de son projet, il pourrait utiliser ceci :

En lançant cette ligne de code de la procédure de son choix :

SupprimerProcédure "Sub Workbook_Open", "ThisWorkBook"

à mettre dans un module standard
'----------------------------------
Sub SupprimerProcédure(SonNom As String, SonModule As String)

Dim Début As Integer, Fin As Integer
Dim A As Integer, B As Integer, Nb As Integer
Dim Comp As Object

With ThisWorkbook.VBProject.VBComponents _
(SonModule).CodeModule
Nb = .CountOfLines
For A = 1 To Nb
If InStr(1, .Lines(A, 1), SonNom, _
vbTextCompare) <> 0 Then
Début = A
For B = A + 1 To Nb
If InStr(1, .Lines(B, 1), "End Sub", _
vbTextCompare) <> 0 Then
Fin = B - Début + 1
Exit For
End If
Next
If Fin <> 0 Then
.DeleteLines Début, Fin
Exit Sub
End If
End If
Next
End With
End Sub

'----------------------------------


Salutations!




"Joel" a écrit dans le message de news:ccbffp$9fp$
Bonjour Denis

... sans oublier de détruire les lignes de commandes relatives à l'affichage
du formulaire, lors de l'ouverture du classeur ...

je suis certain que tu as une solution plus propre que la mienne pour ce
faire (je n'avais pas trouvé mieux !)

en toute amitié

;-)

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"michdenis" a écrit dans le message de
news:
Bonjour Golf,

Tu peux utiliser une des 2 syntaxes :


'---------------------------------
Sub DétruireUserform()

ThisWorkbook.VBProject.VBComponents.Remove _
ThisWorkbook.VBProject.VBComponents("Userform1")
End Sub
'---------------------------------


OU si tu préfères cette syntaxe :


'---------------------------------
Sub DétruireUserform()

With ThisWorkbook.VBProject.VBComponents
.Remove .Item("Userform1")
End With

End Sub
'---------------------------------


Salutations!



"Golf" a écrit dans le message de
news:

Bonsoir,

Je désire créer un message informatif dans un userform, à l'ouverture du
fichier.
Je souhaite mettre dessus le message suivant : "Ne plus afficher ce
message"

avec une case à cocher. Je souhaite que si l'utilisateur coche la case à
cocher, puis
clic sur le bouton OK, cela détruit le userform.

Merci et bonne soirée.

Golf






1 2