Nvoyer des demande de rendez vous

Re bonjour

petite question est il possible avec excel d'envoyer des demande de rendez vous .

Je m'explique j'ai un fichier Excel partager pour les formations la personne rempli le formulaire et valide a ce moment une fois validé je voudrais recevoir une demande de rendez vous sur Outlook que j'accepterais.

ce qui me permettrais de savoir que la Cellule" A5 Nom du site" a réserver LE" A2." Mardi 06 Juin 2017 dans l'exemple

resa

Merci de votre aide

Bonjour,

Question préalable : la personne qui s'inscrit a-t-elle aussi outlook et veut-elle que ce rendez-vous apparaisse sur son agenda ?

Si OUI = il faut lancer une demande de RdV via outlook

Si NON, et c'est la solution que je préfère car elle est même indépendante de l'agenda : il faut envoyer un fichier texte au format .ics

Là maintenant, il faudrait que je fasse un peu d'archéologie documentaire pour sortir des exemples que j'ai réalisés (il s'agissait de rendez-vous pour la médecine du travail).

Bonjour Steelson

Déjà merci de s'intéresser à mon problème.

Ensuite je pense que la deuxième solution et quand même la meilleure c'est uniquement pour que je sache quand une personne à saisie et donc me bloque la journée.

Si tu as le temps je veux bien que tu fasses tes fouilles archéologiques je suis preneur.

Merci encore pour ton aide

Re

en fait quand le ( client) rempli le fichier et valide JE reçois une demande de rendez vous sur outlook.

Merci

Un premier essai ... je ne garantis pas car j'ai fait quelques modifications pour simplifier le plus possible et je n'ai pas outlook pour tester, donc programmation en aveugle.

Certains paramètres sont à mettre en "dur" dans la macro ...

Option Explicit

Sub Convoquer_par_ICS()

' ===========
' 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 = 5  ' servira de test (envoi fichier .ics si vide), sinon mémorise l'action

Const titre = "le titre ici"
Const texte = "le texte ici"

Const destinataire = "truc.machin@clown.fr" ' 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("A2:" & "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"
                    .display
                End With
                Set email = Nothing

                cel.Offset(0, -1 + col_action).Value = "Mail préparé par " & Environ("UserName") & " le " & Application.Text(Now(), "DD/MM/YYYY HH:MM")

            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

Bonsoir

très beau boulot a la limite de la perfection.

le seul (truc) qui m’embête c'est que la boite mail de l'expediteur s'ouvre et qu'il doit cliquer sur envoyer.

il n'y as pas moyen que cela s'envoi sans action de l'utilisateur?.

en tout cas beau travail MERCI

Bonjour,

Il suffit de remplacer .display par .send dans la macro.

Super Un gros merci

Bonjour

bravo c'est exactement ce que je recherche, mais hélas cela ne fonctionne pas

une piste ?

merci

Philippe

Bonjour,

bravo c'est exactement ce que je recherche, mais hélas cela ne fonctionne pas

Qu'est-ce qui ne fonctionne pas ? peux-tu en dire davantage ...

Bonjour Steelson,

Serait-il possible de faire ensorte qu'il prenne dans le fichier ICS, toutes les dates rentrées ?

Car a l'heure actuelle, ma macro ne tient compte que d'un seul encodage de date.

Moi, mon souhait serait de pouvoir créer un ensemble de date et de l'envoyer au destinataire.

Mais c'est super comme travail.

Autre question, pourquoi mettre "date echue" dans ta macro ?

Bonjour et bienvenue,

Serait-il possible de faire ensorte qu'il prenne dans le fichier ICS, toutes les dates rentrées ?

dans le même fichier ics ?

je vais regarder ... as-tu un bout de ton fichier excel ?

Mais c'est super comme travail.

merci

j'ai mis un peu de temps, mais cela sert couramment dans le cas où le logiciel (par exemple en matière de santé au travail) ne peut dialoguer avec une messagerie mais peut sortir des listes sous excel

Autre question, pourquoi mettre "date echue" dans ta macro ?

Parce que dans ce cas

cel.Offset(0, -1 + col_date) < Now() 

la date étant dépassée la macro n'envoie rien, pas de fichier ics, mais j'ajoute dans cette colonne le résultat/l'action de la macro : donc soit "date échue", soit rien, soit "Mail préparé par " & Environ("UserName") & " le " & Application.Text(Now(), "DD/MM/YYYY HH:MM")

Bonjour,

Oui, dans un même fichier ICS. J'ai testé en copiant le contenu de l'un dans l'autre et du coup, lors de l'import, celà me crée les différentes réunions. Donc je me suis dit que celà devrait être possible de faire une boucle pour qu'il prenne en compte les différentes lignes.

Mon but est celui-ci : envoyer la liste des réunions par phase de projet en construction.

Et penses-tu qu'il serait envisageable d'avoir un Id permettant que quand tu changes une date, ou une autre info, le fichier ICS soit mis à jour et ainsi lors de la nouvelle création du fichier ICS, et de l'import, la réunion soit mise à jour automatiquement ?

Oui, dans un même fichier ICS. J'ai testé en copiant le contenu de l'un dans l'autre et du coup, lors de l'import, celà me crée les différentes réunions. Donc je me suis dit que celà devrait être possible de faire une boucle pour qu'il prenne en compte les différentes lignes.

ok, donc tu as trouvé la solution

est-ce que tu souhaites de ma part une aide pour programmer cette boucle ? si oui, mets un bout de ton fichier

Et penses-tu qu'il serait envisageable d'avoir un Id permettant que quand tu changes une date, ou une autre info, le fichier ICS soit mis à jour et ainsi lors de la nouvelle création du fichier ICS, et de l'import, la réunion soit mise à jour automatiquement ?

tout dépend de l'utilisation du fichier ics dans l'agenda

si je me souviens bien, si ton agenda pointe sur le fichier stocké sur serveur (ou sur PC), cela doit être possible

si par contre tu as "intégré" le fichier ics dans ton agenda, cela risque de dupliquer les réunions

Bonjour,

Je veux bien un coup de main pour la création de la boucle, car je suis vraiment pas un spécialiste d'Excel.

Mon test était simplement fait par Notpad++. Donc je ne pourrais pas mettre un bout de code...

Pour ce qui est de l'autre partie de l'intégration, on verra dans un second temps.

Merci pour ton aide et bonne journée.

Bonjour Steelson,

Je suis parvenu a faire la boucle.

La question du jour est la suivante : as-tu une idée de comment faire pour récupérer les accents après export en ICS.

En effet, les "é" ou autres, comme le "ô" ne sont pas exporté.

Merci pour ton aide en tout cas.

Bonne fin de journée.

Bonjour,

applique cette fonction VBA au texte complet

Function accents(texte As String) As String
accents = ""
For i = 1 To Len(texte)
If Asc(Mid(texte, i, 1)) > 127 Or Asc(Mid(texte, i, 1)) = 39 Then
accents = accents + "=" + Application.WorksheetFunction.Dec2Hex(Asc(Mid(texte, i, 1)))
Else
accents = accents + Mid(texte, i, 1)
End If
Next
End Function

avec cette fonction, les accents prendront la forme suivante :

abcdefàéèçù sera écrit en langage "ics" abcdef=E0=E9=E8=E7=F9

Bonjour,

Je viens d'essayer, mais rien n'y fait.

Ta fonction ne change rien.

d'ou peut venir l'erreur ?

ok, cela dépend si tu es en "texte brut" ou en texte html.

Essaie alors cette fonction :

Function diacritique(texte As String) As String
diacritique = ""
For i = 1 To Len(texte)
If Asc(Mid(texte, i, 1)) > 127 Or Asc(Mid(texte, i, 1)) = 39 Then
diacritique = diacritique + "&#" + Application.Trim(Str(Asc(Mid(texte, i, 1)))) + ";"
Else
diacritique = diacritique + Mid(texte, i, 1)
End If
Next
End Function
Rechercher des sujets similaires à "nvoyer demande rendez"