Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] Problème Application.Visible XL2010 vs 2013

    7 septembre 2017 à 16:03:48

    Bonjour,

    Je suis un petit nouveau sur ce forum, mais je vous ai beaucoup lu et vous remercie pour votre expertise !

    J'ai développé une application VBA pour l'un de mes clients qui permet d'importer un fichier CSV, analyser son contenu, et procéder à un transfert de données vers un système industriel spécifique via l'implémentation OPC (je ne détaille pas car ce n'est pas mon problème).

    L'appli se base sur un formulaire et une barre de progression lors du lancement du transfert des données, qui prend plusieurs minutes.

    J'ai travaillé dans une VM permettant de simuler le serveur OPC pour les transactions de données. J'étais sous Windows 7 Pro (64) et Excel 2010 (32).

    L'outil sera utilisé dans un environnement industriel particulier et par des utilisateurs supposés novices sur Excel. Question de sûreté les macros s'activent automatiquement lorsque le classeur est en read-only, ce qui affiche le formulaire, et au passage j'ai masqué Excel pour conserver uniquement le formulaire visible :

    Private Sub Workbook_Open()
        
        If ThisWorkbook.ReadOnly = True Then
            If MsgBox("Les classeurs Excel ouverts seront fermés automatiquement sans être sauvegardés." & Chr(10) _
            & "Continuer?", vbYesNo, "Continuer ?") = vbNo Then
                ThisWorkbook.Close
            Else
                Application.WindowState = xlMinimized
                Application.Visible = False
                Formulaire.Show 0
            End If
        End If
        
    End Sub



    De plus j'ai utilisé des fonctions de l'API pour conserver le Userform dans la barre des tâches. Une fois les fonctions déclarées en référence :

    Private Sub UserForm_Activate()
        ' Conserver formulaire dans la barre des tâches
        Dim hWnd As Long
    
        hWnd = FindWindow(vbNullString, Me.Caption)
        EnableWindow FindWindow(vbNullString, Application.Caption), True
        ShowWindow hWnd, 0
        SetWindowLong hWnd, -20, GetWindowLong(hWnd, -20) Or &H40000
        Me.Repaint
        ShowWindow hWnd, 5
     
    End Sub



    Tout ça marche très bien dans l'environnement W7/XL2010.


    Pour achever mes essais j'ai monté une plateforme incluant quasi le même HW que sur site, en remontant un ghost récent du serveur, et en mettant en place l'environnement industriel réel.
    Cette fois je suis sous Windows Server 2008 R2 (64) et Excel 2013 (32).

    Je n'ai pas eu de souci particulier, ayant un peu anticipé notamment les soucis de séparateur CSV, mais voilà :


    La différence de fonctionnement se situe au niveau de l'écriture de la propriété Application.Visible = False.
    Je renseigne les données du formulaire et lorsque je clique sur le bouton qui exécute toutes les macros de brassage des données (qui manipulent des feuilles), l'application reste minimisée mais elle devient visible et accessible dans la barre des tâches.

    Ca ne convient pas dans mon cas...


    Est-ce que ça parle à quelqu'un le fait que Excel 2013 ne conserve pas la propriété Application.Visible à False, malgré qu'elle ait été écrite à l'ouverture du classeur ?


    La solution que je vois, mais que je trouve sale, est de réécrire cette ligne à la fin de la procédure "Click" de chaque bouton, pour s'assurer que l'appli soit cachée à nouveau. Mais j'aime bien les choses propres !

    • Partager sur Facebook
    • Partager sur Twitter

    [VBA] Problème Application.Visible XL2010 vs 2013

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown