Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1150 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [EXCEL - VBA] - Empêcher le redimensionnement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[EXCEL - VBA] - Empêcher le redimensionnement

n°1217872
twosteps
Posté le 07-10-2005 à 16:57:08  profilanswer
 

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é

mood
Publicité
Posté le 07-10-2005 à 16:57:08  profilanswer
 

n°1218453
Fred_l
Posté le 08-10-2005 à 19:48:30  profilanswer
 


 
 
'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

n°1220055
twosteps
Posté le 10-10-2005 à 23:03:48  profilanswer
 

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é
 

n°1221493
PGreg
Posté le 12-10-2005 à 18:45:29  profilanswer
 

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.
 

n°1221635
twosteps
Posté le 12-10-2005 à 23:16:02  profilanswer
 

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é

n°1221713
PGreg
Posté le 13-10-2005 à 00:32:30  profilanswer
 

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.

n°1221737
PGreg
Posté le 13-10-2005 à 02:04:28  profilanswer
 

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

n°1221749
twosteps
Posté le 13-10-2005 à 03:40:26  profilanswer
 

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?

n°1222428
PGreg
Posté le 13-10-2005 à 19:28:46  profilanswer
 

( 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é.
 

n°1222605
twosteps
Posté le 13-10-2005 à 23:38:36  profilanswer
 

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é


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [EXCEL - VBA] - Empêcher le redimensionnement

 

Sujets relatifs
[VBS] et fichier excelLancer une macro PPT à partir d'Excel
Aux specialistes des macros excel: tabulation automatique[EXCEL] Format de cellule de type n° hiérarchique
VBA : ouverture d'un fichier txt dont le nom change-POST RESOLUJE peux plus coier-coller dans excel
passer un fichier excel en fichier ascii[Excel] Conditionner une source de données dans un graphique
[Excel VBA] Ne pas afficher les lignes masquées d'un plan 
Plus de sujets relatifs à : [EXCEL - VBA] - Empêcher le redimensionnement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR