Créer un rdv Outlook pour chaque date d'une colonne Excel

Ok je me doute mais sa me parais un peu compliquer comme processus

mon tableau ce décomposer comme dans le fichier joint

le feuille correspond au mois la colonne A au numéro des semaines colonne b la date colonne c le jour colonne D les am et pm

je sais récupérer le nom de la feuilles active qui me donne le mois mais après pour associer la date et am ou pm je patauge un peu

pour récupérer le mois de la feuille active

je fait comme sa:

[codeDim mois As String

mois = ActiveSheet.Name][/code]

mais apres pour tous assembler date jour mois la je sais pas comment faire

activecell et offset peut il me permettre de recuperer les valeur de mes cellules?

merci de votre aide

Re bonjour,

j'ai commencer un coder un bout de script vba mon premier

 Sub tets()
 Dim mois As String
 mois = ActiveSheet.Name
 Dim titre As String
 Dim jour As Integer
 Dim periode As String
 While ActiveCell.Value <> ""
 strjour = ActiveCell.Value

     jour = ActiveCell.Offset(0, 1).Value

     periode = ActiveCell.Offset(0, 2).Value

     ActiveCell.Offset(0, 2).Value = periode

     MsgBox (jour & " " & strjour & ": c'est " & periode & "mois" & mois & titre)

     ActiveCell.Offset(1, 0).Select

 Wend

End Sub

bon sa fait pas toute a fait ce que je veux je récupère bien mes infos dans la texte box le jour en chiffre et le jour en abréviation am ou pm

ce que je n arrive pas a faire c'est mettre des variable fixe pour am et pm et insérer le titre de mon rdv sur la cellule d après

qd j aurai réussi a faire sa je pourrai essayer d intégré sa a votre script de prise de rdv

merci à tous pour votre aide au débutant...

Hello,

juste un grand merci à BrunoM45 pour vos lumières - aide - info, bref pour le gros coup de pouce sur les macros pour créer un rdv Outlook. Me suis grandement inspirée de ceux disponibles dans cette discussion pour faire la mienne alors que je n'ai que très peu de connaissances en vba.

Muriel68 a écrit :

Hello,

juste un grand merci à BrunoM45 pour vos lumières - aide - info, bref pour le gros coup de pouce sur les macros pour créer un rdv Outlook. Me suis grandement inspirée de ceux disponibles dans cette discussion pour faire la mienne alors que je n'ai que très peu de connaissances en vba.

Merci Muriel68

Ca fait toujours très plaisir

Bonjour BrunoM45,

Tout d'abord merci pour tes connaissances et l'aide que tu apportes sur le forum

Je débute sur les macros et après fait des essais par moi même, j'ai trouvé le code que tu avais réalisé pour créer des alertes dans Outlook.

J'ai pris le dernier fichier (celui pour Emoelha) et je dois dire que je suis très satisfaite du résultat mais j'ai un petit problème avec la macro "Ajour dernier RDV", elle fonctionne mais ne crée un RDV uniquement sur la dernière ligne

=> je viens de relire ton post et c'est parfaitement normal que la macro ne crée que le dernier RDV, elle est programmée pour ça ... LOL

J'ai essayé de modifier la macro en lui demandant de prendre la dernière cellule avec un commentaire oui mais j'ai lamentablement échoué (la macro se s’exécute pas)

Là je sèche, et vu mon niveau, je suis en panne d'idée, pourrais tu m'aider stp ? Ci joint mon fichier de travail

Merci beaucoup pour ton aide,

Bonne journée

17travail-macro.xlsm (22.78 Ko)

Bonjour, Est-ce possible d'adapter ta formule pour faire en sorte que si la même date reviens plusieurs fois, tous inclure dans le même rdv?

Merci

Bonjour Goldfinch86

Goldfinch86 a écrit :

Bonjour, Est-ce possible d'adapter ta formule pour faire en sorte que si la même date reviens plusieurs fois, tous inclure dans le même rdv?

Merci

Ce n'est pas une formule, mais du code

Je regarde ça

Désolé, mon erreur, comme tu peux voir je ne suis pas encore habitué au codage. J'ai une autre question en même temps. Le fichier excel sur lequel je travail est partagé entre 4 personne, le calendrier dans lequel on envoie les rdv est aussi partager avec plus d'une vingtaine de personne, mais seulement les 4 personnes qui utilise le fichier excel peuvent modifier le calendrier. Le problème est que seul moi arrive a ajouter des rdv, pour les autres, il leur apparait un message d'erreur objet introuvable.

