|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() |
Bonjour,
Avec le code ci dessous, je peux synchroniser les contacts outlook2k3 avec un bdd access 2k3 : Code : Code :
Par ex: si une adresse mail est modifiée sur une fiche dans outlook, celle ci n'est pas synchronisée dans la bdd. C'est embettant. Comment peut-on détecter la modif et initié la maj de la bdd ? Merci d'avance Seb |
||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
SAlut,
En comparant une date de synchro (à stocker) avec la date de modif des contacts. Il faut peut être aussi stocker un identifiant unique désignant ton contact si tu changes son nom
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() |
l'identifiant unique je l'ai... c'est la clef primaire dans la bdd.
mais comment faire pour récupérer la date de modif d'une fiche dans outlook ? |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Salut,
c'est la propriété LastModificationTime ex: #16/11/2007 12:46:23#
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() |
Ok,
dans ma bdd, j'ai ajouté un champ datesync que j'alimente avec la proprièté que tu m'as donné, j'ai aussi ajouté un champ modifbdd qui récupère la date de modif si la fiche est modifiée dans access. je coince dans le code, en fait je suis largué. A quel niveau dans le code je dois intervenir pour lui dire : lors de la synchro, de comparer les dates de modifs des fiches outlook et les dates de modifs contenues dans champs datesync et modifbdd et de synchroniser la fiche la plus récente.... |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Salut,
A chaque boucle (changement de contact ou ligne) il faut faire ce controle. A toi a définir la priorité aussi fichier prévaut sur outlook ou le contraire. Bon courage
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#7 | ||
|
Membre du Club
![]() |
Bien, j'avance doucement...
j'ai ajouté le code ci dessous dans la function accesADB. A partir d'outlook, quand je modifie une adresse email sur une fiche existante et déja dans la BDD. La modif est bien détectée et la synchro se fait... Yesssss. Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Salut,
Il me semble que lorsque tu vas faire ta mise à jour de outlook, avec la ligne le champs va être automatiquement modifié. et donc il faut faire un update de access avec cette date.
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() |
J'essaye avec save et ca ne fonctionne pas.
voila ce que j'ai mis : Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Peux tu publier ton code complet je vais tester sur mon poste
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#11 | ||||
|
Membre du Club
![]() |
voici le code
Dans un module : Code :
Code :
merci pour ton aide |
||||
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Salut sebinator,
il manque ta fonction NZ
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() |
a quel niveau ?
|
|
|
00
|
|
|
#14 | ||||
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
Dans AccesADB il y a plusieurs lignes :
Code :
rs.Fields(2) = Nz(mycont.LastName, " ") mais cela pose le pb de la comparaison après avec outlook !!
donc on pourrait écrire : Code :
il faudrait utiliser un filtre comme cela : Code :
Il y a quand même pas mal de choses à vérifier Est ce que Heureux-oli l'utilises sans pb sa macro ? ce serait bien d'avoir ses commentaires comme c'est lui qui l'a écrite J'essayerais de regarder de nouveau plus tard ! Voici quelques idées d'optimisation aussi : Je remplacerais par une constante l'emplacement de la bdd Code :
Const MaDatabase = "C:\temp\contacts.mdb" Attention à l'utilisation de ON ERROR RESUME NEXT cela peut masquer des points importants à corriger
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
||||
|
|
00
|
|
|
#15 |
|
Membre chevronné
![]() Inscription : mars 2006 Messages : 643 ![]() |
j'oubliais il faut remplacer
Code :
Set olApp = CreateObject("Outlook.Application") pour éviter d'avoir le message de sécurité.
__________________
Have a nice day. ![]() Oliv' OUI à l'utilisation, NON au « copillage » Merci de citer la source |
|
|
00
|
|
|
#16 | |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 364 ![]() |
J'ai vu autre chose.
Pourquoi déclare tu une date en texte ? Citation:
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
|
00
|
|
|
#17 | |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 364 ![]() |
Pour éviter les doublons, on peut aussi récupérer
Je pense qu'il est unique vu sa structure ! Citation:
Comme il y a plusieurs comparaison, je travaillerais avec des fonctions. Je fais mes tests et en fonction des résultats, j'exécute une fonction ou une autre pour obtenir l'effet désiré.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
|
00
|
|
|
#18 |
|
Membre du Club
![]() |
Bonjour,
merci pour votre intervention, J'ai modifié le code : J'ai hinibé les on error resume next J'ai remplacé l'accès à la bdd par une constante Code :
(Const MaDatabase = "C:\tempAcc\contacts.mdb") J'ai modifié les Set olApp = CreateObject("Outlook.Application") par (effectivement je n'ai plus le message de sécurité) Utiliser l'entryID pour éviter les doublons me parait une bonne idée, cela génére effectivement une clé à rallonge certainnement unique : Code :
0000000041EB6498077BF04E88A9A143D29116D900000000E97A00080000AF02 Comment est il généré ? Si la fiche est créée sur une autre machine est-ce l'ID est identique ? |
|
|
00
|
|
|
#19 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 364 ![]() |
Pour l'ID, je ne sais pas.
On pourrait aussi envisager un ID propre dans un champ pas utilisé.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#20 | |||
|
Membre du Club
![]() |
Citation:
Par contre en ayant virer les on resume next j'obtiens une erreur si je modifie une fiche dans la bdd : Code :
Variable objet ou variable bloc With non définie (erreur 91) |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com