Dans mon application écrite (une application compta-financière) en VB 6
(sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec
"Application.Workbook" etc... Afin que l'utilisateur ne puisse pas
intervenir sur le tableau (uniquement que pour la consultation des données,
pas la modification), j'ai protégé la feuille en écriture, désactiver le
menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les
raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et
fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon
application ne se fera que par des menus ou événements de ladite
application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait
de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
le_troll
Bonjour, je n'ai pas la réponse, mais avec tout ce que t'as fait, n'aurais-tu pas été plus vite en présentant dans un objet Tab... de VB, le résultat que tu affiches dans Excel, ce qui aurait le mérite de ne pas rendre VB dépendant des versions d'excel ?
-- Merci, @+, bye, Joe troll75 AROBASE iFrance POINT com ------------------------------------------ Ce message est plein de virus "certifiés" Le_Troll, éleveur de Trolls depuis César, qui disait: Avec une hache, celui qui tient le manche a toujours raison ! ------------------------------------------
"Christian" a écrit dans le message de news: 411cddf6$0$291$
Bonjour,
Dans mon application écrite (une application compta-financière) en VB
6
(sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec "Application.Workbook" etc... Afin que l'utilisateur ne puisse pas intervenir sur le tableau (uniquement que pour la consultation des
données,
pas la modification), j'ai protégé la feuille en écriture, désactiver le menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon application ne se fera que par des menus ou événements de ladite application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Merci d'avance.
Bonjour, je n'ai pas la réponse, mais avec tout ce que t'as fait,
n'aurais-tu pas été plus vite en présentant dans un objet Tab... de VB, le
résultat que tu affiches dans Excel, ce qui aurait le mérite de ne pas
rendre VB dépendant des versions d'excel ?
--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------
"Christian" <chris.brooze@skynet.be> a écrit dans le message de news:
411cddf6$0$291$ba620e4c@news.skynet.be...
Bonjour,
Dans mon application écrite (une application compta-financière) en VB
6
(sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec
"Application.Workbook" etc... Afin que l'utilisateur ne puisse pas
intervenir sur le tableau (uniquement que pour la consultation des
données,
pas la modification), j'ai protégé la feuille en écriture, désactiver le
menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les
raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et
fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon
application ne se fera que par des menus ou événements de ladite
application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait
de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Bonjour, je n'ai pas la réponse, mais avec tout ce que t'as fait, n'aurais-tu pas été plus vite en présentant dans un objet Tab... de VB, le résultat que tu affiches dans Excel, ce qui aurait le mérite de ne pas rendre VB dépendant des versions d'excel ?
-- Merci, @+, bye, Joe troll75 AROBASE iFrance POINT com ------------------------------------------ Ce message est plein de virus "certifiés" Le_Troll, éleveur de Trolls depuis César, qui disait: Avec une hache, celui qui tient le manche a toujours raison ! ------------------------------------------
"Christian" a écrit dans le message de news: 411cddf6$0$291$
Bonjour,
Dans mon application écrite (une application compta-financière) en VB
6
(sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec "Application.Workbook" etc... Afin que l'utilisateur ne puisse pas intervenir sur le tableau (uniquement que pour la consultation des
données,
pas la modification), j'ai protégé la feuille en écriture, désactiver le menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon application ne se fera que par des menus ou événements de ladite application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Merci d'avance.
Hervé
Bonjour Christian, Comme l'a dit Le_Troll, je pense que tu ne devrais pas utiliser Excel car il peut être très frustrant pour tes utilisateurs (surtout pour ceux qui sont abitués à Excel) de se retrouver devant une feuille de calcul avec une impossibilité d'intervenir. Un FlexGrid sur une feuille de ton appli serait peut être un peu plus indiqué, enfin je pense. Pour les raccourcis claviers, regarde du coté de "Application.OnKey" Pour griser le menu, regarde ceci :
Private Declare Function GetWindowLong _ Lib "user32" _ Alias "GetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _ Lib "user32" _ Alias "SetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) 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 Sub GriserCroix() Dim Griser As Boolean Griser = False DeleteMenu GetSystemMenu( _ Application.hwnd, Griser), 6, 1024 End Sub
Private Sub GriserMin() Dim I As Long Dim Griser As Boolean Griser = False With Application I = DeleteMenu(GetSystemMenu( _ .hwnd, Griser), -4064, 0) I = GetWindowLong(.hwnd, -16) I = I Xor 131072 SetWindowLong .hwnd, -16, I End With End Sub
Private Sub GriserMax() Dim I As Long Dim Griser As Boolean Griser = True With Application I = DeleteMenu(GetSystemMenu( _ .hwnd, Griser), -4048, 0) I = GetWindowLong(.hwnd, -16) I = I Xor 65536 SetWindowLong .hwnd, -16, I End With End Sub
Hervé.
"Christian" a écrit dans le message news: 411cddf6$0$291$
Bonjour,
Dans mon application écrite (une application compta-financière) en VB
6
(sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec "Application.Workbook" etc... Afin que l'utilisateur ne puisse pas intervenir sur le tableau (uniquement que pour la consultation des
données,
pas la modification), j'ai protégé la feuille en écriture, désactiver le menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon application ne se fera que par des menus ou événements de ladite application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Merci d'avance.
Bonjour Christian,
Comme l'a dit Le_Troll, je pense que tu ne devrais pas utiliser Excel car il
peut être très frustrant pour tes utilisateurs (surtout pour ceux qui sont
abitués à Excel) de se retrouver devant une feuille de calcul avec une
impossibilité d'intervenir. Un FlexGrid sur une feuille de ton appli serait
peut être un peu plus indiqué, enfin je pense.
Pour les raccourcis claviers, regarde du coté de "Application.OnKey"
Pour griser le menu, regarde ceci :
Private Declare Function GetWindowLong _
Lib "user32" _
Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _
Lib "user32" _
Alias "SetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) 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 Sub GriserCroix()
Dim Griser As Boolean
Griser = False
DeleteMenu GetSystemMenu( _
Application.hwnd, Griser), 6, 1024
End Sub
Private Sub GriserMin()
Dim I As Long
Dim Griser As Boolean
Griser = False
With Application
I = DeleteMenu(GetSystemMenu( _
.hwnd, Griser), -4064, 0)
I = GetWindowLong(.hwnd, -16)
I = I Xor 131072
SetWindowLong .hwnd, -16, I
End With
End Sub
Private Sub GriserMax()
Dim I As Long
Dim Griser As Boolean
Griser = True
With Application
I = DeleteMenu(GetSystemMenu( _
.hwnd, Griser), -4048, 0)
I = GetWindowLong(.hwnd, -16)
I = I Xor 65536
SetWindowLong .hwnd, -16, I
End With
End Sub
Hervé.
"Christian" <chris.brooze@skynet.be> a écrit dans le message news:
411cddf6$0$291$ba620e4c@news.skynet.be...
Bonjour,
Dans mon application écrite (une application compta-financière) en VB
6
(sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec
"Application.Workbook" etc... Afin que l'utilisateur ne puisse pas
intervenir sur le tableau (uniquement que pour la consultation des
données,
pas la modification), j'ai protégé la feuille en écriture, désactiver le
menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les
raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et
fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon
application ne se fera que par des menus ou événements de ladite
application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait
de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Bonjour Christian, Comme l'a dit Le_Troll, je pense que tu ne devrais pas utiliser Excel car il peut être très frustrant pour tes utilisateurs (surtout pour ceux qui sont abitués à Excel) de se retrouver devant une feuille de calcul avec une impossibilité d'intervenir. Un FlexGrid sur une feuille de ton appli serait peut être un peu plus indiqué, enfin je pense. Pour les raccourcis claviers, regarde du coté de "Application.OnKey" Pour griser le menu, regarde ceci :
Private Declare Function GetWindowLong _ Lib "user32" _ Alias "GetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _ Lib "user32" _ Alias "SetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) 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 Sub GriserCroix() Dim Griser As Boolean Griser = False DeleteMenu GetSystemMenu( _ Application.hwnd, Griser), 6, 1024 End Sub
Private Sub GriserMin() Dim I As Long Dim Griser As Boolean Griser = False With Application I = DeleteMenu(GetSystemMenu( _ .hwnd, Griser), -4064, 0) I = GetWindowLong(.hwnd, -16) I = I Xor 131072 SetWindowLong .hwnd, -16, I End With End Sub
Private Sub GriserMax() Dim I As Long Dim Griser As Boolean Griser = True With Application I = DeleteMenu(GetSystemMenu( _ .hwnd, Griser), -4048, 0) I = GetWindowLong(.hwnd, -16) I = I Xor 65536 SetWindowLong .hwnd, -16, I End With End Sub
Hervé.
"Christian" a écrit dans le message news: 411cddf6$0$291$
Bonjour,
Dans mon application écrite (une application compta-financière) en VB
6
(sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec "Application.Workbook" etc... Afin que l'utilisateur ne puisse pas intervenir sur le tableau (uniquement que pour la consultation des
données,
pas la modification), j'ai protégé la feuille en écriture, désactiver le menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon application ne se fera que par des menus ou événements de ladite application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Merci d'avance.
Alain CROS
Bonjour.
Dans le module ThisWorkbook du classeur XL
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName$, ByVal lpWindowName$) Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" _ (ByVal Hwnd&, ByVal nIndex&, ByVal dwNewLong&) Private Declare Function GetWindowLong& Lib "user32" Alias "GetWindowLongA" _ (ByVal Hwnd&, ByVal nIndex&) Private Declare Function FlashWindow& Lib "user32" _ (ByVal Hwnd&, ByVal bInvert&) Private Const WS_SYSMENU& = &H80000, GWL_STYLE& = -16&
Private Sub Workbook_Open() SupMenuSystem BloqueHotKey End Sub
Private Sub SupMenuSystem() Dim Hwnd& Hwnd = FindWindow("XLMAIN", Application.Caption) SetWindowLong Hwnd, GWL_STYLE, GetWindowLong(Hwnd, GWL_STYLE) Xor WS_SYSMENU FlashWindow Hwnd, False End Sub
Private Sub BloqueHotKey() Dim K, J, I& Dim Learray(1& To 16&) As String For I = 1& To 16& Learray(I) = "{F" & I & "}" Next I On Error Resume Next For Each K In Array("^", "%", "+^", "+%", "^%", "+^%") For I = 32& To 255& Application.OnKey K & Chr$(I), "" Next I For Each J In Learray Application.OnKey K & J, "" Next J Next K For Each J In Learray Application.OnKey J, "" Next J On Error GoTo 0 End Sub
Alain CROS
"Christian" a écrit dans le message de news: 411cddf6$0$291$
Bonjour,
Dans mon application écrite (une application compta-financière) en VB 6 (sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec "Application.Workbook" etc... Afin que l'utilisateur ne puisse pas intervenir sur le tableau (uniquement que pour la consultation des données, pas la modification), j'ai protégé la feuille en écriture, désactiver le menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon application ne se fera que par des menus ou événements de ladite application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Merci d'avance.
Bonjour.
Dans le module ThisWorkbook du classeur XL
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" _
(ByVal Hwnd&, ByVal nIndex&, ByVal dwNewLong&)
Private Declare Function GetWindowLong& Lib "user32" Alias "GetWindowLongA" _
(ByVal Hwnd&, ByVal nIndex&)
Private Declare Function FlashWindow& Lib "user32" _
(ByVal Hwnd&, ByVal bInvert&)
Private Const WS_SYSMENU& = &H80000, GWL_STYLE& = -16&
Private Sub Workbook_Open()
SupMenuSystem
BloqueHotKey
End Sub
Private Sub SupMenuSystem()
Dim Hwnd&
Hwnd = FindWindow("XLMAIN", Application.Caption)
SetWindowLong Hwnd, GWL_STYLE, GetWindowLong(Hwnd, GWL_STYLE) Xor WS_SYSMENU
FlashWindow Hwnd, False
End Sub
Private Sub BloqueHotKey()
Dim K, J, I&
Dim Learray(1& To 16&) As String
For I = 1& To 16&
Learray(I) = "{F" & I & "}"
Next I
On Error Resume Next
For Each K In Array("^", "%", "+^", "+%", "^%", "+^%")
For I = 32& To 255&
Application.OnKey K & Chr$(I), ""
Next I
For Each J In Learray
Application.OnKey K & J, ""
Next J
Next K
For Each J In Learray
Application.OnKey J, ""
Next J
On Error GoTo 0
End Sub
Alain CROS
"Christian" <chris.brooze@skynet.be> a écrit dans le message de news: 411cddf6$0$291$ba620e4c@news.skynet.be...
Bonjour,
Dans mon application écrite (une application compta-financière) en VB 6
(sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec
"Application.Workbook" etc... Afin que l'utilisateur ne puisse pas
intervenir sur le tableau (uniquement que pour la consultation des données,
pas la modification), j'ai protégé la feuille en écriture, désactiver le
menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les
raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et
fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon
application ne se fera que par des menus ou événements de ladite
application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait
de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName$, ByVal lpWindowName$) Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" _ (ByVal Hwnd&, ByVal nIndex&, ByVal dwNewLong&) Private Declare Function GetWindowLong& Lib "user32" Alias "GetWindowLongA" _ (ByVal Hwnd&, ByVal nIndex&) Private Declare Function FlashWindow& Lib "user32" _ (ByVal Hwnd&, ByVal bInvert&) Private Const WS_SYSMENU& = &H80000, GWL_STYLE& = -16&
Private Sub Workbook_Open() SupMenuSystem BloqueHotKey End Sub
Private Sub SupMenuSystem() Dim Hwnd& Hwnd = FindWindow("XLMAIN", Application.Caption) SetWindowLong Hwnd, GWL_STYLE, GetWindowLong(Hwnd, GWL_STYLE) Xor WS_SYSMENU FlashWindow Hwnd, False End Sub
Private Sub BloqueHotKey() Dim K, J, I& Dim Learray(1& To 16&) As String For I = 1& To 16& Learray(I) = "{F" & I & "}" Next I On Error Resume Next For Each K In Array("^", "%", "+^", "+%", "^%", "+^%") For I = 32& To 255& Application.OnKey K & Chr$(I), "" Next I For Each J In Learray Application.OnKey K & J, "" Next J Next K For Each J In Learray Application.OnKey J, "" Next J On Error GoTo 0 End Sub
Alain CROS
"Christian" a écrit dans le message de news: 411cddf6$0$291$
Bonjour,
Dans mon application écrite (une application compta-financière) en VB 6 (sp5), j'envoie pas mal de données vers un tableur Excel qui s'ouvre avec "Application.Workbook" etc... Afin que l'utilisateur ne puisse pas intervenir sur le tableau (uniquement que pour la consultation des données, pas la modification), j'ai protégé la feuille en écriture, désactiver le menu ainsi que les barres d'outils etc... Je n'ai aucun soucis.
Seule chose que je souhaiterais désactiver également, ce sont les raccourcis claviers d'Excel ainsi que (et surtout) les boutons agrandir et fermer d'Excel. La fermeture des classeurs Excel ouverts avec mon application ne se fera que par des menus ou événements de ladite application.
Cependant, je n'ai pas trouvé la solution à cela et cela m'arrangerait de bien pouvoir programmer ça.
Quelqu'un a-t-il une idée là-dessus et me donner des conseils etc... ?