Voici mon code

Sub AjoutRDVCalendrier()

    'déclaration des variables
    Dim DLig As Long, Lig As Long
    Dim oOutlook As Outlook.Application
    Dim oAppointment As Outlook.AppointmentItem
    Dim namespaceOutlook As Outlook.Namespace
    Dim DossierCalendrier As Outlook.MAPIFolder
    Dim DateRdv As Date, FlgRdv As Boolean

    'gestion d'erreurs
    On Error GoTo Err_Execution

    'on crée ensuite les objets
    Set oOutlook = CreateObject("Outlook.Application")
    Set namespaceOutlook = oOutlook.GetNamespace("MAPI")
    Set myTasks = namespaceOutlook.GetDefaultFolder(olFolderCalendar)
    Set myFolder = myTasks.Folders("Communications")

    'définit le dossier calendrier
    'GetDefaultFolder renvoit le calendrier du compte actif
    Set DossierCalendrier = myFolder
    'on crée un nouveau rendez-vous
   ' Avec la feuille
  With Sheets("Suivi")
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 2 To DLig
      ' Si une date de relance existe
      If .Range("A" & Lig) <> "" Then
        ' Si un RDV n'a pas déjà été créé
        If .Range("E" & Lig) <> "" Then
          ' Si le commentaire à changé
        Else
          ' Sinon, pas de RDV déjà créé
          FlgRdv = True
        End If
      Else
        ' Sinon, pas de date de relance
        FlgRdv = False
      End If
      ' Si le FLAG est à vrai on créé le RDV
      If FlgRdv Then
        DateRdv = Range("A" & Lig)
    'on renseigne ensuite les principaux paramètres

   Set oAppointment = DossierCalendrier.Items.Add

   With oAppointment
       .AllDayEvent = True
       .Start = DateRdv
           .Subject = Sheets("Suivi").Range("C" & Lig)
        If Sheets("Suivi").Range("B" & Lig) = "" Then
         'corps du texte de la réunion
           .Body = "Bonjour tout le monde, voici un résumé de la journée." & vbLf & vbLf _
           & Sheets("Suivi").Range("C" & Lig) & " : " & Sheets("Suivi").Range("D" & Lig)
        Else
           .Body = "Lot : " & Sheets("Suivi").Range("B" & Lig) & vbLf & vbLf _
           & Sheets("Suivi").Range("C" & Lig) & " : " & Sheets("Suivi").Range("D" & Lig)
        End If
           .Location = "" 'Lieu du rdv
           .ReminderSet = True  'alarme
           .Save 'on sauvegarde et ferme
        .Close (olSave)
   End With
    ' Créer le commentaire et inscrire Oui
    On Error Resume Next
        .Range("E" & Lig) = "Envoyé"
        On Error GoTo 0
      End If
    Next Lig
  End With

    'Libération des variables.
    Set oAppointment = Nothing
    Set oOutlook = Nothing

Fin_Execution:
    Exit Sub
Err_Execution:
    MsgBox Err.Description, vbExclamation
    Resume Fin_Execution
End Sub

Merci de regarder ca aussi c'est très très apprécié.

Re,

Pour moi ton problème d'ajout de RdV qui ne marche pas pour les autres vient de cette ligne :

Set myFolder = myTasks.Folders("Communications")

Sinon je suis reparti du fichier que j'avais fait à l'époque, sans tes modifications

A+

Bonjour,

merci beaucoup, mais je cherche dans le fichier pour voir ou est la modif pour ma premiere question (date identique = un seul rdv) et je trouve pas. pour la deuxième question, si les autres ont nommé aussi leur calendrier "Communications" et qu'il est aussi dans la section "Mes Calendriers" sur Outlook, c'est pas sensé fonctionné pareil? D'après le code, j'ai l'impression pourtant que rien ne cloche...Mais comme j'ai dit plus tôt, je commence et je ne cherche qu'a apprendre.

Merci Bruno

Re,

Goldfinch86 a écrit :

Bonjour,

merci beaucoup, mais je cherche dans le fichier pour voir ou est la modif pour ma premiere question (date identique = un seul rdv) et je trouve pas.

Heuuuu, j'ai dû tout changer

Option Explicit

