[VBA]access 2003 et outlook

Résolu
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012 - 22 oct. 2011 à 15:54
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012 - 26 oct. 2011 à 15:29
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

huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012
26 oct. 2011 à 15:29
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
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
22 oct. 2011 à 16:56
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
---
0
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012
24 oct. 2011 à 01:15
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
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 oct. 2011 à 20:24
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
---
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012
25 oct. 2011 à 08:01
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"
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 oct. 2011 à 09:23
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.

0
huascaran01 Messages postés 35 Date d'inscription mercredi 12 août 2009 Statut Membre Dernière intervention 25 août 2012
26 oct. 2011 à 02:58
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
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
26 oct. 2011 à 12:45
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
---
0
Rejoignez-nous