Créer un rendez vous Outlookà partir d'un tableau Excel

Bonjour à tous,

Débutante en codage, je m'inspire très grandement de ce forum depuis quelques temps. J'y ai d'ailleurs trouvé un code qui à l'air hyper pratique afin de gérer mes études de stabilités et je l'ai modifié en fonction de mes besoins.

J'ai donc un code qui est censé me créer un rdv outlook pour chaque nouvelle ligne d'échantillon à la date de la colonne " A sortir le".

Sauf que :

- Parfois ca marche nickel et parfois ca n'affiche pas dans mon calendrier (mais ca met bien le commentaire oui)

- Quand je clique plusieurs fois (plus de 2 fois) sur "créer rappels", de nouveaux rappels se créent à partir de la dernière ligne malgré le commentaire.

- Je souhaiterai que le fameux rdv outlook apparaisse en "disponible" et non pas en "occupé"

Auriez-vous une idée d'où mes problèmes peuvent venir ? Je commence à m'arracher les cheveux..

Merci

16suivi-stab-2.xlsm (59.44 Ko)

Bonjour Lolie8106 et

Pour moi vos 2 premiers problèmes viennent des colonnes de test

' Si une date de sortie existe
'If .Range("B" & Lig) <> "" Then  ' MAUVAISE COLONNE

Mauvaise colonne à priori, c'est plutôt

If .Range("G" & Lig) <> "" Then

Pour la colonne de commentaire, je ne sais pas ce que vous voulez faire

' Si le commentaire a changé
If .Range("I" & Lig).Comment.Text <> .Range("C" & Lig).Value Then

Pour ce qui est du RDV "disponible", je ne connais pas la propriété qui le permet, je regarde si je trouve

A+

Bonjour,

Merci pour votre aide !

J'ai bien changé la ligne mais ca ne résoud pas mes problèmes..

Les lignes 2 et 4 refusent de créer des rdv... et si je reclique sur mon bouton, la ligne 6 se multiplie. Je ne comprends vraiment pas pourquoi....

Pour "rappels" je voulais creer une colonne "réponse" qui affiche automatiquement un oui lorsque la macro a déjà été appliquée afin justement de ne pas avoir de doublons comme c'est le cas pour ma ligne 6.. Mais finalement, que je mette oui ou rien j'ai l'impression que ca fait le même effet.

Peut-être que je m'y prend mal ?

J'avoue ne plus trop savoir dans quelle direction partir..

Merci pour votre temps !

Re,

C'était un joli travail personnel, mais voici le code complètement modifié car vous utilisé un TS (Tableau Structuré)
et aucun besoin d'inscrire un commentaire et de le vérifier

Vous avez en prime quelques explications supplémentaires

Option Explicit

' Constantes utilisées dans le code et qui existent quand on coche la référence
Const olAppointmentItem As Integer = 1
Const olNonMeeting As Integer = 0

' On parle d'Early Binding (Liaison anticipée) lorsque la variable objet est déclarée dans un type objet précis.
' Il faut dans ce cas cocher la référence : Microsoft Outlook XX.0 Object Library
'
' On parle de Late Binding (Laison tardive) lorsque la variable objet est dclarée en tant qu'Object.
' Pas besoin de cocher la référence, pas de problème de compatibilité entre différentes versions

Sub AjoutRV()
  ' Variables objet
  Dim Sht As Worksheet
  'Dim Outobj As Outlook.Application ' Early binding
  Dim Outobj As Object  ' Late binding
  'Dim outappt As Outlook.AppointmentItem  ' Early binding
  Dim OutAppt As Object ' Late binding
  ' Autres variable
  Dim DLig As Long, Lig As Long
  Dim DateRdv As String

  ' Définir la feuille de travail
  Set Sht = ThisWorkbook.Sheets("Suivi")
  ' Créer une instance d'Outlook
  Set Outobj = CreateObject("outlook.application")
  ' Comme il s'agit d'un Tableau structuré, on peut appeler la colonne avec
  ' Range("Tableau2[A sortir le]")
  ' Dernière ligne du TS
  DLig = Sht.Range("Tableau2[Date début test]").Rows.Count
    ' Pour chaque ligne
    For Lig = 1 To DLig
      ' Vérifier si existe date de sortie, sinon passer à la ligne suivante
      DateRdv = Sht.Range("Tableau2[A sortir le]").Cells(Lig)
      If DateRdv = "" Then GoTo SuiteLigne
      ' Vérifier si RDV pas déjà créé, sinon on passe à la ligne suivante
      If Sht.Range("Tableau2[Rappel Outlook créé]").Cells(Lig) <> "" Then GoTo SuiteLigne
      ' Si tout est ok on peut créer une instance de RDV
      Set OutAppt = Outobj.CreateItem(olAppointmentItem)
      ' Inscrire les paramètres de RDV
      With OutAppt
        .Subject = "Sortir " & Sht.Range("Tableau2[Echantillon]").Cells(Lig) & " à " & Sht.Range("Tableau2[Condition]").Cells(Lig)
        .Start = DateRdv & " 09:00"
        .Duration = 5
        .ReminderSet = True
        .Save
      End With
      ' Inscrire Oui pour RDV créé
      Sht.Range("Tableau2[Rappel Outlook créé]").Cells(Lig).Value = "Oui"

SuiteLigne:
    Set OutAppt = Nothing ' effacer la variable objet avant de la recréer
    ' On continue
    Next Lig
  ' Effacer tout le reste
  Set OutAppt = Nothing: Set Outobj = Nothing: Set Sht = Nothing
End Sub

Voici le fichier

A tester bien entendu

A+

Bonjour,

Désolée je n'ai pas eu le temps de revenir depuis hier..

Ca marche nickel !!!! Merci beaucoup !!!

Je vais étudier cela attentivement !

Bonne soirée !!

Rechercher des sujets similaires à "creer rendez outlooka partir tableau"