[EXCEL - VBA] - Empêcher le redimensionnement

- Empêcher le redimensionnement [EXCEL - VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 07-10-2005 à 16:57:08    

Bonjour à tous.
 
Je cherche en vain comment empêcher le redimmensionnement d'une application excel.  
Attention, je ne parle pas d'une fenêtre (Application.windows(1).EnableResize = false) mais bien de l'application en elle-même.
 
Pour la petite histoire, j'aurais besoin qu'excel s'ouvre et que je puisse voir seulement les celulles L4:L33 sans qu'on puisse changer cette vue. J'ai déjà supprimer les scrollbars, les sheets tabs mais il faudrait qu'on ne puisse pas redimensionner ni cette fenêtre, ni excel à proprement parler...
 
Ou sinon, y a-t-il une autre façon de faire?
 
Merci d'avance pour vos réponses...
 
Hervé

Reply

Marsh Posté le 07-10-2005 à 16:57:08   

Reply

Marsh Posté le 08-10-2005 à 19:48:30    


 
 
'Déjà pour ce qui est de Masquer les cellules :
 
' Selection de toutes les cellules
ActiveWindow.LargeScroll ToRight:=-1
Cells.Select
' On masque tout
Selection.EntireColumn.Hidden = True
     
'On selectionne les cellule qu'on veut voir
Range("L4:L33" ).Select
'On enlève le masquage
Selection.EntireColumn.Hidden = False
 
' Puis on masque toutes les lignes non voulues
Rows("1:3" ).Select
Selection.EntireRow.Hidden = True
Rows("34:65536" ).Select
Selection.EntireRow.Hidden = True
 
'Puis je me positionne sur la première cellule
Range("L4" ).Select
 
' Protection de la fenêtre
ActiveWorkbook.Protect Structure:=True, Windows:=True
' Protection du menu
Application.CommandBars("Worksheet Menu Bar" ).Controls(5).Enabled = False
Application.CommandBars("Worksheet Menu Bar" ).Enabled = True
 
Attention avec la propriété delete....  
 
Fred

Reply

Marsh Posté le 10-10-2005 à 23:03:48    

Salut Fred.
 
Tout d'abord, merci de m'avoir répondu.
 
C'est un très bon début, je te remercie!!!  :)  
 
Est-il encore possible de "vérouiller" la possibilité d'utiliser la molette de la souris afin d'empêcher le défilement vertical?
 
Et est-il possible d'également "vérouiller" le redimmensionnement de l'application Excel? Je l'affiche en popup avec une taille déterminée et j'aimerais que l'utilisateur ne puisse que consulter ou fermer cette fenêtre...
 
Hervé
 

Reply

Marsh Posté le 12-10-2005 à 18:45:29    

Si tu veux tous protéger (si j' ai bien compris):
 
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
 
ou  
 
Protect(Workbook)
 
    ActiveSheet.EnableSelection = xlNoSelection
 
'Si tu veux emêcher la selection
 
    ActiveWorkbook.Protect Structure:=True, Windows:=True
 
Protection des fênetre et des structure.
 

Reply

Marsh Posté le 12-10-2005 à 23:16:02    

Hello.
 
Non, c'est pas ça...  :sweat:  j'aimerais que l'on puisse pas redimmensionner l'application, la fenêtre (ni en largeur, ni en hauteur).
 
Comme {ActiveWindow.EnableResize = False} pour une fenêtre, j'aimerais le faire sur Excel directement.
 
--> bref, j'aimerais que Excel m'affiche des données (L4:L33) en popup et que l'utilisateur ne puisse pas modifier la taille de la fenêtre affichée, en l'occurence, l'application Excel.
 
Merci de votre aide!  :love:  
 
Hervé

Reply

Marsh Posté le 13-10-2005 à 00:32:30    

Jette un coup d' eil sur le forum des développeur francophone, peut -être que sa pourrat t' aider, j' y est aperçu une question sur la redimension.

Reply

Marsh Posté le 13-10-2005 à 02:04:28    

Salut,  
Je pense avoir trouver ce que tu cherche :  
 
 Private Sub workbook_open()       'A l' ouverture du fichier
'ThisWorkbook
 
Dim cpt As Integer
cpt = 1
Do
DoEvents
    Application.WindowState = xlNormal  
 
'Tout au long de la boucle, la fenêtre est maintenu en mode normal, même si un éventuel utilisateur réduit ou agrandi la fenêtre.
 
Loop Until cpt = 0
 
'Boucle en DoEvents, pour qu' un éventuel utilisateur puisse utiliser les autre fonction d' excel
 
End Sub

Reply

Marsh Posté le 13-10-2005 à 03:40:26    

Y a une bonne idée la derrière...  :)  
 
J'ai rajouté application.height = 400 et application.width = 200 (les valeurs sont des exemples...) dans la boucle. Comme ça, si un utilisateur redimmensionne la fenêtre, elle reprend la taille que je lui ai fixé auparavant!
 
C'est pas très pro mais c'est déjà un début. Merci!  PGreg :)  
 
