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

Interdire bouton annulation dans une input box.

4 réponses
Avatar
f_bacquet
bonjour à tous et toutes.. voila mon problème:
j'ais fait la macro suivante, qui permet d'incorporer un commentaire a
une cellule:

Sub commentaire()
'
' commentaire Macro
' Macro enregistrée le 03/09/2003 par xilam

'
'1 déclaration des variables
Dim a As Variant
'2 creation de la boite de dialogue
a = InputBox("Veuillez saisir votre commentaire svp", "SAISIE")

'3 déprotection de la feuille
ActiveCell.Select
ActiveSheet.Unprotect (code)

'4insertion du commentaire
ActiveCell.AddComment
With ActiveCell.Comment
.Visible = False
.Text Text:=a
.Shape.Height = 90
.Shape.Width = 250
End With
'5 reprotection de la feuille
ActiveSheet.Protect (code)

End Sub

Cette macro fonctionne tres bien à une chose pret... si je clique sur
annulation sur l'input box, ma protection est supprimée...
quelle est donc la solution.
Merci d'avance.
Fred Bacquet

4 réponses

Avatar
AV
Et les réponses à tes précédentes questions....??
Si on répond dans le vide, c'est pas très stimulant....

AV
Avatar
f_bacquet
et bien... desolé... mais je n'avais eu la confirmation que mon
premier message avait ete envoyé... c'est pourquoi j'en avais poste un
second...
Malgré tout et sans vouloir en rajouter une couche... cela ne me dit
pas comment interdire le bouton annulation sur ma boite de
dialogue..lol.
En fait, je suis allé faire un tour sur la page de Frédéric Sigonneau,
mais je n'ais pas trouvé mon bonheur.
Je me permet donc de rappeler mon problème:
en fait, je donne la possibilité de créer un commentaire dans une
fueille protégée... Pour ce faire, l'utilisateur du fichier doit
d'abord selectionner une cellule puis appuyer sur le bouton
commentaire. Malheureusement, s'il clique sur Annuler dans la boite de
dialogue, cela plante moncode (la macro retire la protection... mais
ne se termine pas. Donc elle ne reprotège pas la feuille...)
En fait, ma question est la suivante: comment supprimer le bouton
annulation de la boite de dialogue .. et si ça n'est pas possible..;
comment faire pour que malgré l'annulation, ma feuille se reprotège..
Merci à tous
F Bacquet
Avatar
Lydya
Bonjour Frédéric,

Après :
a = InputBox("Veuillez saisir votre commentaire svp", "SAISIE")
Ajouter :
If a = "" Then Exit Sub

Lydia

"Frédéric Bacquet" a écrit dans le message de
news:
et bien... desolé... mais je n'avais eu la confirmation que mon
premier message avait ete envoyé... c'est pourquoi j'en avais poste un
second...
Malgré tout et sans vouloir en rajouter une couche... cela ne me dit
pas comment interdire le bouton annulation sur ma boite de
dialogue..lol.
En fait, je suis allé faire un tour sur la page de Frédéric Sigonneau,
mais je n'ais pas trouvé mon bonheur.
Je me permet donc de rappeler mon problème:
en fait, je donne la possibilité de créer un commentaire dans une
fueille protégée... Pour ce faire, l'utilisateur du fichier doit
d'abord selectionner une cellule puis appuyer sur le bouton
commentaire. Malheureusement, s'il clique sur Annuler dans la boite de
dialogue, cela plante moncode (la macro retire la protection... mais
ne se termine pas. Donc elle ne reprotège pas la feuille...)
En fait, ma question est la suivante: comment supprimer le bouton
annulation de la boite de dialogue .. et si ça n'est pas possible..;
comment faire pour que malgré l'annulation, ma feuille se reprotège..
Merci à tous
F Bacquet


Avatar
Alain CROS
Bonjour.

Copie d'un post du 31/03/03

Alain CROS.

-------------------------------------------début de copie
Bonjour.

Si tu travaille sur PC, essaye comme ça.

Tu créer un bouton sur une feuille de calcul issue de la barre d'outils Formulaire.
Tu lui affecte la macro InputBoxToujoursOK.

Dans un module standard tu copie ce qui suis.

Option Explicit

Private Declare Function EnableWindow Lib "user32" _
(ByVal hwnd As Long, _
ByVal fEnable As Long) As Long

Private Declare Function FindWindowExA Lib "user32" _
(ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long

Private Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

Private Declare Function SetWindowsHookExA Lib "user32" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long

Private lgHook As Long

Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, _
ByVal bRevert As Long) As Long

Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long

Private Declare Function GetWindowTextLengthA Lib "user32" _
(ByVal hwnd As Long) As Long

Private Declare Function GetWindowTextA Lib "user32" _
(ByVal hwnd As Long, _
ByVal lpString As String, _
ByVal cch As Long) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long

Sub InputBoxToujoursOK()

Const WH_CBT As Long = &H5
Const GWL_HINSTANCE As Long = -6
Dim lgInst As Long

