[Excel 2007] encore un bug ?

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 28 mars 2012 à 20:24
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 29 mars 2012 à 14:05
Bonjour,

je suis en train de travailler à la suite d'une discussion récente relative à l'affichage d'un bouton de commande.

Je "tombe" dans la foulée sur un autre point étonnant de VBA/Excel 2007 :
Il s'agit de l'évènement Workbook_WindowResize
Voici ce que l'aide en ligne dit de son utilisation :
Cet exemple s'exécute dès que la fenêtre d'un classeur est redimensionnée.

Visual Basic pour Applications
Private Sub Workbook_WindowResize(ByVal Wn As Excel.Window)
Application.StatusBar = Wn.Caption & " resized"
End Sub

Or, voici le seul évènement en réalité proposé :
Private Sub Workbook_WindowResize(ByVal Wn As Window )

Mais ni l'un ni l'autre ne se décelenchent !
Pire (je viens d'essayer) :
On écrit du n'importe quoi, genre :
Private Sub Workbook_WindowResize(ByVal kiki As abracadabra)
MsgBox "ah"
End Sub

Aucun rejet ===>> aucun message ===>> tout est tranquillement accepté === >>
Mais bien entendu : rien ne se passe si l'on redimensionne la fenêtre !
Conclusion ? : l'évènement n'est tout simplement pas reconnu !
On se demande alors :
- pourquoi il figure comme évènement reconnu lorsque l'on consulte laide
- pourquoi ce "fait" est corroboré par l'existence de cet "évènement" (un fantôme, oui), dans la colonne de gauche de l'éditeur lorsque l'on choisit WorkBook dans la colonne de gauche (en ayant choisi l'objet ThisWorkBook depuis l'explorateur du projet !)
J'aimerais alors savoir :
1) si je suis le seul dans ce cas, avec Office 2007 ?
2) si les versions antérieures (1997, 2000 et 2003) connaissent le même comportement à l'abracadabrante ?
3) si la version 2010 est également dans ce cas


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

5 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
28 mars 2012 à 21:03
Bonjour,

En 2003, pareil, pas de MsgBox.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 mars 2012 à 21:17
Merci, NHernry.
Dont acte ! (ils se moquent du monde, là !)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
CTAC Messages postés 133 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juin 2012 5
29 mars 2012 à 10:12
Bonjour,

Cet évènement est parfaitement reconnu sur la fenêtre du classeur mais pas sur la fenêtre de l'application.

Excel.Window et Window, c'est la même chose, l'object Window appartient à la bibliothèque Excel comme on peut le voir dans l'explorateur d'objets.

Si on écrit :
Private Sub Workbook_WindowResize(ByVal kiki As abracadabra) 
MsgBox "ah" 
End Sub 


kiki désigne l'object à l'intérieur de la procédure. On l'appelle comme on veut.
MsgBox kiki.Caption


Par contre abracadabra ne passe pas, on obtient Type défini par l'utilisateur non défini, ce qui est normal.

Cordialement

ctac
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 mars 2012 à 10:56
Bonjour, CTAC
1) Merci
2) tu as raison (je viens de le vérifier)
Mais alors : problème ===>>
Si l'on redimensionne la fenêtre de l'application ===>> celle du classeur s'en trouve visuellement redimensionnée (ce qui n'est en réalité pas le cas, car je viens de constater qu'elle garde ses dimensions)
Faisons ce petit test avec un bouton de commande sur la feuille :
Private Sub CommandButton1_Click()
  Dim hauteur1 As Single, hauteur2 As Single
  msg = "au départ : " & vbCrLf & _
   "caption de la fenêtre du classeur ===>> " & ActiveWindow.Caption & vbCrLf & _
  " hauteur de la fenêtre du classeur ===>> " & ActiveWindow.Height & vbCrLf & _
  "hauteur de l'aire de travail ===>>  " & Application.UsableHeight
  ActiveWindow.Height = ActiveWindow.Height / 1.2
  msg = msg & vbCrLf & vbCrLf & "Après redimensionnement de la fenêtre de l'application" & vbCrLf & _
  "caption de la fenêtre du classeur ===>> " & ActiveWindow.Caption & vbCrLf & _
  " hauteur de la fenêtre du classeur ===>> " & ActiveWindow.Height & vbCrLf & _
  "hauteur de l'aire de travail ===>>  " & Application.UsableHeight
  MsgBox msg
End Sub

Et c'est alors assez gênant

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
29 mars 2012 à 14:05
Bonjour ucfoutu,

Comme NHenry, avec 2007 pas de MsgBox.

Quant au test avec le bouton sur la feuille :

Mettre la Sub en Public.
J'obtiens les messages d'erreurs suivants :

1) msg n'est pas défini... passons

2) 'Incompatibilité de type'
j'ai mis le premier 'msg =' en commentaire

3) Impossible de rédéfinir la propriété Height...
Mise en commentaire de cette ligne de code

3) également 'Incompatibilité de type' avec msg = msg &


Cheyenne
0
Rejoignez-nous