Sinon, y a-t-il un moyen plus pro qui consisterait à "griser" la possibilité de redimmensionner?

Reply

Marsh Posté le 13-10-2005 à 19:28:46    

( Attention, je ne fais que supposer )
 
J' ai trouver une déclaration qui pourrait peut -être t' aidé (si tu ne l' a connait pas déjà):  
 
Private Sub Workbook_WindowResize(ByVal Wn As Window)
 
Ce que tu pourrait faire, c' est tester toute les "fonctions" (ex : open) associé à la "Déclaration" workbook et (par exemple), mettre un msgbox qui les identifie dans chacune d' elle.  
Ainsi, un redimensionnant ta fenêtre, tu pourrait retrouver la déclaration approprié.
 

Reply

Marsh Posté le 13-10-2005 à 23:38:36    

Voilà!!!
 
Après plusieurs heures de recherche sur le net, j'ai trouvé ceci:
 
Public Sub DisableSystemMenu()
Dim lHandle As Long, lCount As Long
     
  On Error Resume Next
  lHandle = FindWindowA(vbNullString, Application.Caption)
  If lHandle <> 0 Then
 
      'désactive la croix de fermeture d'Excel
      'et la commande Fermeture du menu système
      DeleteMenu GetSystemMenu(lHandle, False), 6, &H400
      'supprime le trait de séparation du menu système avant Fermeture
      DeleteMenu GetSystemMenu(lHandle, False), 5, &H400
      'supprime la commande Agrandissement du menu système
      'et la commande Agrandir de la fenêtre
      DeleteMenu GetSystemMenu(lHandle, False), 4, &H400
      'supprime la commande Réduction du menu système
      'et désactive la commande Réduire de la fenêtre
      DeleteMenu GetSystemMenu(lHandle, False), 3, &H400
      'désactive la commande Déplacement du menu système
      DeleteMenu GetSystemMenu(lHandle, False), 2, &H400
      'supprime la commande Déplacement du menu système
      'et désactive la commande Dimension
      DeleteMenu GetSystemMenu(lHandle, False), 1, &H400
      'supprime la commande Restauration du menu système
      'et désactive la commande Restaurer de la fenêtre
      DeleteMenu GetSystemMenu(lHandle, False), 0, &H400
         
  End If
End Sub
 
(en orange la commande qui empêche le redimmensionnement de l'application!  -->  :)  :)  :)  )
 
 
Et pour remettre le tout en ordre:
 
 
'rétablit le menu sytème et les commandes de fenêtre (Réduire, Agrandir, Fermer)
Public Sub EnableSystemMenu()
    Dim lHandle As Long
    On Error Resume Next
    lHandle = FindWindowA(vbNullString, Application.Caption)
    GetSystemMenu lHandle, True
End Sub
 
 
Merci à tous pour votre aide!
 
Hervé

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed