Meilleur auteur de réponses
Comment importer des contacts dans Dossiers Publics

Question
-
Bonjour,
J'ai de nombreux commerciaux qui ont enregistrés leurs contacts sur leur version installée d'Outlook 2013 sur leur PC.
Le souhait est d'importer tous les contacts des commerciaux dans Dossiers Publics au besoin en créant une structure de type
Dossiers Publics\Contacts\France\NonDuCommercial1Dossiers Publics\Contacts\France\NonDuCommercial2
Dossiers Publics\Contacts\France\NonDuCommercial3
Dossiers Publics\Contacts\France\NonDuCommercial4
Dossiers Publics\Contacts\France\NonDuCommercial5
Dossiers Publics\Contacts\Italie\NonDuCommercial1
...
Cette structure existe déjà et chaque commercial est tenu de copier régulièrement ses contacts depuis sa version d'Outlook depuis les dossiers publics ... mais ce n'est pas toujours fait.
L'idée est donc d'exporter tous les contacts par chacun (ça, c'est OK, j'ai la bonne commande qui exporte tous les contacts dans des PST*) puis de tout réimporter, PST par PST dans les répertoires de Dossiers Publics. Et là ... ben ... je ne trouve aucune commande d'importation de PST dans Dossiers Publics.
Comment importer les contacts d'un PST dans les contacts de Dossiers Publics ?
Merci par avance pour l'aide apportée.
* pour info, mon export est le suivant :
New-MailboxExportRequest -Mailbox utilisateur@domaine.com -IncludeFolders "#Contacts#" -excludedumpster -FilePath "\\MonServeur\c$\scripttemp\utilisateur.pst"
Réponses
-
Bonjour,
il serait plus simple de passer un script/macro en VBA/VBS :
https://docs.microsoft.com/fr-fr/office/vba/api/outlook.folder.folders
Les contacts seraient copiés directement par l'utilisateur vers son dossier public correspondant.
---- Petit exemple d'accès aux dossiers contacts (publics ou non) en VBS
Dim WSHShell Dim appOutlook Dim mapiNameSpace Dim ChoixContact Dim NbC ' vor usage des constantes OutLook dans C:\Program Files\Microsoft Office\Office\1036\VBAOUTL9.CHM ' Constantes de tous les objects OutLook OlObjectClass Const olAction=32 Const olActions=33 Const olAddressEntries=21 Const olAddressEntry=8 Const olAddressList=7 Const olAddressLists=20 Const olApplication=0 Const olAppointment=26 Const olAttachment=5 Const olAttachments=18 Const olContact=40 Const olDistributionList=69 Const olDocument=41 Const olException=30 Const olExceptions=29 Const olExplorer=34 Const olExplorers=60 Const olFolder=2 Const olFolders=15 Const olFormDescription=37 Const olInspector=35 Const olInspectors=61 Const olItems=16 Const olJournal=42 Const olLink=75 Const olLinks=76 Const olMail=43 Const olMeetingCancellation=54 Const olMeetingRequest=53 Const olMeetingResponseNegative=55 Const olMeetingResponsePositive=56 Const olMeetingResponseTentative=57 Const olNamespace=1 Const olNote=44 Const olOutlookBarGroup=66 Const olOutlookBarGroups=65 Const olOutlookBarPane=63 Const olOutlookBarShortcut=68 Const olOutlookBarShortcuts=67 Const olOutlookBarStorage=64 Const olOutlookPropertyPageSite=70 Const olPages=36 Const olPanes=62 Const olPost=45 Const olPropertyPages=71 Const olRecipient=4 Const olRecipients=17 Const olRecurrencePattern=28 Const olRemote=47 Const olReport=46 Const olSelection=74 Const olSyncObject=72 Const olSyncObjects=73 Const olTask=48 Const olTaskRequest=49 Const olTaskRequestAccept=51 Const olTaskRequestDecline=52 Const olTaskRequestUpdate=50 Const olUserProperties=38 Const olUserProperty=39 ' Constantes OlItemType Const olAppointmentItem=1 Const olContactItem=2 Const olDistributionListItem=7 Const olJournalItem=4 Const olMailItem=0 Const olNoteItem=5 Const olPostItem=6 Const olTaskItem=3 'constantes OlDefaultFolders Const olFolderCalendar=9 Const olFolderContacts=10 Const olFolderDeletedItems=3 Const olFolderDrafts=16 Const olFolderInbox=6 Const olFolderJournal=11 Const olFolderNotes=12 Const olFolderOutbox=4 Const olFolderSentMail=5 Const olFolderTasks=13 Set WSHShell = WScript.CreateObject("WScript.Shell") ' Ce n'est pas parce qu'on fait du VB (script qui plus est ) qu'on ne va pas traiter des expressions regulieres Set re = New RegExp re.Global = True re.IgnoreCase = True ' Authentification dans Outlook Set appOutlook = CreateObject("Outlook.Application") Set mapiNameSpace = appOutlook.GetNameSpace("MAPI") 'ChoixContact ChoixContact=1 Select Case ChoixContact Case 1 Set objFolder = mapiNameSpace.GetDefaultFolder(olFolderContacts) Case 2 ' Lecture des Contacts publics Set PubFold = mapiNameSpace.Folders("Dossiers publics") ' lecture du dossier "Tous" si connexion en ligne 'Set Tous = PubFold.Folders("Tous") Set objFolder = Tous.Folders("ContactsPartages") Case 3 ' Lecture des Contacts publics Set PubFold = mapiNameSpace.Folders("Dossiers publics") ' lecture du dossier "Favoris" si accès en mode autonaume Set Tous = PubFold.Folders("Favoris") Set objFolder = Tous.Folders("ContactsPartages") End Select NbC=0 WScript.echo "Il y a : ", objFolder.Items.count , " contacts" 'choisir de parcourrir les éléments avec les 2 lignes suivantes ou les 2 d'après 'For Each objContact In objFolder.Items ' NbC=NbC+1 'For NbC=1 to objFolder.Items.count For NbC=4 to 4 Set objContact = objFolder.Items.Item(NbC) ' Vérification si la classe de l'élément est de type olContact et non pas de type olDistributionList If objContact.Class = olContact Then WScript.echo objContact WScript.echo "#",NbC," ", objContact.FirstName, objContact.LastName If objContact.BusinessTelephoneNumber <> "" Then WScript.echo "Tel :", objContact.BusinessTelephoneNumber WScript.echo "Fax :", objContact.BusinessFaxNumber 'Champs avec numéro de téléphone: ' propriétés de l'objet ContactItem tirée du fichier d'aide VBA pour Outlook 'AssistantTelephoneNumber, Business2TelephoneNumber, BusinessFaxNumber, BusinessTelephoneNumber, CallbackTelephoneNumber, CarTelephoneNumber, CompanyMainTelephoneNumber, Home2TelephoneNumber, HomeFaxNumber, HomeTelephoneNumber, ISDNNumber, MobileTelephoneNumber, OtherFaxNumber, OtherTelephoneNumber, PrimaryTelephoneNumber, RadioTelephoneNumber ' tester le numéro avec une expression reguliere re.pattern="\+33 \([1-5]\) [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9]" ret=re.test(objContact.BusinessTelephoneNumber) if not ret Then WScript.echo "CORRIGER ce numero : ", objContact.BusinessTelephoneNumber ' saisir ou calculer le bon format du numéro ' sauvegarder le contact modifié 'objContact.save end if End If else WScript.echo ">>>", objContact, " est de type ", objContact.Class End If Next Set objContact = Nothing Set objFolder = Nothing
A bientôt,
Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Enterprise admin, Messaging, Server Infrastructure 2016(89 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate, Security Admin https://base.faqexchange.info
- Proposé comme réponse Biliana Mouzaphirova lundi 23 mars 2020 08:08
- Marqué comme réponse Biliana Mouzaphirova lundi 23 mars 2020 08:09
-
Remarque,
Après réflexion, il serait plus simple de définir le dossier public de chaque utilisateur dans ses favoris, puis de demander une synchronisation locale.
En mettant à jour les contacts dans le dossier favori (copie locale), le dossier serait synchronisé et mis à jour automatiquement dans les dossiers publics.
=> Il suffirait de copier une fois les contacts de chaque personne dans ce dossier favori, (qui peut définir comme carnet d'adresse Outlook).
A bientôt,
Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Enterprise admin, Messaging, Server Infrastructure 2016(89 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate, Security Admin https://base.faqexchange.info
- Proposé comme réponse Biliana Mouzaphirova lundi 17 février 2020 10:37
- Modifié Thierry DEMAN-BARCELÒMVP, Moderator lundi 17 février 2020 21:51 correction orthographique
- Marqué comme réponse Biliana Mouzaphirova lundi 23 mars 2020 08:09
Toutes les réponses
-
Bonjour,
il serait plus simple de passer un script/macro en VBA/VBS :
https://docs.microsoft.com/fr-fr/office/vba/api/outlook.folder.folders
Les contacts seraient copiés directement par l'utilisateur vers son dossier public correspondant.
---- Petit exemple d'accès aux dossiers contacts (publics ou non) en VBS
Dim WSHShell Dim appOutlook Dim mapiNameSpace Dim ChoixContact Dim NbC ' vor usage des constantes OutLook dans C:\Program Files\Microsoft Office\Office\1036\VBAOUTL9.CHM ' Constantes de tous les objects OutLook OlObjectClass Const olAction=32 Const olActions=33 Const olAddressEntries=21 Const olAddressEntry=8 Const olAddressList=7 Const olAddressLists=20 Const olApplication=0 Const olAppointment=26 Const olAttachment=5 Const olAttachments=18 Const olContact=40 Const olDistributionList=69 Const olDocument=41 Const olException=30 Const olExceptions=29 Const olExplorer=34 Const olExplorers=60 Const olFolder=2 Const olFolders=15 Const olFormDescription=37 Const olInspector=35 Const olInspectors=61 Const olItems=16 Const olJournal=42 Const olLink=75 Const olLinks=76 Const olMail=43 Const olMeetingCancellation=54 Const olMeetingRequest=53 Const olMeetingResponseNegative=55 Const olMeetingResponsePositive=56 Const olMeetingResponseTentative=57 Const olNamespace=1 Const olNote=44 Const olOutlookBarGroup=66 Const olOutlookBarGroups=65 Const olOutlookBarPane=63 Const olOutlookBarShortcut=68 Const olOutlookBarShortcuts=67 Const olOutlookBarStorage=64 Const olOutlookPropertyPageSite=70 Const olPages=36 Const olPanes=62 Const olPost=45 Const olPropertyPages=71 Const olRecipient=4 Const olRecipients=17 Const olRecurrencePattern=28 Const olRemote=47 Const olReport=46 Const olSelection=74 Const olSyncObject=72 Const olSyncObjects=73 Const olTask=48 Const olTaskRequest=49 Const olTaskRequestAccept=51 Const olTaskRequestDecline=52 Const olTaskRequestUpdate=50 Const olUserProperties=38 Const olUserProperty=39 ' Constantes OlItemType Const olAppointmentItem=1 Const olContactItem=2 Const olDistributionListItem=7 Const olJournalItem=4 Const olMailItem=0 Const olNoteItem=5 Const olPostItem=6 Const olTaskItem=3 'constantes OlDefaultFolders Const olFolderCalendar=9 Const olFolderContacts=10 Const olFolderDeletedItems=3 Const olFolderDrafts=16 Const olFolderInbox=6 Const olFolderJournal=11 Const olFolderNotes=12 Const olFolderOutbox=4 Const olFolderSentMail=5 Const olFolderTasks=13 Set WSHShell = WScript.CreateObject("WScript.Shell") ' Ce n'est pas parce qu'on fait du VB (script qui plus est ) qu'on ne va pas traiter des expressions regulieres Set re = New RegExp re.Global = True re.IgnoreCase = True ' Authentification dans Outlook Set appOutlook = CreateObject("Outlook.Application") Set mapiNameSpace = appOutlook.GetNameSpace("MAPI") 'ChoixContact ChoixContact=1 Select Case ChoixContact Case 1 Set objFolder = mapiNameSpace.GetDefaultFolder(olFolderContacts) Case 2 ' Lecture des Contacts publics Set PubFold = mapiNameSpace.Folders("Dossiers publics") ' lecture du dossier "Tous" si connexion en ligne 'Set Tous = PubFold.Folders("Tous") Set objFolder = Tous.Folders("ContactsPartages") Case 3 ' Lecture des Contacts publics Set PubFold = mapiNameSpace.Folders("Dossiers publics") ' lecture du dossier "Favoris" si accès en mode autonaume Set Tous = PubFold.Folders("Favoris") Set objFolder = Tous.Folders("ContactsPartages") End Select NbC=0 WScript.echo "Il y a : ", objFolder.Items.count , " contacts" 'choisir de parcourrir les éléments avec les 2 lignes suivantes ou les 2 d'après 'For Each objContact In objFolder.Items ' NbC=NbC+1 'For NbC=1 to objFolder.Items.count For NbC=4 to 4 Set objContact = objFolder.Items.Item(NbC) ' Vérification si la classe de l'élément est de type olContact et non pas de type olDistributionList If objContact.Class = olContact Then WScript.echo objContact WScript.echo "#",NbC," ", objContact.FirstName, objContact.LastName If objContact.BusinessTelephoneNumber <> "" Then WScript.echo "Tel :", objContact.BusinessTelephoneNumber WScript.echo "Fax :", objContact.BusinessFaxNumber 'Champs avec numéro de téléphone: ' propriétés de l'objet ContactItem tirée du fichier d'aide VBA pour Outlook 'AssistantTelephoneNumber, Business2TelephoneNumber, BusinessFaxNumber, BusinessTelephoneNumber, CallbackTelephoneNumber, CarTelephoneNumber, CompanyMainTelephoneNumber, Home2TelephoneNumber, HomeFaxNumber, HomeTelephoneNumber, ISDNNumber, MobileTelephoneNumber, OtherFaxNumber, OtherTelephoneNumber, PrimaryTelephoneNumber, RadioTelephoneNumber ' tester le numéro avec une expression reguliere re.pattern="\+33 \([1-5]\) [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9]" ret=re.test(objContact.BusinessTelephoneNumber) if not ret Then WScript.echo "CORRIGER ce numero : ", objContact.BusinessTelephoneNumber ' saisir ou calculer le bon format du numéro ' sauvegarder le contact modifié 'objContact.save end if End If else WScript.echo ">>>", objContact, " est de type ", objContact.Class End If Next Set objContact = Nothing Set objFolder = Nothing
A bientôt,
Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Enterprise admin, Messaging, Server Infrastructure 2016(89 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate, Security Admin https://base.faqexchange.info
- Proposé comme réponse Biliana Mouzaphirova lundi 23 mars 2020 08:08
- Marqué comme réponse Biliana Mouzaphirova lundi 23 mars 2020 08:09
-
Remarque,
Après réflexion, il serait plus simple de définir le dossier public de chaque utilisateur dans ses favoris, puis de demander une synchronisation locale.
En mettant à jour les contacts dans le dossier favori (copie locale), le dossier serait synchronisé et mis à jour automatiquement dans les dossiers publics.
=> Il suffirait de copier une fois les contacts de chaque personne dans ce dossier favori, (qui peut définir comme carnet d'adresse Outlook).
A bientôt,
Thierry DEMAN-BARCELO. Offce Apps&Services MVP. MCSE:Enterprise admin, Messaging, Server Infrastructure 2016(89 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate, Security Admin https://base.faqexchange.info
- Proposé comme réponse Biliana Mouzaphirova lundi 17 février 2020 10:37
- Modifié Thierry DEMAN-BARCELÒMVP, Moderator lundi 17 février 2020 21:51 correction orthographique
- Marqué comme réponse Biliana Mouzaphirova lundi 23 mars 2020 08:09
-
Bonjour,
Si la mise ne place de l'extraction est facile pour chaque utilisateur ...
New-MailboxExportRequest -Mailbox utilisateur@domaine.com -IncludeFolders "#Contacts#" -excludedumpster -FilePath "\\MonServeur\c$\scripttemp\utilisateur.pst"Sa réimportation me semble bien plus compliquée avec ce script VB, qui, il me semble, devrait être lancé via le PC de l'utilisateur.
Je pense que je vais aller vers la seconde solution, via la mise en favoris du dossier public de chaque commercial. C'est un peu long à mettre en place, je vais me battre un peu pour qu'ils utilisent ce dossier pour stocker les infos mais cela correspond au besoin. Je vais quand même doubler mon action en exportant (puisque maintenant, j'ai la commande qui va bien) pour garder un historique au cas où quelqu'un supprimerait par erreur un contact.
Merci pour l'idée du favori !