1. #1
    Futur Membre du Club
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    mai 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : mai 2017
    Messages : 14
    Points : 5
    Points
    5

    Par défaut Appeler une fonction sur un bouton

    Bonjour à tous,

    Je suis en train de monter un BDD de prospection.
    Je me débrouille en VBA (surtout en adaptant des codes trouvés sur le site)
    Je sèche sur une méthode, je souhaite ajouter des RDV sur outlook. J'ai trouvé ce code sur le site :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Public Function CreerRendezVous(PCalendrier As String, _
     PDate As String, _
     PHeure As String, _
     PDuree As Integer, _
     PSubject As String, _
     PNotes As String, _
     PLieu As String, _
     Optional PMinutesRappel As Integer = 0)
     
    On Error GoTo Add_Err
     
    Dim objOutlook As Outlook.Application
    Dim objAppt As Outlook.AppointmentItem
    Dim olns As Outlook.NameSpace
    Dim MycalendarFolder As Outlook.MAPIFolder
    Dim MyFolder As Outlook.Items
     
    Set objOutlook = CreateObject("Outlook.Application")
    Set olns = objOutlook.GetNamespace("MAPI")
    Set MycalendarFolder = olns.GetDefaultFolder(olFolderCalendar)
    'Selectionne le calendrier
    'Selectionne le calendrier
    If PCalendrier = "" Then
    Set MyFolder = MycalendarFolder.Items
    Else
    Set MyFolder = MycalendarFolder.Folders(PCalendrier).Items
    End If
    Set objAppt = MyFolder.Add
    'Cree le rendez vous
    With objAppt
     
      If PDuree > 0 Then
      .Start = PDate & " " & PHeure
      .Duration = PDuree
      Else
      .Start = PDate
      .AllDayEvent = True
      End If
      .Subject = PSubject
      .Body = PNotes
      .Location = PLieu
      'Ajoute le rappel
      If PMinutesRappel > 0 Then
        .ReminderMinutesBeforeStart = PMinutesRappel
        .ReminderSet = True
      End If
      'Sauvegarde et ferme
      .SAVE
      .Close (olSave)
    End With
    'Libération des variables.
    Set objAppt = Nothing
    Set objOutlook = Nothing
    MsgBox "Rdv ajouté!"
    Exit Function
    'Gere les erreurs
    Add_Err:
    MsgBox "Error " & Err.Number & vbCrLf & Err.Description
    End Function

    Ma question : J'ai placé ce code dans un module, et je souhaite l'executer a partir d'un click sur un bouton.

    J'ai essayé ceci qui ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub
    Call.CreerRendezVous
    End Sub

    Çà ne marche pas....

    Please HELP

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 358
    Points : 15 453
    Points
    15 453

    Par défaut

    Bonjour.

    1. Tu vas sur ton bouton.
    2. Tu affiches ses propriétés.
    3. Tu choisis l'événement "Sur Clic"
    4. Tu choisis "Procédure Événementielle" dans l'événement.
    5. Tu cliques sur le bouton [...].
    6. Tu colles call CreerRendezVous entre le Sub et le End Sub.


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre expert
    Avatar de tee_grandbois
    Homme Profil pro
    retraité mais encore activé
    Inscrit en
    novembre 2004
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité mais encore activé

    Informations forums :
    Inscription : novembre 2004
    Messages : 1 942
    Points : 3 306
    Points
    3 306

    Par défaut

    Bonjour,

    J'ai essayé ceci qui ne fonctionne pas
    ...
    Çà ne marche pas....
    un message d'erreur ?
    aucun résultat ?
    Call.CreerRendezVous
    il n'y a pas de point entre Call et CreerRendezVous mais un espace. De plus, il y a des paramètres à renseigner et tous sauf le dernier sont obligatoires :
    PCalendrier :,nom du calendrier à utiliser dans Outlook
    PDate : Date du RDV
    PHeure : Heure du RDV
    PDuree : Durée du RDV
    PSubject : Sujet du RDV
    PNotes : Corps du message
    PLieu : lieu du RDV

    PMinutesRappelvaleur ==> pas obligatoire (= Optional) et valeur par défaut (= 0) nombre de minutes pour rappel avant le RDV.

    Le code s'utilise comme cela, avec tous les paramètres issus du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call CreerRendezVous(MyCalendrier, MyDate , MyHeure, MyDuree, MySubject, MyNotes, MyLieu, MyMinutesRappel)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    mai 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : mai 2017
    Messages : 14
    Points : 5
    Points
    5

    Par défaut

    Okay !!!

    je vais tester cà !

    Merci, je reviens pour dire si cela a marché...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    mai 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : mai 2017
    Messages : 14
    Points : 5
    Points
    5

    Par défaut

    Cela fonctionne !!

    Mais, j'ai un autre problème. Pour que cela fonctionne j'ai activé sur mon poste via VBA "Microsoft Outlook 16.0 Object Library"

    Mais, les utilisateurs de cette BDD auront Access Runtime. Comment activer cette référence ?

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 358
    Points : 15 453
    Points
    15 453

    Par défaut

    Bonjour.

    Tes références sont associées à la BD en cours donc elles vont restées.
    Le runtime va les utiliser.

    Attention pour le runtime il est impératif de gérer par code les erreurs (on error goto dans le VBA, et événement Sur Erreur des formulaire) car sinon tu vas avoir un message du genre "Access a rencontré une erreur et va fermer l'application" sans plus d'information.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    mai 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : mai 2017
    Messages : 14
    Points : 5
    Points
    5

    Par défaut

    Donc je dois créer une procédure évènementielle sur erreur pour chaque formulaire.

    Mais je mets quoi au juste ?

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    mai 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : mai 2017
    Messages : 14
    Points : 5
    Points
    5

    Par défaut

    Pour les références j'ai essayé sur un poste avec le runtime et j'ai un message d'erreur lié à outlook...

    Mais je pense savoir d'où cela provient. J'ai déclaré la ref sur mon poste Office 2016 et j'ai testé sur un poste office 2013....

    Grrrr....

    Puis autre chose de bizarre,

    Dans un formulaire, dans un champs Date, j'ai mis en valeur par défaut "=date()" cela fonctionne très bien sur mon poste, mais pas sur l'autre poste...
    Sur l'autre poste j'ai ceci dans le champs "#Nom ?"

    Rappel :

    Sur mon poste access 2016

    Sur l'autre poste

    Office 2013 mais access runtime 2016

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 358
    Points : 15 453
    Points
    15 453

    Par défaut

    Bonjour.

    Dans un formulaire, dans un champs Date, j'ai mis en valeur par défaut "=date()" cela fonctionne très bien sur mon poste, mais pas sur l'autre poste...
    Sur l'autre poste j'ai ceci dans le champs "#Nom ?"
    C'est généralement le cas quand on a une référence ou des références manquantes.
    Pour t'affranchir du problème des version dans les références, il est recommandé de décocher la référence d'utiliser un objet de type Object et de faire un CreateObjectpour l'assigner.
    Avec cela Access va utiliser la version courante quelle qu'elle soit.

    Sur l'autre poste

    Office 2013 mais access runtime 2016
    Il vaut mieux éviter les cocktails de version d'office sur un même poste.
    Si tu le fais, il est impératif d'installer les versions en croisant (de la plus vielle à la plus récente) et de vérifier où elles s'installent car il y a parfois des écrasements.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Directeur d'Exploitation
    Inscrit en
    mai 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur d'Exploitation
    Secteur : Alimentation

    Informations forums :
    Inscription : mai 2017
    Messages : 14
    Points : 5
    Points
    5

    Par défaut

    J'ai trouvé une parade qui, visiblement, fonctionne...

    Donc, j'ai pris ma base fractionnée, je l'ai exécuté avec un access 2013.

    J'ai modifier la référence pour outlook object en version office15, car sur ce poste l'office16 n'était pas installée.

    Ensuite, j'ai utilisé la BDD avec un access runtime 2016 sur ce fameux poste avec office 2013 et tout fonctionne, plus d'erreur du tout.

    Donc, j'ai conservé deux versions de la BDD (uniquement celle avec les requêtes et les formulaires) et selon le poste et sa version d'access je mettrai le bon exécutable.

    Vous en pensez quoi ?

Discussions similaires

  1. appeler une fonction depuis un bouton?
    Par lhamelin dans le forum Joomla
    Réponses: 0
    Dernier message: 07/09/2015, 08h20
  2. Réponses: 2
    Dernier message: 09/10/2014, 08h28
  3. Réponses: 2
    Dernier message: 30/12/2011, 18h50
  4. Ne pas appeler une fonction sur un évènement
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 01/06/2009, 11h32
  5. Réponses: 24
    Dernier message: 26/05/2006, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo