IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Créer un rdv Outlook avec date variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut Créer un rdv Outlook avec date variable
    Hello
    Petit complément à la discussion : http://www.developpez.net/forums/d14...r-rdv-outlook/

    je voudrais que ma date du rdv soit modulable

    J'essaye un mais cela ne passe pas .....

    Tu aurais une idée géniale comme hier ????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Start = "#" & Cells(I, 6).Value & " 2:30:00 PM#"

    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
    Sub NouveauRDV_Calendrier()
    'Nécessite d'activer la référence "Microsoft Outlook xx.x Object Library"
    Dim OkApp As New Outlook.Application
    Dim Rdv As Outlook.AppointmentItem
    Dim I As Integer
    Dim datemod As Variant
    With Worksheets("RDV OUTLOOK")
     
    j = .Range("A2").End(xlDown).Row
     
     
    For I = 2 To j
    Set Rdv = OkApp.CreateItem(olAppointmentItem)
    If .Cells(I, 8) = "" Then
    .Cells(I, "f") = Format(.Cells(I, "e"), "mm-dd-yyyy")
     
     
     
    With Rdv
        .MeetingStatus = olMeeting
        .Subject = "DOSSIER - " & Cells(I, 1).Value & " - " & Cells(I, 2).Value & " - " & Cells(I, 3).Value 'Sujet de la tâche
        .Body = Cells(I, 4).Value 'Corps de la Relance
        .Location = "Chez wam"
        '.Start = #1/5/2015 2:30:00 PM#         ' Attention : format mois/jours/année
        .Start = "#" & Cells(I, 6).Value & " 2:30:00 PM#"
        .Duration = 30 'minutes
        .Categories = "EMPLOI"
        .Save
    End With
     
     
     
     
     .Cells(I, 8) = "OUI"
    Set OkApp = Nothing
    End If
    Next I
     
     
    End With
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,
    Il manque encore un . devant ton Cell ...

    ensuite que contient ta cellule ? (I, 6)


    si elle contient la date à traiter, il te faut formater celle-ci au regard de ta discussion sous la forme mois/jour/année ?

    voir utilisation de la fonction Format

  3. #3
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Hello

    Merci d'avoir crée ce nouveau post !!! ;-)
    C'est mieux de séparer les sujets en effet....

    (I, 6) contient la date (modifiable de part la boucle)

    je la format en date avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(I, "f") = Format(.Cells(I, "e"), "mm-dd-yyyy")
    --> La colonne E devient une date américaine en colonne F

    --> cela réglé


    Mais le soucis est que le formalisme imposé est :

    Je vois pas comment générer une date comme cela .....



    Bonne soirée

    Seb

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Attention il ne faut pas confondre la date au sens excel ( voir : Comprendre et gérer les dates sous Excel et en VBA ) ... et une chaîne de caractère représentant ta date ..

    utilise format directement en VBA ne passe pas par une cellule intermédiaire inutile...


    ton code start devrait être du genre (j'ai pas d'excel sous la main pour tester..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Start = "#" & Format(.Cells(I, "e"), "m/d/yyyy") & " 2:30:00 PM#" 

  5. #5
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    J'ai encore du mal avec les dates...
    Je vais lire ton adresse qui m'a l'air super complet ;-)

    J'ai testé ton code, il me renvoie une erreur 438 propriété ou méthode non gérée par cet objet sur la ligne, ton code!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Start = "#" & Format(.Cells(I, "e"), "m/d/yyyy") & " 2:30:00 PM#"
    Je crois que c'est pas loin !!!!

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    C'est peut-être pas loin, mais c'est pas compliqué de mettre un espion sur "#" & Format(.Cells(I, "e"), "m/d/yyyy") & " 2:30:00 PM#" et de regarder dans la fenêtre espions pour voir le résultat. C'est décourageant de subir tes questions. Aucun effort, aucune débouillardise.

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    J'avais pas vu cela semble à un problème d'imbrication de With ...

    sort le calcul de ta chaine start,en passant par une variable chaine intermédiaire par exemple, de ton With Rdv...

  8. #8
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    @ clementmarcotte :
    tu as raison je me suis laissé porté sur ce problème ....mea-culpa

    En ce qui concerne le volet espion, j'avoue ne l'avoir jamais utilisé

    aprés test la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#" & Format(.Cells(I, "e"), "m/d/yyyy") & " 2:30:00 PM#"
    renvoie :
    expression non définie dans le contexte / empty
    Donc si je comprends bien, il ne trouve pas de valeur à renvoyer --> donc bug !


    @ bbil

    C'est ce que je teste actuellement !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     depart = Format(Cells(I, "5"), "m/d/yyyy")
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Start = depart & " 2:30:00 PM"

    Je teste et je revient vers vous dans la soirée

  9. #9
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Bon j'ai remanier le code


    en me basant sur ce site

    mais je peux le sortir de mon with .... sinon comment intégrer la boucle dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    depart = Format(Cells(I, 5), "m/d/yyyy")
    ou alors je double ma boucle mais c'est pas trés optimisé ......



    Voila le code final mais plus rien ne se passe....
    il n'y a plus d'action en direction Outlook..... chelou

    Le contrôle pas à pas F8 ne renvoi aucunes erreurs .....

    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
    Sub NouveauRDV_Calendrier()
    'Nécessite d'activer la référence "Microsoft Outlook xx.x Object Library"
    Dim OkApp As New Outlook.Application
    Dim Rdv As Outlook.AppointmentItem
    Dim I As Integer
    Dim j As Integer
    Dim depart As Date
     
    With Worksheets("RDV OUTLOOK")
     
    j = .Range("A2").End(xlDown).Row
     
     
    For I = 2 To j
    Set Rdv = OkApp.CreateItem(olAppointmentItem)
    If .Cells(I, 8) = "" Then
    .Cells(I, "f") = Format(.Cells(I, "e"), "mm-dd-yyyy")
     
     
    depart = Format(Cells(I, 5), "m/d/yyyy")
     
     
    With Rdv
        .MeetingStatus = olMeeting
        .Subject = "DOSSIER - " & Cells(I, 1).Value & " - " & Cells(I, 2).Value & " - " & Cells(I, 3).Value 'Sujet de la tâche
        .Body = Cells(I, 4).Value 'Corps de la Relance
        .Location = "Chez wam"
        .Start = depart & " 2:30:00"
        .Duration = 30 'minutes
        .Categories = "EMPLOI"
        .Save
    End With
     
     
     
     
     .Cells(I, 8) = "OUI"
    Set OkApp = Nothing
    End If
    Next I
     
     
    End With
    End Su

  10. #10
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Pourquoi ?
    je t'ai parlé de chaîne pas de date !


    supprime carrément ton Whit RDV ... en remplaçant les points "." concernées par "Rdv." par exemple Rdv.Start ...

    il manque toujours des points devant tes Cells ! tu ne dois JAMAIS utiliser Cells sans préciser la feuille concernée ..

    ou sont passé les "#" ?

  11. #11
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Hello,
    désolé je t'ais mal compris !

    J'ai déplacé la macro dans la feuille et plus dans un module
    les deux with ont été supprimé et j'ai rajouté les rdv.


    du coup j'ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim depart As String
    -------------------------------------------
    depart = "#" & .Cells(I, "f") & " 2:30:00 PM#"
    Ce qui est bizarre c'est que
    Rdv.Start me renvoie (volet espion) la valeur 07/01/2015 10:30:00 (ce qui est ok) mais il ya une incompatibilité de type 13 "incompatibilité de type"


    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
    Sub NouveauRDV_Calendrier()
    'Nécessite d'activer la référence "Microsoft Outlook xx.x Object Library"
    Dim OkApp As New Outlook.Application
    Dim Rdv As Outlook.AppointmentItem
    Dim I As Integer
    Dim depart As String
     
    With Worksheets("RDV OUTLOOK")
     
    j = .Range("A2").End(xlDown).Row
     
     
    For I = 2 To j
     
    Set Rdv = OkApp.CreateItem(olAppointmentItem)
     
     
    .Cells(I, "f") = Format(.Cells(I, "e"), "m/d/yyyy")
     
    depart = "#" & .Cells(I, "f") & " 2:30:00 PM#"
     
    If .Cells(I, 8) = "" Then
     
        Rdv.MeetingStatus = olMeeting
        Rdv.Subject = "DOSSIER - " & .Cells(I, 1).Value & " - " & .Cells(I, 2).Value & " - " & .Cells(I, 3).Value 'Sujet de la tâche
        Rdv.Body = .Cells(I, 4).Value 'Corps de la Relance
        Rdv.Location = "Chez wam"
        'Rdv.Start = #1/5/2015 2:30:00 PM#         ' Attention : format mois/jours/année
        Rdv.Start = depart         ' Attention : format mois/jours/année
        Rdv.Duration = 30 'minutes
        Rdv.Categories = "EMPLOI"
        Rdv.Save
     
     
     
     
     .Cells(I, 8) = "OUI"
    Set OkApp = Nothing
    End If
    Next I
     
     
    End With
    End Sub
    Fichiers attachés Fichiers attachés

  12. #12
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,
    Pourquoi as tu supprimé Format !!!

  13. #13
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Ben en fait je l'ai pas réellement supprimé

    Je l'utilise en colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(I, "f") = Format(.Cells(I, "e"), "m/d/yyyy")
    et je fait référence à F
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    depart = "#" & .Cells(I, "f") & " 2:30:00 PM#"
    En 2 étape pas forcement nécessaire je reconnais

  14. #14
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Petit Rajout :

    Ce que je trouve bizarre c'est que l'a fenêtre espion renvoie des valeurs différentes
    c'est chelou

    Nom : Capture.JPG
