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

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

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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, @+
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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
 

TooFatBoy

XLDnaute Barbatruc
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...
 

job75

XLDnaute Barbatruc
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+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
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,
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…