Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 fermer TextBox en fermant Excel

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 !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle journée 🙂

J'ai un souci de code qui beug et je n'arrive pas à trouver comment le modifier :
En feuille "Appels", pour faire des affichages de contenus de cellules, j'ouvre un TextBox1
Si oubli, je voudrais le fermer automatiquement en quittant Excel et j'ai fait ce code :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If TextBox1.Visible = True Then
    With TextBox1
        .Visible = False
    End With

    Sheets("Appels").Unprotect Password:=""
    With Sheets("Appels").Range("m1").Interior
        .ThemeColor = xlThemeColorDark1
    End With
    Sheets("Appels").Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End If
   
    ActiveWorkbook.Save
    ActiveWorkbook.RunAutoMacros Which:=xlAutoClose
End Sub

la ligne qui bloque est : " If TextBox1.Visible = True Then"

Auriez-vous la solution ?
Si besoin, je ferais un petit fichier test.
Je vous remercie vivement,
Amicalement,
lionel,
 
Dernière édition:
Solution
re,

si la textbox est bien dans la feuille appels, cela devrait fonctionner comme cela.

Bien cordialement, @+
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Sheets("Appels")
        If .TextBox1.Visible = True Then
            .TextBox1.Visible = False
            .Unprotect Password:=""
            .Range("m1").Interior.ThemeColor = xlThemeColorDark1
            .Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
        End If
    End With
    ActiveWorkbook.Save
End Sub
Bonjour Usine à gaz, le forum

il faut préciser l'emplacement de ta textbox pour la rattacher au parent, là, tu es dans une événementielle du workbook, pas dans la feuille concernée.

Bien cordialement, @+
 
re,

si la textbox est bien dans la feuille appels, cela devrait fonctionner comme cela.

Bien cordialement, @+
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Sheets("Appels")
        If .TextBox1.Visible = True Then
            .TextBox1.Visible = False
            .Unprotect Password:=""
            .Range("m1").Interior.ThemeColor = xlThemeColorDark1
            .Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
        End If
    End With
    ActiveWorkbook.Save
End Sub
 
Bonjour Yeahou,

Merci pour ce code de bon matin 🙂
Grâce à toi, j'ai modifié comme suit :
VB:
With Sheets("Appels")
        If .TextBox1.Visible = True Then
        .TextBox1.Visible = False
        .Unprotect Password:=""
            With [m1].Interior
                .ThemeColor = xlThemeColorDark1
            End With
        .Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
        End If
    End With
Bonne journée,
lionel 🙂
 
Re_Yeahou,
Voilà une bonne remarque 🙂

Comme je te l'ai écrit, c'est grâce à ton code que j'ai pu modifier mais le code qui fonctionne est le code modifié.

Comment faire dans ce cas ?

Veux tu modifier ton code proposé et je le mettrait en solution ?,
lionel 🙂
 
re,

je l'ai déjà modifié car j'ai vu l'erreur de suite pour le rattachement de Themecolor, tu n'as pas rafraichi ?
Il ne fonctionne pas comme cela ?

Bien cordialement, @+
 
Re,
J'ai ton code en solution 🙂
Mais le code qui fonctionne est :
VB:
With Sheets("Appels")
Sheets("Appels")
        If .TextBox1.Visible = True Then
        .TextBox1.Visible = False
        .Unprotect Password:=""
            With [m1].Interior
                .ThemeColor = xlThemeColorDark1
            End With
        .Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
        End If
    End
🙂
 
Bonjour,


1- À quoi sert le Sheets("Appels") tout seul ?

2- Le monsieur t'a dit de mettre un point devant [M1]. 😉

3- Pourquoi mettre un deuxième With ?

Et tant que j'y suis, j'ajouterais que ton indentation n'est pas totalement irréprochable... 😁
 
Bonjour Lionel, Yeahou, Marcel32,

Si l'on aime la simplicité :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Sheets("Appels")
        .Protect UserInterfaceOnly:=True
        .TextBox1.Visible = False
        .Range("m1").Interior.Color = xlColorDark1
    End With
    Save
End Sub
A+
 
Bonjour Gérard,

Merci d'avoir répondu à ce fil 🙂
Bizarrement "Usine à gaz" aime la simplicité lol
Et c'est nickel comme toujours.
Merci Gérard 🙂
lionel,
 
- 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
3
Affichages
665
Réponses
3
Affichages
896
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…