Sub AjoutRdV1()
  Dim DLig As Long, Lig As Long
  Dim Ind As Long, TabRdv() As String
  ' Avec la feuille
  With Sheets("SuiviSimple")
    ' Dernière ligne
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    Ind = -1
    ' Pour chaque ligne
    For Lig = 2 To DLig
      ' Si une date de relance existe
      If .Range("B" & Lig) <> "" Then
        ' Si aucun RDV n'a encore été créé
        If .Range("D" & Lig) = "" Then
          ' Si la date n'exixte pas déjà dans le tableau
          If Not EstDansTab(TabRdv, .Range("B" & Lig)) Then
            Ind = Ind + 1
            ReDim Preserve TabRdv(2, Ind)
            TabRdv(0, Ind) = .Range("A" & Lig)
            TabRdv(1, Ind) = .Range("B" & Lig)
            TabRdv(2, Ind) = .Range("C" & Lig)
          Else
            ' Sinon ajouter juste le texte
            Ind = OuDansTab(TabRdv, .Range("B" & Lig))
            TabRdv(2, Ind) = TabRdv(2, Ind) & Chr(10) & .Range("C" & Lig)
          End If
        ' Si RDV déjà créé, mais commentaire <> du contenu de la cellule
        ElseIf .Range("D" & Lig).Comment.Text <> .Range("C" & Lig).Value Then
          If Not EstDansTab(TabRdv, .Range("B" & Lig)) Then
            Ind = Ind + 1
            ReDim Preserve TabRdv(2, Ind)
            TabRdv(0, Ind) = .Range("A" & Lig)
            TabRdv(1, Ind) = .Range("B" & Lig)
            TabRdv(2, Ind) = .Range("C" & Lig)
          Else
            Ind = OuDansTab(TabRdv, .Range("B" & Lig))
            TabRdv(2, Ind) = TabRdv(2, Ind) & Chr(10) & .Range("C" & Lig)
          End If
        End If
        ' Créer le commentaire et inscrire Oui
        On Error Resume Next
        .Range("D" & Lig) = "Oui"
        .Range("D" & Lig).Comment.Delete
        .Range("D" & Lig).AddComment Text:=.Range("C" & Lig).Value
        On Error GoTo 0
      End If
    Next Lig
  End With
  ' Lancer la création des RDV
  If Ind >= 0 Then
    Call CréerRdV1(TabRdv)
    MsgBox "Le/les RDV a/ont été créé(s)", vbInformation, "C'EST FAIT..."
  Else
    MsgBox "Aucun RDV supplémentaire à créer", vbInformation, "OUPS..."
  End If
End Sub

Sub CréerRdV1(MonTab() As String)
  Dim OutObj As Object, OutAppt As Object
  Dim DateRdv As Date, FlgRdv As Boolean
  Dim HRdV As Date, Durée As Integer, Sujet As String
  Dim iTab As Long
  ' Créer une instance d'Outlook
  Set OutObj = CreateObject("outlook.application")
  ' Récupérer les valeurs par défaut
  HRdV = Sheets("Params").Range("HeureRDV").Value
  Durée = Sheets("Params").Range("DuréeRDV").Value
  ' En cas de d'erreur
  On Error GoTo FinBoucle
  ' Pour chaque ligne du tableau
  For iTab = LBound(MonTab) To UBound(MonTab)
    ' Créer le sujet du RDV
    Sujet = "Rappeler " & MonTab(0, iTab) & " pour " & MonTab(2, iTab)
    Set OutAppt = OutObj.CreateItem(1)
    With OutAppt
      .Subject = Sujet
      .Start = CDate(MonTab(1, iTab)) & " " & HRdV
      .Duration = Durée
      .ReminderSet = True
      .Save
    End With
  Next iTab
FinBoucle:
End Sub

