J’ai trouvé sur Nalex.fr un article pour ajouter une signature Outlook par défaut avec les informations du compte utilisateur AD.
J’ai apporté quelques modifications à ce script pour qu’il fonctionne aussi bien avec XP, Vista que Seven.
J’ai ajouté aussi quelques méthodes pour rechercher Outlook et sa version.
Voici le code à exécuter avec CScript.exe suivi du fichier vbs avec son chemin complet (le script doit être lancé à l’ouverture de session des utilisateurs.
Vous pouvez personnaliser la signature :
- Modifier signature_001.htm pour la version html
- Intégrer le logo de l’entreprise en changeant les 2 fichiers image (image1.jpg et image2.jpg)
- Modifier signature_001.rtf et signature_001.txt pour les versions rtf ou texte
le lien ne serait plus bon. Essayez celui-ci et le script est plus récent 😉
https://www.synergeek.fr/download/SignatureOutlook2013
Bonjour,
Avez vous la version avec le Windows 10 car je galère assez…
Bonjour, Oui je dispose d’une version qui marche avec Windows 10. Mais attention, pour ce qui est de Office 2013 et 2016, ce script n’arrive plus à définir la signature par défaut. Les signatures sont bien enregistrées mais il faut que l’utilisateur choisisse la signature parmi celles disponibles.
Je vous fais un 7z avec le paquet.
Bonjour,
un grand merci pour ce travail 🙂 J’ai néanmoins quelques problème, je vais essayé d’etre le plus concis possible:
– Le script rencontre une erreur à la ligne 193 a savoir :” call objFSO.CopyFolder (RepSource, RepCible ,TRUE) ” erreur: chemin d’accès introuvable; code 800A004C
Malgré tout la signature se créée bien.
– si je fais une modif et re-éxecute le script, la signature precedement déployée ne change pas.
– si je supprime la signature de l’outlook puis re-execute le script, cette derniere ne remonte pas.
Si vous avez une idée je suis preneur 🙂
merci par avance pour votre aide.
yoann
Bonjour,
Merci pour ce script que j’ai pu adapter à W10. Par contre je rencontre la même erreur et la signature ne se créé pas. le répertoire est vide.
Comment avez vous solutionné le problème. J’ai cherché sur le net mais n’étant pas développeur c’est un peu difficile.
Merci pour votre aide. Stéphane.
Bonjour,
J’utilise la version de 2009 pour la signature et c’est vraiment un super boulot! Merci à Martial Auroy et toutes celles et ceux qui ont apporté leur pierre à l’édifice.
Par contre je confirme que le lien indiqué pour la version 2014 n’est pas / plus valide:
https://www.synergeek.fr/download/SignatureOutlook2013
S’il y a moyen de télécharger la dernière mouture je suis preneur car je migre mon parc de W7 à W10 et evidement je me confronte comme tout le monde à l’impossibilité d’utiliser le script de 2009 sur un W10…
Merci d’avance.
Le lien est down (:
Bonjour, Je vais solliciter l’admin du site pour le lien mais essayez celui-ci : https://www.synergeek.fr/download/SignatureOutlook2013. en plus il est plus récente 😉
Bonjour,
J’ai un petit problème avec votre script j’arrive bien à créer ma signature sans problème par-contre la signature affiché dans le gestionnaire est nickel alors que dans le mail le nom prenom il garde #nom#.
Comment faire ?
Bonjour,
Le prénom vient de “GivenName” de l’AD et le nom est repris du “sn”. A vérifier que ces informations sont bien renseignées dans l’AD.
Sinon, toutes les autres fonctionnent ? Et “le gestionnaire” c’est quoi ?
Je n’utilise pas le Given name mais cn pour récupérer nom et prénom.
Sinon je n’ai aucun problème avec le reste et ce que j’appelle le gestionnaire c’est quand on vas dans un nouveau mail et qu’on vas dans le paramètre signature on peux y voir les différentes signatures associer à Outlook. Dans cette fenêtre ma signature est la bonne nom et prénom y sont affichés mais si je veux que la signature soit bonne au niveau du mail je doit réenregistré la signature.
Cordialement
En effet, c’est étrange.
La signature est déployée via une policie qui exécute alors le script. Les éléments #xxx# sont alors remplacés par l’information correspondante. Le fichier est enregistré aux différents formats dans le dossier “C:\Users\\AppData\Roaming\Microsoft\Signatures”
Sans enregistrer quoi que ce soit depuis Outlook, les fichiers dans ce dossier sont déjà avec toutes les informations.
Par contre, il faut aller définir une signature par défaut à la main. Car le script ne le fait pas.
Martial.
Merci de votre réponse rapide.
Mais les versions de fichiers semble être les mêmes que ceux qui ne fonctionnent pas. L’erreur se produit uniquement avec Office 2013 c’est assez étrange.
Avez vous des fichiers plus récents que ceux présents sur le site synergeek ?
Celui que j’utilises avec la version 2013 est celui de l’article de janvier 2014 : https://www.synergeek.fr/publier-signature-outlook-avec-les-informations-ad-suite
Je confirme le problème de pascal impossible d’appliquer les signatures à cause de cette erreur. y a t’il une solution ?
Essayez la version plus récente que j’ai publié sur ce même site
Bonjour,
Ce script fonctionne à merveille depuis quelque temps avec windows XP, seven (32 ou 64 bits) et office 2003 et 2010 (32 bits)
Je viens de recevoir des machines 64bit avec office 2013 64 bit.
J’ai l’erreur
“800A01C3 cet objet n’es pas une collection” à cette ligne
For Each subkey In arrProfileKeys
strsubkeypath = strKeyPath & “” & subkey
Je pense que les profils ne sont pas enregistrés au même endroit dans le registre.
Je ne trouve pas l’emplacement des profils dans le registre et meme si je le trouvais, je ne saurais pas comment coder tout ça.
Merci d’avance.
Pascal
Bonjour,
En fait j’ai la version 32 bit de outlook 2013 et non la 64 bits comme je l’ai écrit.
Je m’auto reponds pour windows 8 🙂
La valeur à mettre est:
if InStr(1,strResultat,”8.1 PROFESSIONNEL”) >0 then GetOsName=”HUIT”
if InStr(1,strResultat,”8″) >0 then GetOsName=”HUIT”
et il faut ajouter une petite chose dans une autre ligne:
Code d’origine: case “SEVEN”, “VISTA”:
Code modifié: case “HUIT”, “SEVEN”, “VISTA”:
Par contre je n’arrive pass à me débarrasser de l’erreur “800A01C3 cet objet n’es pas une collection”, le code donné par Martial Auroy ne résou pas ce pb…
Bonjour,
Quelqu’un pourrait il me donner la valeur que je dois mettre pour que ce script fonctionne sous Windows 8 SVP.
if InStr(1,strResultat,”???”) >0 then GetOsName=”???”
Vous remerciant par avance.
Laurent
Merci pour ce script, il est vraiment très bien fait.
J’ai du apporter quelques améliorations pour la compatibilité 2013 et la gestion d’une version de signature pour être appliqué en GPO.
Ce serait intéressant de partager ces améliorations et on modifiera l’article
bon le code ne s’affiche pas, surement est-il pris en compte en tant que code lors de l’affichage
Donc c’était une balise Span avec le style Display = #VISIBLE#. #VISIBLE#étant modifié par le script vbs
Deux petites choses :
– j’avais oublié d’ajouter le code html utilisé : et
– le code html proposé n’a pas l’air de fonctionner avec Outlook 2003
J’ai utilisé la méthode suivante :
– Insérer la ligne suivante avant le groupe de ligne affichant le mobile par
et en fermant ce groupe par dans le ficheir HTM
– Dans le script vbs , insertion à la fin de la définition de la variable TAB_VARIABLE
array(“#VISIBLE#” , “” , “”, “none”) _
– Dans le script vbs pour la fonction replaceLdapUserInfoInFile, j’ai rajouté le contrôle Select comme suit :
Select Case tVariables(i)(0)
Case “#VISIBLE#”
‘ Test Valeur de Mobile ou tVariable(5) correspond à #MOBILE# en tête du script vbs
If tVariables(5)(3) = “” Then
tVariables(i)(3) = “none”
else
tVariables(i)(3) = “block”
End If
Case Else
tVariables(i)(3) = userLdapInfo.Get(tVariables(i)(1))
‘ Si ce paramétre AD est introuvable, on prend la valeur par défaut.
If (Err.Number 0) Then
tVariables(i)(3) = userLdapInfo.Get(tVariables(i)(2))
End If
end select
Merci pour ce script qui m’aide beaucoup. Ne connaissant pas le vb, je me permets de vous demander un complément au niveau des variables “active directory” et de leur affichage.
Dans la société, tout le monde n’a pas un mobile. Si je mets une variable
array(“#MOBILE#” , “mobile”, “”, “”), _
et que dans le html je mets
M : #MOBILE#
Il affiche bien le n° de mobile de la personne. Si la personne n’a pas de mobile d’inscrit dans Active directory, la signature affiche un M: puis rien à côté.
Y a t’il une possibilité de ne rien afficher.
Cordialement
Pascal
Bonjour,
Merci pour ce script superbe 🙂 . Je rencontre par contre un souçis d’encoding les “é” importés de l’AD apparaissent tous forme de carrés blanc dans la signature. Si vous avez une idée.. 🙂
Le souci vient de l’encodage de l’unicode. en fait, il faudrait ajouter encoder.encodeutf8(la chaine) pour convertir la chaine en UF8.
Bonjour,
Après avoir placé le code, la fonction Function IsOutlookRunning() qui, comme vous l’avez annoté permet l’activation de la signature Outlook.
Je souhaiterai donc crée une condition qui éxécuter la fonction seulement si outlook est instalé.
Ce langage n’était pas mon point fort, je ne sais pas comment mis prendre.
Bonjour,
Dans le fichier vbs, il y tu a entre les lignes 37 à 48 ceci :
‘##########################################################
‘#### lancement du traitement.
If Not IsOutlookRunning Then
‘*** Copie et personalisation des fichiers de signature dans “%USERPROFILE%Application DataMicrosoftSignatures”.
Call getLdapProfileAndCopyFiles(REP_MODELE_SIGNATURE, NOM_SIGNATURE, TAB_FICHIERS_IMAGES, TAB_VARIABLES)
‘*** Définition de la nouvelle signature par défaut dans Outlook.
Call SetDefaultSignature(NOM_SIGNATURE)
‘else
‘ strMsg = “Veuillez fermer Outlook avant d’executer ce script”
‘ MsgBox strMsg, vbExclamation, “SetDefaultSignature”
End If
‘##########################################################
Il faut sélectionner ce bloc et coller à la place ceci :
‘########################################
‘#### lancement du traitement.
on error resume next
Set appOut = Nothing
Set appOut = CreateObject(“Outlook.Application”)
on error goto 0
If (not appOut Is Nothing) Then
Set appOut = Nothing
If Not IsOutlookRunning Then
‘*** Copie et personalisation des fichiers de signature dans “%USERPROFILE%Application DataMicrosoftSignatures”.
Call getLdapProfileAndCopyFiles(REP_MODELE_SIGNATURE, NOM_SIGNATURE, TAB_FICHIERS_IMAGES, TAB_VARIABLES)
‘*** Définition de la nouvelle signature par défaut dans Outlook.
Call SetDefaultSignature(NOM_SIGNATURE)
End If
end if
‘#############################
Ce code tente de créer un application outlook. Si elle ne peut pas, Outlook n’est donc pas présent et le script ne s’exécutera pas.
Cordialement
Merci de votre réponse.
Le code inséré, il me renvoie à la fonction:
Function IsOutlookRunning()
strComputer = “.”
strQuery = “Select * from Win32_Process ” & _
“Where Name = ‘Outlook.exe'”
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\” _
& strComputer & “rootcimv2”)
Set colProcesses = objWMIService.ExecQuery(strQuery)
For Each objProcess In colProcesses
If UCase(objProcess.Name) = “OUTLOOK.EXE” Then
IsOutlookRunning = True
Else
IsOutlookRunning = False
End If
Next
End Function
Donc il doit malheuresement quand même exécuter le script jusqu’à la fin …
Cordialement Thomas
Bonjour,
Merci, je vais essayer sa !
Bonjour,
Merci pour votre script, j’essaie de le mettre en place le code se lance correctement à l’ouverture de session sur les utilisateurs contenus dans UO.
Une fois qu’un utilisateur se connecte à une session TSE (où outlook n’est pas installé), j’obtiens le message d’erreur “800A01C3 cet objet n’es pas une collection”.
Il me renvoi à la ligne:
For Each subkey In arrProfileKeys
strsubkeypath = strKeyPath & “” & subkey
‘On Error Resume Next
objreg.SetBinaryValue HKEY_CURRENT_USER, strsubkeypath, “New Signature”, myArray
objreg.SetBinaryValue HKEY_CURRENT_USER, strsubkeypath, “Reply-Forward Signature”, myArray
‘MsgBox strsubkeypath
Next
Else
strMsg = “Please shut down Outlook before running this script.”
‘MsgBox strMsg, vbExclamation, “SetDefaultSignature”
Je n’arrive pas à corriger se soucis car le script fonctionne correctement.
Merci
Bonjour,
Il se plante lors de la recherche de la branche de la base de registre qui devrait contenir les signatures. Comme il n’y a pas d’outlook, pas de branche.
Je mettrai bien ce bloc en lieu et place :
if Not arrProfileKeys is nothing then
For Each subkey In arrProfileKeys
strsubkeypath = strKeyPath & “” & subkey
objreg.SetBinaryValue HKEY_CURRENT_USER, strsubkeypath, “New Signature”, myArray
objreg.SetBinaryValue HKEY_CURRENT_USER, strsubkeypath, “Reply-Forward Signature”, myArray
Next
end if
le soucis est que sur certaines machines de mon domain, notament les postes en vista ou 7, un message d’erreur (bullet) s’affiche au démarrage. “You are logged in temp profile…” Je ne sais pas si ce message est lié à la mise en place de ce script, mais je l’ai remarqué quasiment en même temps que sa mise en service. autre chose de bizarre lié à ce message, quand l’utilisateur est correctement loggé dans son profil, le prompt affiche:
P:\user
Pourtant lorsqu’une machine n’est pas correctement loggée dans sa session l’invite du prompt est:
C:\doc & settTEMP
le fonctionnement n’est pas perturbé donc je ne me suis pas attaché à solutionner ce message d’erreur.
Une idée peu-être ?
Merci pour vos réponses.
Ah ben là, ça sent bien un profile corrompu. Ce qui me chagrine, c’est que ce soit seulement sur Vista ou Seven. Il est clair qu’ils n’ont pas le même niveau de sécurité que XP par exemple. L’AD et la gestion des sessions a changé depuis vista.
Quoi qu’il en soit, il faut essayer avec un des PC et se logger en Admin local. Aller dans les propriétés avancées de l’ordinateur, dans les profils utilisateur. supprimer ce profil. attention, en le supprimant tous les paramètres locaux seront perdus évidement.
Fermer la session Admin et ouvrir avec la session de cet utilisateur que l’on vient de supprimer. La session va recréer alors les informations à partir du compte par défaut et des informations de l’AD.
A essayer. Si cela fonctionne, il faut le faire pour toutes les machines.
Ce qui est étrange c’est “certaines machines” et puis “quand l’utilisateur est correctement logué”. Car pour moi, il n’est ou pas, logué. Il ne peut pas être “mal” logué.
Bonjour,
Une fois les signature déployées, faut-il laisser actif le scipt de manière définitive dans “propriétés –> profil –> logon script”, ou peut-on le supprimer ?
merci.
Personnellement, je le laisserais. L’utilisateur a très bien pu supprimer cette signature depuis outlook ou la modifier. Quand il rouvrira sa session, la signature originale sera à nouveau “toute propre” .
Le téléchargement est à nouveau opérationnel…
Bonjour,
j’installe avec des fichiers datant de septembre 2011, car il n’est plus possible de télécharger le script sur ce site (erreur 404). Le script s’execute à l’ouverture de session, après la validation de l’Os et l’avertissement de la copie dans le rep \doc &settuserapp datamicrosoft
je reçois le message d’erreur suivant:
Sricpt:\servernetlogonSignatureOutlook.vbs
Line 176
Char: 3
Error Chemind’accès introuvable
Code 800A004C
Source: Erreur d’execution Microsoft VBScript
Effectivement le chemin ne doit pas être en UNC si le script s’execute dans une procédure du NetLogon. Il faut faire un batch avec une unitée logique executer le script depuis cette unité puis defaire l’unité pour que l’utilisateur n’ait pas ce drive.
Net use z: \…
c:windowssystem32cscrpit.exe z:le script.vbs
net use z: /delete
PS: Le lien du zip est maintenant bon.
Bonjour,
Je souhaite téléchargé le script, mais le lien semble avoir un souci.
Erreur 404 ?
Merci d’avance
Bonjour M Auroy,
Je rencontre un petit soucis (manque de connaissance en Vbs) pour l’installation de ce script, vous serait-il possible de me donner une adresse e-mail afin de vous faire parvenir fichiers, log, et explications.
d’avance merci.
Bonjour,
En fait, il suffit d’exécuter le script avec la commande cscript.exe qui est sur tous les windows dans C:WindowsSystem32
la syntaxe serait donc C:WindowsSystem32Cscript.exe suivi du chemin du vbs.
Rien d’autre de spécial à faire si ce n’est les droits de lecture de l’AD évidement mais en ce qui concerne la lecture tout utilisateur a le droit de lire ses propres informations.
Bonjour,
Je suis content de voir que ce script évolue pour être utilisable dans des environnements variés.
Nalex
Bonjour,
Oui, c’est toujours agréable de voir évoluer ce qui est mis à disposition sur le Net.
Merci d’avoir fourni le premier effort.
Martial
excellent !
et merci…