Affichages : 953
Taille : 23,0 Ko

  15. #15
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    Il n'y as rien de bizarre , je t'ais écris plus haut de ne pas passer par une cellule excel intermédiaire mais tu veux absolument le faire ...

    si tu n'arrive pas à générer ta date sous forme de chaîne envoi directement la valeur de ta cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rdv.Start = .Cells(I, "e")

  16. #16
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Effectivement cela marche nikel avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rdv.Start = .Cells(I, "e") & " 14:00"
    c'est vrai que comme je ne suis pas à l'aise avec les dates..... je fais n'importe quoi

    Voici le code final

    Un grand merci pour la patience !!!!!

    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
    Sub NouveauRDV_Calendrier()
    'Nécessite d'activer la référence "Microsoft Outlook xx.x Object Library"
    Dim OkApp As New Outlook.Application
    Dim Rdv As Outlook.AppointmentItem
    Dim I As Integer
     
     
    With Worksheets("RDV OUTLOOK")
     
    j = .Range("A2").End(xlDown).Row
     
     
    For I = 2 To j
     
    Set Rdv = OkApp.CreateItem(olAppointmentItem)
     
     
    .Cells(I, "f") = Format(.Cells(I, "e"), "m/d/yyyy")
     
     
    If .Cells(I, 8) = "" Then
     
        Rdv.MeetingStatus = olMeeting
        Rdv.Subject = "DOSSIER - " & .Cells(I, 1).Value & " - " & .Cells(I, 2).Value & " - " & .Cells(I, 3).Value 'Sujet de la tâche
        Rdv.Body = .Cells(I, 4).Value 'Corps de la Relance
        Rdv.Location = "Chez wam"
        Rdv.Start = .Cells(I, "e") & " 14:00"
        Rdv.Duration = 30 'minutes
        Rdv.Categories = "EMPLOI"
        Rdv.Save
     
     
     
     
     .Cells(I, 8) = "OUI"
    Set OkApp = Nothing
    End If
    Next I
     
     
    End With
    End Sub
    Fichiers attachés Fichiers attachés

  17. #17
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par GADENSEB Voir le message
    Effectivement cela marche nikel avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rdv.Start = .Cells(I, "e") & " 14:00"
    c'est vrai que comme je ne suis pas à l'aise avec les dates..... je fais n'importe quoi

    ...
    je confirme, je comprends pas pourquoi tu est venu rajoute ton & "14:00" ... , ! .Cells(I,"e") est censé être une Date ( type Date...) pourquoi viens tu m'y coller une chaîne de caractère avec ton "14:00" ...

    mais si cela marche... c'est que VBA est gentil avec toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer meeting en outlook avec javascript
    Par alain007 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2011, 17h54
  2. Réponses: 18
    Dernier message: 12/10/2011, 20h27
  3. Créer une fonction avec une variable
    Par Ricou13 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/01/2007, 00h51
  4. Créer une Tâche Outlook avec ASP
    Par Hamdi dans le forum ASP
    Réponses: 3
    Dernier message: 04/04/2006, 18h00
  5. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 20h38

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