Sub AjoutRdV2()
  Dim DLig As Long, HRdV As Date, Lig As Long
  Dim Ind As Long, TabRdv() As String
  ' Avec la feuille
  With Sheets("SuiviSimple")
    ' Dernière ligne
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    Ind = -1
    '
    ' Vérifier la conformité des heures de RDV
    On Error Resume Next
    For Lig = 2 To DLig
      HRdV = .Range("C" & Lig).Value
      If Err.Number <> 0 Then
        Err.Clear
        MsgBox "L'heure de [C" & Lig & "] doit être au format [hh:mm] exemple 08:00", vbCritical, "OUPS..."
        On Error GoTo 0
        Exit Sub
      End If
    Next Lig
    On Error GoTo 0
    '
    ' Si tout est OK on passe à la suite
    For Lig = 2 To DLig
      ' Si une date de RDV existe ainsi qu'un heure
      If .Range("B" & Lig) <> "" And .Range("C" & Lig) <> "" Then
        ' Si aucun RDV n'a encore été créé
        If .Range("F" & Lig) = "" Then
          ' Si la date n'est pas encore dans le tableau
          If Not EstDansTab(TabRdv, .Range("B" & Lig)) Then
            Ind = Ind + 1
            ReDim Preserve TabRdv(4, Ind)
            TabRdv(0, Ind) = .Range("A" & Lig)
            TabRdv(1, Ind) = .Range("B" & Lig)
            TabRdv(2, Ind) = .Range("C" & Lig)
            TabRdv(3, Ind) = .Range("D" & Lig)
            TabRdv(4, Ind) = .Range("E" & Lig)
          Else
            Ind = OuDansTab(TabRdv, .Range("B" & Lig))
            TabRdv(4, Ind) = TabRdv(4, Ind) & Chr(10) & .Range("E" & Lig)
          End If
        ElseIf .Range("F" & Lig).Comment.Text <> .Range("F" & Lig).Value Then
          If Not EstDansTab(TabRdv, .Range("B" & Lig)) Then
            Ind = Ind + 1
            ReDim Preserve TabRdv(4, Ind)
            TabRdv(0, Ind) = .Range("A" & Lig)
            TabRdv(1, Ind) = .Range("B" & Lig)
            TabRdv(2, Ind) = .Range("C" & Lig)
            TabRdv(3, Ind) = .Range("D" & Lig)
            TabRdv(4, Ind) = .Range("E" & Lig)
          Else
            Ind = OuDansTab(TabRdv, .Range("B" & Lig))
            TabRdv(4, Ind) = TabRdv(4, Ind) & Chr(10) & .Range("E" & Lig)
          End If
        End If
        ' Créer le commentaire et inscrire Oui
        On Error Resume Next
        .Range("F" & Lig) = "Oui"
        .Range("F" & Lig).Comment.Delete
        .Range("F" & Lig).AddComment Text:=.Range("E" & Lig).Value
        On Error GoTo 0
      End If
    Next Lig
  End With
  ' Lancer la création des RDV
  If Ind >= 0 Then
    Call CréerRdV2(TabRdv)
    MsgBox "Le/les RDV a/ont été créé(s)", vbInformation, "C'EST FAIT..."
  Else
    MsgBox "Aucun RDV supplémentaire à créer", vbInformation, "OUPS..."
  End If
End Sub

Sub CréerRdV2(MonTab() As String)
  Dim OutObj As Object, OutAppt As Object
  Dim DateRdv As Date, FlgRdv As Boolean
  Dim HRdV As Date, Durée As Integer, Sujet As String
  Dim iTab As Long
  ' Créer une instance d'Outlook
  Set OutObj = CreateObject("outlook.application")
  ' Récupérer les valeurs par défaut
  HRdV = Sheets("Params").Range("HeureRDV").Value
  Durée = Sheets("Params").Range("DuréeRDV").Value
  ' En cas de d'erreur
  On Error GoTo FinBoucle
  ' Pour chaque ligne du tableau
  For iTab = LBound(MonTab) To UBound(MonTab)
    ' Créer le sujet du RDV
    Sujet = "Rappeler " & MonTab(0, iTab) & " pour " & MonTab(4, iTab)
    Set OutAppt = OutObj.CreateItem(1)
    With OutAppt
      .Subject = Sujet
      .Start = CDate(MonTab(1, iTab)) & " " & MonTab(2, iTab)
      .Duration = MonTab(3, iTab)
      .ReminderSet = True
      .Save
    End With
  Next iTab
FinBoucle:
End Sub

Plus 2 fonctions

Option Explicit

Function EstDansTab(MonTab, Valeur As String) As Boolean
  Dim iTab As Long
  EstDansTab = False
  On Error GoTo Fin
  For iTab = LBound(MonTab) To UBound(MonTab)
    If MonTab(1, iTab) = Valeur Then EstDansTab = True: Exit For
  Next
Fin:
End Function

Function OuDansTab(MonTab, Valeur As String) As Long
  Dim iTab As Long
  OuDansTab = 0
  For iTab = LBound(MonTab) To UBound(MonTab)
    If MonTab(1, iTab) = Valeur Then OuDansTab = iTab: Exit For
  Next
End Function
Goldfinch86 a écrit :

pour la deuxième question, si les autres ont nommé aussi leur calendrier "Communications" et qu'il est aussi dans la section "Mes Calendriers" sur Outlook, c'est pas sensé fonctionné pareil? D'après le code, j'ai l'impression pourtant que rien ne cloche...Mais comme j'ai dit plus tôt, je commence et je ne cherche qu'a apprendre.

