Nombre de fenetres Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
C
CAPUCIN
Membre dévoué
Membre dévoué
Messages : 873
Appréciation reçue : 1
Inscrit le : 5 décembre 2011
Version d'Excel : 2003 FR

Message par CAPUCIN » 13 avril 2016, 03:06

Bonsoir a tous, je voudrais écrire: "if 2ieme fenetre then..."
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'747
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 13 avril 2016, 03:35

Salut,

décidément, c'est le jour des énigmes!
Après LACHANCE et son "message", tu t'y mets aussi ? :lol:

Que veux-tu dire exactement par "fenêtre" ?

A+
C
CAPUCIN
Membre dévoué
Membre dévoué
Messages : 873
Appréciation reçue : 1
Inscrit le : 5 décembre 2011
Version d'Excel : 2003 FR

Message par CAPUCIN » 13 avril 2016, 03:55

Je viens de voir le 'test" :lol:
Pour ce qui est de moi, il m'arrive régulierement d'afficher une 2ieme feuille dans la partie droite de l'écran, dans mon application excel . J'utilise ActiveWindow.NewWindow et Windows(ThisWorkbook.Name & ":2").Activate, car excel lui attribut automatiquement le numéro "2". Si quelque part, je veux savoir s'il y a une 2ieme feuille a l'écran, quel serait la syntaxe?
   ActiveWindow.NewWindow
        [code=vb] Sheets("ASS2").Select 'associe la feuille "ASS2" a la nouvelle fenetre
         ActiveWorkbook.Windows.Arrange ArrangeStyle:=xlVertical
         Cells(3, 1).Select
         ActiveWindow.FreezePanes = True
         ActiveWindow.DisplayWorkbookTabs = False
         ActiveWindow.DisplayHeadings = False
         ActiveWindow.DisplayHorizontalScrollBar = True
         ActiveWindow.DisplayVerticalScrollBar = True
         ActiveWindow.zoom = 100
    With ActiveWindow 'fenetre ASS2
        .Top = -20
        .Left = 700
        .Width = 560
        .Height = 800
    End With
        Windows(ThisWorkbook.Name & ":1").Activate 'fenetre principale
        ActiveWindow.DisplayWorkbookTabs = False
    With ActiveWindow
        .Top = -20
        .Left = 0
        .Width = 700
        .Height = 800
    End With
        Windows(ThisWorkbook.Name & ":2").Activate
[/code]
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'747
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 13 avril 2016, 04:12

Re, Capucin,

ouhlala, que de choses qui dépassent mes compétences...

En cherchant un peu, j'ai trouvé un sujet, ici-même, de 2013, Bouton suiveur 3, dans lequel figure, en page 2, un petit article sur les événements Windows (difficilement) interceptables par VBA après installation de diverses DLL.

Vois en espérant que cela puisse t'aider! Je ne pourrai pas plus sur ce coup-là!

A+
C
CAPUCIN
Membre dévoué
Membre dévoué
Messages : 873
Appréciation reçue : 1
Inscrit le : 5 décembre 2011
Version d'Excel : 2003 FR

Message par CAPUCIN » 13 avril 2016, 04:26

Y a pas de probleme, merci quand meme!

Moi aussi, j'ai trouvé des choses pas mal compliqué. Il est facile de vérifié si une fenetre 2 est active ou pas mais de vérifier s'il y a 2 fenetre, ca l'air pas mal plus compliqué.
Je crois que je vais plutot me mettre une variable boolean "fenetre_2', que je mettrai a "vrai" lorsque j'ouvrirai une 2ieme fenetre. Je pourrai ainsi vérifier ailleur, si j'ai une 2ieme fenetre.
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'747
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 13 avril 2016, 05:16

Les moyens les plus simples sont souvent les meilleurs et les plus fiables!

Bon travail!
A+, le Canadien! :D
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 447
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 13 avril 2016, 07:36

Bonjour,

Ta question était en effet nébuleuse...
S'il ne s'agit que de savoir si tu as une 2e fenêtre d'ouverte, pas de problème : Windows.Count te donne le nombre de fenêtres.

Attention à une particularité : Windows est une propriété d'un côté de l'objet Application, de l'autre de l'objet Workbook.
Utilisé sans qualificateur, Windows correspond à Application.Windows. Si tu risques d'avoir plusieurs classeurs ouverts, tu as peut-être intérêt à qualifier ton expression par le nom du classeur ou ThisWorkbook.Windows (si classeur contenant macro) ou le cas échéant ActiveWorkbook.Windows...

S'il s'agit d'identifier la fenêtre, le problème est plus subtil : si pour toutes les collections, Count renvoie le nombre d'objet, la propriété Item (qui correspond au numéro d'ordre de l'objet dans la collection) n'est pas utilisable pour un test (sauf en l'invoquant dans une commande, Windows(2).Activate par exemple, sous gestion d'erreur et en testant immédiatement après s'il y a une erreur ou non, si pas d'erreur, la fenêtre 2 existe...). Mais il vaut sans doute mieux procéder autrement.

Si fenêtre dont tu veux suivre les périgrinations, le mieux est sans doute de l'affecter chaque fois que tu la crées à une variable objet. Tu l'as donc toujours facilement sous la main, et tu peux tester la variable (If MaFenêtre Is Nothing ou If Not MaFenêtre Is Nothing Then...)
J'ai lu aussi quelque part que tu pouvais nommer tes fenêtres... Ce qui est encore une autre possibilité.

Bye. Bonne journée.
C
CAPUCIN
Membre dévoué
Membre dévoué
Messages : 873
Appréciation reçue : 1
Inscrit le : 5 décembre 2011
Version d'Excel : 2003 FR

Message par CAPUCIN » 13 avril 2016, 15:23

Désoler pour ma question nébuleuse.
Je vais donc fonctionner avec une variable, par contre a certains endroit dans mon code ou j'ai jusqu'a 3 fenetres d'ouvertes, ThisWorkbook.Windows.count, me sera utile.
Encore une fois merci pour tes idées!

Capucin.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message