lgInst = GetWindowLongA(FindWindowExA(0, 0, "XLMAIN", _
Application.Caption), GWL_HINSTANCE)
#If VBA6 Then
lgHook = SetWindowsHookExA(WH_CBT, AddressOf InputBoxToujoursOKProc, _
lgInst, GetCurrentThreadId)
#Else
lgHook = SetWindowsHookExA(WH_CBT, AddrOf("InputBoxToujoursOKProc"), _
lgInst, GetCurrentThreadId)
#End If
MsgBox "Les Données saisies sont : " & InputBox("Saisissez vos données")

End Sub

Private Function InputBoxToujoursOKProc(ByVal lMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Long) As Long

Const HCBT_ACTIVATE = &O5
Const SC_CLOSE = &HF060
Const MF_BYCOMMAND = &H0

Dim BWND As Long, MYSTR As String

If lMsg = HCBT_ACTIVATE Then
' Empécher la fermeture par la croix
DeleteMenu GetSystemMenu(wParam, False), SC_CLOSE, MF_BYCOMMAND
Do
' Rechercher le handle des boutons
BWND = FindWindowExA(wParam, BWND, "BUTTON", vbNullString)
If BWND <> 0 Then
' Lire le texte du bouton
MYSTR = String(GetWindowTextLengthA(BWND) + 1, Chr$(0))
GetWindowTextA BWND, MYSTR, Len(MYSTR)
If MYSTR = "Annuler" & Chr$(0) Then
EnableWindow BWND, False
Exit Do
End If
End If
Loop Until BWND = 0
UnhookWindowsHookEx lgHook
End If
InputBoxToujoursOKProc = False

End Function

Si tu travaille avec XL97

Tu créer un autre module Standard que tu appelle AddrOf_Ken_Getz_Michael_Kaplan
Propriété (Name) du Module
Puis dedans tu copie ce qui suis.

Option Explicit
Private Declare Function GetCurrentVbaProject Lib "vba332.dll" _
Alias "EbGetExecutingProj" _
(hProject As Long) As Long
Private Declare Function GetFuncID Lib "vba332.dll" _
Alias "TipGetFunctionId" _
(ByVal hProject As Long, _
ByVal strFunctionName As String, _
ByRef strFunctionID As String) As Long
Private Declare Function GetAddr Lib "vba332.dll" _
Alias "TipGetLpfnOfFunctionId" _
(ByVal hProject As Long, _
ByVal strFunctionID As String, _
ByRef lpfnAddressOf As Long) As Long
#If VBA6 Then
#Else
Public Function AddrOf(CallbackFunctionName As String) _
As Long
'AddressOf operator replacement for Office97 VBA _
Authors: Ken Getz and Michael Kaplan

'declaration of local variables
Dim aResult As Long
Dim CurrentVBProject As Long
Dim strFunctionID As String
Dim AddressOfFunction As Long
Dim UnicodeFunctionName As String

'convert the name of the function to Unicode system
UnicodeFunctionName = StrConv(CallbackFunctionName, _
vbUnicode)
'if the current VBProjects exists...
If Not GetCurrentVbaProject(CurrentVBProject) = 0 Then
'get the function ID of the callback function, _
based on its unicode-converted name, _
in order to ensure that it exists
aResult = GetFuncID(hProject:=CurrentVBProject, _
strFunctionName:=UnicodeFunctionName, _
strFunctionID:=strFunctionID)
'if the function exists indeed ...
If aResult = 0 Then
'get a pointer to the callback function based on the _
strFunctionID argument of the GetFuncID function
aResult = GetAddr(hProject:=CurrentVBProject, _
strFunctionID:=strFunctionID, _
lpfnAddressOf:­dressOfFunction)
'if we've got the pointer pass it to the result _
of the function
If aResult = 0 Then
AddrOf = AddressOfFunction
End If
End If
End If

End Function
#End If

Voilà tu as une inputBox qui ne se ferme que par le bouton OK.

Alain CROS.
-----------------------------------------Fin de copie


"Frédéric Bacquet" a écrit dans le message de news:
et bien... desolé... mais je n'avais eu la confirmation que mon
premier message avait ete envoyé... c'est pourquoi j'en avais poste un
second...
Malgré tout et sans vouloir en rajouter une couche... cela ne me dit
pas comment interdire le bouton annulation sur ma boite de
dialogue..lol.
En fait, je suis allé faire un tour sur la page de Frédéric Sigonneau,
mais je n'ais pas trouvé mon bonheur.
Je me permet donc de rappeler mon problème:
en fait, je donne la possibilité de créer un commentaire dans une
fueille protégée... Pour ce faire, l'utilisateur du fichier doit
d'abord selectionner une cellule puis appuyer sur le bouton
commentaire. Malheureusement, s'il clique sur Annuler dans la boite de
dialogue, cela plante moncode (la macro retire la protection... mais
ne se termine pas. Donc elle ne reprotège pas la feuille...)
En fait, ma question est la suivante: comment supprimer le bouton
annulation de la boite de dialogue .. et si ça n'est pas possible..;
comment faire pour que malgré l'annulation, ma feuille se reprotège..
Merci à tous
F Bacquet