[VBA]access 2003 et outlook [Résolu]

Signaler
Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012
-
Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012
-
Bonjour à tous,
J'ai développé une base sous access 2003 qui contient, notamment, un agenda. Je voudrais pouvoir consulter à distance mon agenda en utilisant google calendar et un outil de synchronisation entre outlook et google (il y en a finalement plusieurs qui marche bien). Je n'ai pas de difficulté pour importer une table access reprenant mes RDV depuis outlook. Je voudrais toutefois créer une macro sous outlook qui permette à l'ouverture d'outlook de directement importer la table access. Et là, vraiment, je bloque. Faire communiquer word et access en vba pas de problème mais faire communiquer outlook et access c'est plus compliqué. Si en plus, quelqu'un à une idée pour faire communiquer dans l'autre sens. Je m'explique. L'insertion directement de RDV depuis google calendar se synchronisant dans outlook, j'aimerais que l'export de nouveau rdv soit réalisé vers outlook. Beau problème en perspective. Si quelqu'un à une idée, je l'en remercie d'avance.

8 réponses

Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012

j'ai pas mal cherché.
Il suffisait de charger un petit freeware à l'adresse suivante :


'http://www.freeware-downloads.com/advanced_security_for_outlook.htm

Merci encore pour tout
Messages postés
14737
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2020
148
Bonjour,

Visiblement, tu es en VBA, pas VB.NET, je déplace donc.

Pour accéder à une base Access, tu peux utiliser ADO.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012

D'accord, la question était mal positionnée.
J'ai fait une recherche sur adodb et je reste bloqué.
J'avais pensé à un truc de départ genre
adodb.connection
adodb.recordset

mais franchement, je ne suis nulle part.
A mon avis, c'est simple mais je bloque.
Il faut une macro qui importe dans le calendrier outlook une requête access.
Si quelqu'un à une solution. J'ai déjà cherché mais rien de convaincant.
Merci
Messages postés
14737
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2020
148
Bonjour,

En cherchant rapidement sur Google :
http://www.vbfrance.com/tutoriaux/VB6-ACCES-BASE-DONNEES-ACCESS-ADO_160.aspx

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012

bonjour,
j'ai un peu planché et je dois être proche du résultat final mais ça bogue toujours.
Mon code :
Sub transfert_données()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim rst As ADODB.Recorset
Set rst = New Recordset

With conn
    .Provider = "Microsoft.JET.OLEDB.4.0"
    .Open "C:\base\cabinet.mdb"
End With
With rst
    .ActiveConnection = conn
    .Open "Select * from ROutlook_général", conn
    
    .fields("document_nbre_page").Value = nbrepage
    .fields("Document_copie").Value = nomdoc
    .fields("Code_dossier").Value = nomdoc3
    .fields("Code_document").Value = codedoc
    .Update
End With
rst.Close
conn.Close
For Each x In rst.fields
    hd = "HoraireDebut"
    dur2 = "durée"
    intitule = "CP"
Next
Set Rdv = OkApp.CreateItem(olAppointmentItem)
With Rdv
    .MeetingStatus = olMeeting
    .Subject = intitule
    .Body = "...tout est dit, c'est le body ...."
    .Location = "ici la location"
    .Start = hd     ' Attention : format mois/jours/année
    .Duration = dur2 'minutes
    .Categories = "professionnel"
    .Save
End With

End Sub


la table Routlook_général contient les données à insérer dans mon calendrier.
Il bloque dès la première ligne : "erreur de compilation type défini par l'utilisateur non défini"
Messages postés
14737
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2020
148
Bonjour,

Je pense que tu as oublié d'ajouter la référence à ADO.
Outils -> Références -> Ajouter "Microsoft ActiveX Data Object *" ou * représente la version la plus élevée que tu trouveras.

Messages postés
35
Date d'inscription
mercredi 12 août 2009
Statut
Membre
Dernière intervention
25 août 2012

merci, j'ai beaucoup progressé.
Mon code fonctionne.
Je récupère les données dans ma table access et je les envoie dans le calendrier outlook.
Il reste néanmoins un bug.
Au moment de l'automatisation, je veux envoyer directement une copie de l'entrée à une adresse spécifique (ce qui me permet de vérifier directement toutes les modifications). j'emploie .send.
Mais le programme m'envoie un message du genre "le programme essaie de se connecter..." avec à la clé une boîte "oui non..."
Je suppose qu'il est possible de faire sauter cette sécurité avec un yes automatique.
Mon code :
Sub transfert_données()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim rst As ADODB.Recordset
Set rst = New Recordset

With conn
    .Provider = "Microsoft.JET.OLEDB.4.0"
    .Open "C:\base\cabinet.mdb"
End With
With rst
        .ActiveConnection = conn
        .Open "ROutlook_général", LockType:=adLockOptimistic
End With
nbrelignes = 0
Do While Not rst.EOF
nbrelignes = nbrelignes + 1
rst.MoveNext
Loop



Dim OkApp As New Outlook.Application
Dim Rdv As Outlook.AppointmentItem

rst.MoveFirst

For N = 1 To nbrelignes

    ddébut = rst.Fields(0).Value
    hdébut = rst.Fields(2).Value
    dfin = rst.Fields(4).Value
    hfin = rst.Fields(5).Value
    catégorie = rst.Fields(19).Value
    emplacement = rst.Fields(20).Value
    coordonnées = rst.Fields(21).Value
    objet = rst.Fields(22).Value
    durée = rst.Fields(6).Value
    
    Set Rdv = OkApp.CreateItem(olAppointmentItem)
    With Rdv
        .MeetingStatus = olMeeting
        .Subject = objet
        .Body = coordonnées
        .Location = emplacement
        .Start = ddébut     ' Attention : format mois/jours/année
        .Duration = durée 'minutes
        .Categories = catégorie
        .Recipients.Add ("monadresse@monadresse.be") 'Destinataire de la réunion
        .Send
        .Save
    End With

    rst.MoveNext
Next N

rst.Close
conn.Close

End Sub


Merci pour toute aide qui me serait apportée
Messages postés
14737
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2020
148
Bonjour,

Je pense qu'il doit exister l'équivalent de DisplayAlert=False de Excel dans Outlook.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---