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 !
[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.