Logiquement cela devrait fonctionner, mais attention tout de même, il faut qu'Outlook soit ouvert

A+

Merci vraiment beaucoup. Maintenant je vais essayer de le comprendre pour l'adapter, la tâche s'annonce difficile, mais merci vraiment de m'avoir débloquer, je ne savais plus quoi faire.

J'ai essayer ton fichier sans rien changer et quand il y a deux fois la même date ca renvoie une erreur a cette ligne "TabRdv(Ind, 0) = .Range("A" & Lig)"

          If Not EstDansTab(TabRdv, .Range("B" & Lig)) Then
            Ind = Ind + 1
            TabRdv(Ind, 0) = .Range("A" & Lig)
            TabRdv(Ind, 1) = .Range("B" & Lig)
            TabRdv(Ind, 2) = .Range("C" & Lig)
          Else

Si il y a une seul fois la date tout fonctionne.

J'essais aussi de comprendre ce que représente ces 2 variable

Dim Ind As Long, TabRdv(0, 2) As String

Désolé encore je t'en demande beaucoup.

Bonsoir,

Désolé, je ne l'avais pas testé correctement et je me suis encore planté dans le sens du tableau

En même temps, j'ai repensé à ton problème sur le fait que le code fonctionne sur ton poste mais pas sur les autres.

Le problème peut venir du fait que vous n'ayez pas les mêmes versions

Je n'ai donc pas mis de référence à Microsoft Outlook 2016 et déclaré les variables pour du Late Binding

https://support.microsoft.com/en-us/help/245115/using-early-binding-and-late-binding-in-automation

Voici donc le fichier adapté à ton besoin à essayer sur tous les postes

A+

Wow merci énormément!!!

Salut Bruno, j'ai un problème lorsque l'évenement se créer et combine plusieurs journées.

Voici ce que je devrait voir :

Bonjour tout le monde, voici un résumé de la journée.

Lot : 2017-11-28

Date 1 du 28/11 : Designation : 43067 Date 1 du 28/11

Date 2 du 28/11 : Designation : 43067 Date 2 du 28/11

Et voici ce que je vois :

Bonjour tout le monde, voici un résumé de la journée.

Lot : 2017-11-28

Date 1 du 28/11

Date 2 du 28/11 : Designation : 43067 Date 1 du 28/11

Designation : 43067 Date 2 du 28/11

Je cherche et je cherche, mais je ne trouve pas quoi changer.

Je me doute que le code a changer ce trouve dans cette partie :

          If Not EstDansTab(TabRdv, .Range("A" & Lig)) Then
            Ind = Ind + 1
            ReDim Preserve TabRdv(3, Ind)
            TabRdv(0, Ind) = .Range("A" & Lig)
            TabRdv(1, Ind) = .Range("B" & Lig)
            TabRdv(2, Ind) = .Range("C" & Lig)
            TabRdv(3, Ind) = .Range("D" & Lig)
          Else
            ' Sinon ajouter juste le texte
            Ind = OuDansTab(TabRdv, .Range("A" & Lig))
            TabRdv(1, Ind) = TabRdv(1, Ind) & Chr(10) & .Range("B" & Lig)
            TabRdv(2, Ind) = TabRdv(2, Ind) & Chr(10) & .Range("C" & Lig) 
            TabRdv(3, Ind) = TabRdv(3, Ind) & Chr(10) & .Range("D" & Lig) 
          End If

J'essais et essais, mais je n'arrive pas a le mettre dans l'ordre que je souhaite.

Merci Bruno à l'avance.

Et j'ai essayé sur les autres postes, cela m'écrit qu'il est impossible de trouver un objet... je ne sais vraiment pas quoi faire pour montrer exactement le chemin a prendre pour retrouver le bon calendrier.

Bonjour, je sais pas si quelqu'un peut m'aider avec ma dernière question. Je suis toujours dans l'impasse. Merci d'avance

Bonjour Goldfinch86 et bonne année 2018

Il serait bien de nous mettre un fichier avec ta structure actuelle et un exemple, ce serait plus simple dans la compréhension

Dans l'attente

Bonjour Bruno et bonne année à toi aussi!

Je n'ai rien changé au fichier que tu as joint le 23 novembre (Goldfinch86_RdvCommunications.xlsm). Je n'ai pas accès au fichier pour le moment, mais c'est exactement le même.

Merci, sinon dès lundi je pourrai te l'envoyer.

Rechercher des sujets similaires à "creer rdv outlook chaque date colonne"