Message "Microsoft Forms" - Contrôles ActiveX potentiellement non sûres
Bonjour à tous,
Je rencontre un soucis avec une morceau de code que je construis.
Mon fichier, me sert :
- a remplir un formulaire a partir d'une base de donnée
- Une fois le formulaire renseigner, la macro, édite une copie du classeur (sans la base de donnée, qui demeure privée) en lui donnant le nom de la personne qui va le recevoir.
- La copie s'ouvre, et je réinjecte sur la trame les données que le fichier avait assimilé depuis la base de donnée.
-...
A réception, la personne va pouvoir ouvrir le classeur, apporter si besoin des modifications, DESSINER sa signature, et me renvoyer le document.
----------
Pour la réalisation de la signature, je génère des contrôles ActivesX.
Ce qui me pose problème, je comprend bien que l'alerte des ActivesX est nécessaire pour protéger l'utilisateur qui doit être informé des risques à l'utilisation. Cependant, lorsque j'exécute ma macro, celle ci va m'ouvrir les copies de classeur pour ajouter des données (fois X personnes se situant dans la base de donnée, au résultat final, j'estime avoir environ 700 fois l'exécution de la boucle).
------
Mon besoin, me permettre de ne pas avoir ce foutu message a chaque ouverture du classeur :-) .
Merci,
Cordialement,
Bonjour poruss,
Ce n'est pas à mes yeux un message de Microsoft Forms, mais d'Excel puisque vous parlez de "classeur"
Sinon pour le problème, c'est Ici sur le site de Crosoft lui même
Activer ou désactiver des paramètres ActiveX dans des fichiers Office - Support Microsoft
Par contre pour les personnes recevant ton fichier, même problème et seule solution
A+
Bonjour,
Merci pour votre réponse.
Je parle de message forms car c'est le titre de l'encart qui s'affiche.
Dans les paramètres activeX, j'ai bien côché dans les avertissements de sécurité "activer tout les contrôles sans restriction ....", mais j'ai toujours le massage qui apparait a chaque ouverture de classeur.
Peut-être que le plus simple serait de trouver une autre methode pour dessiner la signature directement dans ma feuille excel sans passer par un USF et inkpicture. Une idée ?
Merci,
Cordialement ,
Hello,
quelle est ta version d'Excel ? parce que moi avec ton classeur je n'ai pas de messages de sécurités et pourtant je ne suis pas en sécurité minimum :
Ma version Excel est 2021 64 bits Famille et Etudiants . En Entreprise il y a souvent des restrictions supplémentaires. Et voici le chemin des dll des controles activex :
Ami calmant, J.P
Bonjour
Sous excel 2016, j'ai la même chose que Jurassic Pork mais contrairement à lui j'ai aussi le souci à l'ouverture
Le problème vient de l'USF, c'est l'objet signature (objet Inkpicture) qui provoque le message à l'ouverture.
Rem : j'éviterai de donner des noms d'instructions VBA aux boutons dans l'USF. Exemple : Annuler est nommé Cancel. Pourquoi ne pas donner le nom Annuler ou Quitter.
Crdlt
Hello,
je viens d'essayer sous mon Excel 2016 32 bits et effectivement j'ai aussi le message d'avertissement. Voici ce qu'en dit L'I.A :
L’avertissement apparaît dans Excel 2016 32 bits parce que :
- InkPicture est un contrôle ActiveX ancien, basé sur des composants TabletPC introduits sous Windows XP/Vista
- Excel 2016 utilise encore l’ancien moteur ActiveX (MSForms 2.0) avec des règles de sécurité plus strictes
- Excel 2021 64 bits utilise une version plus récente et plus stable du moteur ActiveX, qui ne considère plus InkPicture comme “non sûr” dans les mêmes conditions
Donc : ce n’est pas un problème de réglages, mais une différence de génération technologique entre les deux versions d’Office.
✔️ 1. InkPicture est un contrôle ActiveX obsolète
InkPicture (Microsoft InkPicture Control) provient du composant Microsoft Tablet PC SDK. Il n’est plus maintenu depuis longtemps.
Excel 2016 (32 bits) :
- charge encore les contrôles ActiveX via l’ancien moteur COM
- applique des règles de sécurité héritées d’Office 2010
- marque certains contrôles comme “non sûrs” s’ils ne sont pas signés ou s’ils utilisent des bibliothèques anciennes
✔️ 2. Excel 2016 32 bits est plus strict sur les contrôles ActiveX
Microsoft a renforcé la sécurité ActiveX après plusieurs failles (2014–2016). Résultat :
- certains contrôles sont bloqués ou signalés
- InkPicture fait partie des contrôles “legacy” souvent marqués comme suspects
✔️ 3. Excel 2021 64 bits utilise un moteur ActiveX modernisé
À partir d’Office 2019/2021 :
- le moteur ActiveX a été réécrit pour la compatibilité 64 bits
- plusieurs contrôles anciens sont “neutralisés” mais ne déclenchent plus d’alertes
- InkPicture est chargé en mode “compatibilité” sans avertissement
Ami calmant, J.P
Bonjour à vous deux,
Merci de vos retours.
JP : Ma version d'excel est le 365.
Je pense avoir mis les sécurités au minimum, mais effectivement j'ai un ordinateur d'entreprise et chez nous l'informatique est ultra sécurisé ...
Donc, pour mon cas, on ne pourrait rien faire, hormis de changer de version de Excel, ...
Dan :
j'éviterai de donner des noms d'instructions VBA aux boutons dans l'USF. Exemple : Annuler est nommé Cancel. Pourquoi ne pas donner le nom Annuler ou Quitter.
C'est un bout de code que j'ai pompé sur internet, mais effectivement, je vais modifier les noms.
Penseriez vous à une autre système que Inkpicture, pour me permettre de dessiner une signature ?
Je sais que je pourrais passer pas une signature dans un PDF ou autre, mais mon objectif et d'avoir absolument tous ici pour limiter les actions de l'utilisateur et que ce soit rapide.
Merci,
Cordialement,
Bonjour à tous,
Une autre piste, si l'ouverture du fichier de votre coté ne concerne que l'écriture de données "brutes" dedans, je pense que vous pourriez vous en sortir en accédant directement à la "database" du classeur sans l'ouvrir, via ADODB. Alors je n'y connais pas grand-chose et je ne l'ai jamais fait, mais je pense que @Jurrasic Pork a quelques billes sur le sujet.
Un snippet IA de principe :
Option Explicit
Sub CopierA1A10_Vers_B1B10_ParADO()
'----------------------------------------
' 1) Paramètres de l'exemple
'----------------------------------------
Dim cheminCible As String
cheminCible = "C:\MonFichier.xlsx"
Dim nomFeuilleCible As String
nomFeuilleCible = "Feuil1"
'----------------------------------------
' 2) Lire les valeurs A1:A10 du classeur qui exécute la macro
' -> feuille n°1 du classeur courant
'----------------------------------------
Dim valeursSource As Variant
valeursSource = ThisWorkbook.Worksheets(1).Range("A1:A10").Value
'----------------------------------------
' 3) Ouvrir une connexion ADO vers le fichier cible fermé
'----------------------------------------
Dim cn As Object ' ADODB.Connection
Set cn = CreateObject("ADODB.Connection")
Dim chaineConnexion As String
chaineConnexion = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & cheminCible & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=No"";"
cn.Open chaineConnexion
'----------------------------------------
' 4) Ouvrir un recordset sur la plage cible A1:B10
' On lit A:B même si on n'écrit que dans B,
' car on va modifier la 2e colonne du recordset.
'----------------------------------------
Dim requete As String
requete = "SELECT * FROM [" & nomFeuilleCible & "$A1:B10]"
Dim rs As Object ' ADODB.Recordset
Set rs = CreateObject("ADODB.Recordset")
' 1 = adOpenKeyset
' 3 = adLockOptimistic
rs.Open requete, cn, 1, 3
'----------------------------------------
' 5) Injecter les valeurs lues dans la colonne B
' Fields(0) = colonne A
' Fields(1) = colonne B
'----------------------------------------
Dim i As Long
i = 1
Do While Not rs.EOF And i <= 10
rs.Fields(1).Value = valeursSource(i, 1)
rs.Update
rs.MoveNext
i = i + 1
Loop
'----------------------------------------
' 6) Fermer proprement
'----------------------------------------
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
MsgBox "Copie terminée vers " & cheminCible, vbInformation
End SubRe
C'est un bout de code que j'ai pompé sur internet, mais effectivement, je vais modifier les noms
C'est une bonne idée. Utilisez le nom de vos boutons par exemple.
Penseriez vous à une autre système que Inkpicture, pour me permettre de dessiner une signature ?
Lorsque je lis l'intervention de Jurassic Pork et votre post concernant les codes "pompés", votre version excel ne devrait pas vous poser un souci
Comme le mentionne Jurassic Pork, j'avais également trouvé la mention de ce problème avec les versions antérieures à 2021 (donc la mienne)
Je dis peut-être un bêtise mais si l'USF était déjà dans ce que vous avez copié sur Internet, vous devriez peut-être en premier supprimer l'objet inkPicture et le refaire avec votre version.
Crdlt
Edit : vos codes viennent de ce fil je suppose ... https://stackoverflow.com/questions/37164849/how-to-add-handwritten-signature-using-excels-ink-tools
Comme le mentionne Jurassic Pork, j'avais également trouvé la mention de ce problème avec les versions antérieures à 2021 (donc la mienne)
Hello,
Dans la version d'Excel de poruss il y a cependant un gros hic : elle est en 32 bits donc utilise l'activex 32 bits. Il me semble que ce sont les activeX 64 bits qui bénéficie du nouveau moteur ActiveX.
Ami calmant, J.P