XL 2013 Ouvrir ou fermer un formulaire en cliquant sur une shape

  • Initiateur de la discussion Initiateur de la discussion ericm1960
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ericm1960

XLDnaute Nouveau
Bonjour,

Je parviens à ouvrir un formulaire en cliquant sur ma forme, mais je souhaite que, si le formulaire est déjà ouvert, un autre clic sur la forme ferme le formulaire. Quelqu'un peut-il m'aider ?
VB:
'Clic sur T0
Sub ShapeT0Click()
    Dim Tbl As ListObject
    Dim TabDept() As Variant
    Dim ShapeName As String
    Dim PIC As String
    Dim ShapeT0 As String
    Dim i As Integer
   
    'Chargement des tableaux en mémoire
    Set Tbl = Range("TableauT0").Parent.ListObjects("TableauT0")
    TabDept = Tbl.DataBodyRange.Value
   
    ShapeName = Application.Caller
    Sheets("Tableau T0").Range("I25") = ShapeName
    'Parcours du tableau des PIC
    For i = 1 To UBound(TabDept, 1)
        ShapeT0 = TabDept(i, 8)
        If ShapeT0 = ShapeName Then Exit For
    Next i
 
    If i <= UBound(TabDept) Then
                 Load USF_T0
                  USF_T0.Show
     
    Else
        MsgBox "Erreur: la Shape <" & ShapeName & "> ne correspond pas à une T0 !"
    End If
End Sub

En vous remerciant par avance
ERic
 
Bonjour @ericm1960,

Voir fichier joint ?

Code de l'Userform1 :
VB:
Private Sub UserForm_Initialize()
   Ouvert = True
End Sub

Private Sub UserForm_Terminate()
   Ouvert = False
End Sub

Code dans module1 :
VB:
Public Ouvert As Boolean

Sub USF()
   If Ouvert Then Unload UserForm1 Else UserForm1.Show vbModeless
End Sub
 

Pièces jointes

Bonjour ericm1960,
Remplacez le dernier test If/End If par :
VB:
    If i <= UBound(TabDept) Then
        For i = 0 To UserForms.Count - 1
            If UserForms(i).Name = "USF_T0" Then Unload USF_T0: Exit Sub
        Next
        USF_T0.Show 0 'non modal
    Else
        MsgBox "Erreur: la Shape <" & ShapeName & "> ne correspond pas à une T0 !"
    End If
A+
 
Bonjour @patricktoulon 🙂,

Bonjour
perso je vire tout ce qui est variable "ouvert" dans module et userform
et la macro de la shape tout simplement 😉
VB:
Sub USF()
   If UserForm1.Visible Then Unload UserForm1 Else UserForm1.Show 0
End Sub
A condition de ne jamais cacher Userform1 (par un .hide) dans les traitements 😀. Taquin que je suis😛
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
1 K
Retour