Modification Macro envoi invitation
bonjour a tous
j'ai une macro qui envoi une demande de rendez vous via excel dans le calendrier.
Mais il semblerais que le fichier ICS joint soit bloquer dans le calendrier avec la syncronisation vers mon téléphone.
y aurais t'il un moyen denregistrer ce rendez vous sans le fichier ICS.
voici ma macro
Sub mail()
' ===========
' paramétrage
Const col_date = 2 ' numéro des colonnes où se trouvent les informations
Const col_debut = 3
Const col_fin = 4
Const col_action = 6 ' servira de test (envoi fichier .ics si vide), sinon mémorise l'action
Const titre = "Réservation Formation Guide-File (GF)- Serre-file (SF) - Equipier de Première Intervention (EPI)"
Const texte = "Nouvelle Formation enregistree dans le fichier. Ouvrir la piece jointe puis cliquer sur enregistrer & fermer "
Const destinataire = "toto@gmail.com" ' le(s) destinataire(s) de ces invitations"
' fin paramétrage
' ===============
Dim messagerie As Object
Dim email As Object
Dim cel As Object
Dim chemin As String
chemin = Environ("temp")
Set messagerie = CreateObject("Outlook.Application")
With ActiveSheet
For Each cel In .Range("A3:" & "A" & .Range("A" & Application.Rows.Count).End(xlUp).Row)
If cel.Value <> "" And cel.Offset(0, -1 + col_action).Value = "" Then
If cel.Offset(0, -1 + col_date) < Now() Then
cel.Offset(0, -1 + col_action) = "date échue"
ElseIf cel.Offset(0, -1 + col_debut) = "" Or cel.Offset(0, -1 + col_fin) = "" Then
cel.Offset(0, -1 + col_action) = ""
Else
Close #1
Open chemin & "\invitation.ics" For Output As #1
Print #1, "BEGIN:VCALENDAR"
Print #1, "BEGIN:VEVENT"
Print #1, "DTSTART:" & Application.Text(cel.Offset(0, -1 + col_date), "YYYYMMDD") & "T" & Application.Text(cel.Offset(0, -1 + col_debut), "HHMMSS") ' & "Z"
Print #1, "DTSTAMP:" & Application.Text(Now(), "YYYYMMDD") & "T" & Application.Text(Now(), "HHMMSS") ' & "Z"
Print #1, "DTEND:" & Application.Text(cel.Offset(0, -1 + col_date), "YYYYMMDD") & "T" & Application.Text(cel.Offset(0, -1 + col_fin), "HHMMSS") ' & "Z"
Print #1, "LOCATION;ENCODING=QUOTED-PRINTABLE:" & cel.Value
Print #1, "UID:"
Print #1, "SUMMARY;ENCODING=QUOTED-PRINTABLE:" & titre
Print #1, "DESCRIPTION;ENCODING=QUOTED-PRINTABLE:" & texte
Print #1, "PRIORITY:3"
Print #1, "SEQUENCE:0"
Print #1, "BEGIN:VALARM"
Print #1, "TRIGGER:-PT30M"
Print #1, "ACTION:DISPLAY"
Print #1, "DESCRIPTION:Rappel " & titre
Print #1, "END:VALARM"
Print #1, "END:VEVENT"
Print #1, "END:VCALENDAR"
Close #1
Set email = messagerie.CreateItem(0)
With email
.To = destinataire
.Subject = titre
.body = texte
.Attachments.Add chemin & "\invitation.ics"
.send
End With
Set email = Nothing
cel.Offset(0, -1 + col_action).Value = "Demande Envoyer par " & Application.UserName & " le " & Application.Text(Now(), "DD/MM/YYYY")
End If
End If
Cells(cel.Row + 1, 1).Select
Next cel
End With
Set messagerie = Nothing
On Error Resume Next
Kill chemin & "\invitation.ics"
End Sub
Merci de votre aide
Bonjour reinruof77
Tout dépend si ton téléphone est synchronisé avec ton Outlook ou pas !?
A+
Bonjour BrunoM45.
Mon calendrier est bien synchroniser car tout mes autre Rdv je les retrouves bien.
Il n'y as que celui ci ou j'ai une erreur.
L'erreur exacte est "la synchronisation d'un fichier n'a pas pu être établie".
Et en complément j'ai ce rdv.
J'ai essayé avec plusieurs logiciels. Sur mon téléphone mais cela ne fonctionne pas.
Ce Rdv reste bloquer à la synchronisation.
Merci de ton aide.
Cordialement
Re,
Alors pour moi, ta façon de faire est une très vieille méthode il y a bien plus simple
Sub RappelOutlook()
' Ajouter un nouveau rendez-vous.
Dim OutObj As Object, OutAppt As Object
Dim Lig As Long, Sujet As String, Détail As String
Dim Vdate As String, Heure As String, HTemp As String
Dim Delai As Integer, Rappel As Single
' Récupérer les paramètres pour OUTLOOK
Delai = 15 : Rappel = 0,5
' Ligne sur la feuille
Lig = Selection.Row
Sujet = "Rappel pour le client : " & Range("D" & Lig).Value & "-" & Range("C" & Lig).Value
' Récupérer la date de rappel sur la feuille
Vdate = Range("O" & Lig).Value
On Error Resume Next
' Heure de rappel
Heure = "09:30:00")
' Demander l'heure
HTemp = InputBox("A qu'elle heure voulez-vous faire le rappel (HH:MM) ?", "HEURE de RAPPEL ...", Heure)
If HTemp <> "" And HTemp <> Heure Then
If InStr(1, HTemp, ":") > 0 Then Heure = HTemp
End If
' Délai de la période 1 heure avant
Heure = Format(Heure, "hh:mm:ss")
On Error GoTo 0
' Créer l'instance OUTLOOK
Set OutObj = CreateObject("outlook.application")
' Créer l'instance pour le RDV
Set OutAppt = OutObj.CreateItem(1) ' olAppointmentItem
' Si tout est OK, on créé un RDV
With OutAppt
.Start = Vdate & " " & Heure
.Duration = Delai
.Location = "Montargis"
.ReminderMinutesBeforeStart = Rappel * 60 ' rappeler 8 heure avant
.ReminderSet = True
.Subject = Sujet
.Body = Détail
'.MeetingStatus = olMeeting
'.OptionalAttendees = "titi@adm.co.ma" 'participants optionnel à la réunion
' Participant(s) obligatoire(s)
'.RequiredAttendees = "DestOutlook"
'.Send
.Save
End With
' Libérez la variable objet Outlook.
Set OutObj = Nothing
Set OutAppt = Nothing
' Petit message
MsgBox "Le Rendez-vous à bien été ajouté ! ", vbInformation, "OK ..."
End Sub
A modifier et améliorer selon tes besoins
A+
Bonjour BrunoM45
Deja désoler de ne repondre que maintenant .
j'ai essayer d'adapter votre code a mon fichier mais je rencontre plusieurs probléme.(il faut dire que j'apprend encore)
PM: ce fichier est en reseau et est rempli par des personne exterieur donc pour savoir si il font une reservation j'ai besion de recevoir un RDV a la date de leur choix.
or je n'arrive pas a recevoir ce mail ou ce RDV.
de plus il ne prend pas la date choisi par la personne mais la date sur la premiere ligne
au lieu de la date choisi dans l'userform.
je joint mon fichier test pour que cela soit plus clair.
la macro ce trouve dans convoquer_ics
merci de votre aide.
Salut
Question, pourquoi fais-tu un onglet par jour !?
Il faut toujours penser base de données, dans une ligne il peut tout y avoir
A+
Bonsoir.
En effet une base de données serait plus simple.
Toutefois c'est la demande que j'ai eu de mes supérieurs.
Maintenant si tu as autre chose à me proposer je suis preneur.
😇
Bien cordialement.
Re,
Quelle est la demande exacte de tes supérieurs ?
En fonctionnant comme une base de données (une feuille unique pour toutes les infos)
Tu peux par la suite établir des rapport, des statistiques, etc...
Voici ton fichier de suivi formation en v2.0 oui rien que ça
Tu testes et tu nous dis ce que tu en penses et tes besoins
A+
Re.bonjour
Heu je vois pas le fichier.
Bonjour
deja bravo c'est super .
le seul probleme est que nous ne devons pas laisser le choix de la date.
Nous avons des date prédéfini qui corresponde au disponibilité du formateur.
j'ai ajouter la liste des dates dans ton fichier dans la feuille parametre mais je n'arive pas a l'adapter a ton code.
Merci beaucoup de ton aide.
Bonjour
deja bravo c'est super .
le seul probleme est que nous ne devons pas laisser le choix de la date.
Nous avons des date prédéfini qui corresponde au disponibilité du formateur.
j'ai ajouter la liste des dates dans ton fichier dans la feuille parametre mais je n'arive pas a l'adapter a ton code.
Merci beaucoup de ton aide.
de plus lorsqu'une date a été prise il ne doit pas être posiible de la resélectionner
car le formateur ne peux pas être a deux endroit a la fois a moins de ce cloner.