FAQ VBA

FAQ VBAConsultez toutes les FAQ
Nombre d'auteurs : 10, nombre de questions : 133, dernière mise à jour : 15 juin 2021
Sommaire→Toutes Applications OfficeLorsque le niveau de sécurité intrinsèque des documents Office est réglé sur moyen ou élevé, il est alors impossible d'activer automatiquement les macros d'un document.
La première solution consiste à régler le niveau de sécurité sur faible (Menu Outils >> Macros >> Sécurité...), mais n'est pas très recommandée.
L'autre solution consiste à auto-certifier les macros d'un document.
Un certificat local, valable uniquement sur la machine sur laquelle il est installé, va vous permettre d'éviter le désagrément d'avoir à
confirmer l'activation des macros à l'ouverture d'un document, ou pire, la désactivation systématique des macros.
Comment procéder : A la prochaine ouverture du document, une alerte de sécurité va apparaître, cocher alors la case "Toujours faire confiance au macros provenant de... ".
- Ouvrir le document Office dont les macros doivent être certifiées
- Dans l'éditeur VBA (Alt-F11), menu Outils >> Signature électronique ...
- Cliquer sur "Choisir..." et sélectionner le certificat précédemment créé
- Enregistrer le document
- Rechercher dans le répertoire d'installation de Microsoft Office (généralement C:\Program Files\Microsoft Office\OfficeXX) le programme SelCert.exe
- Exécuter SelfCert.exe
- Renseigner le nom du certificat dans la zone de texte et valider
- Fermer SelfCert.exe
Pour supprimer un certificat existant :
- Panneau de configuration >> Options Internet
- Onglet Contenu, cliquer sur Certificats...
- Sélectionner le certificat et cliquer sur Supprimer
Ce petit tutoriel pour vous montrer quelques exemples pour lire et modifier les propriétés des fichiers Office :
L'objet Screen n'existant pas en VBA, on peut retrouver ces valeurs en utilisant les fonctions de l'API Win32 :
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Const HWND_DESKTOP As Long = 0
Private Const LOGPIXELSX As Long = 88
Private Const LOGPIXELSY As Long = 90
Function TwipsPerPixelX() As Single
Dim lngDC As Long
lngDC = GetDC(HWND_DESKTOP)
TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX)
ReleaseDC HWND_DESKTOP, lngDC
End Function
Function TwipsPerPixelY() As Single
Dim lngDC As Long
lngDC = GetDC(HWND_DESKTOP)
TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY)
ReleaseDC HWND_DESKTOP, lngDC
End FunctionL'objet ClipBoard n'existant pas en VBA, il faut utiliser les fonctions de l'API Windows :
'-- Déclaration des fonctions API
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Sub Commande0_Click()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub


