alexpepe
Messages postés20Date d'inscriptionmercredi 30 mars 2016StatutMembreDernière intervention14 avril 2016
-
13 avril 2016 à 12:08
vb95
Messages postés3511Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention18 septembre 2024
-
14 avril 2016 à 13:57
Bonjour à tous,
Je viens à la recherche d'aides et conseils car je bloque.
J'ai un tableau avec Date, Heure, Mail.
J'ai une macro qui analyse des dates et si la condition est remplie elle va envoyer un mail à la ou aux personnes concernées avec dans le corps du mail la date et l'heure du rdv, sauf que je n'arrive pas à exprimer les heures dans le bon format.
C'est certainement tout bête mais j'ai déclaré mes heures en variant et j'ai ensuite essayé de leur donner le format d'heures que j'ai pu trouver sur internet mais rien n'y fait.
Je mets mon code ci dessous:
Pour infos, mes heures se trouve dans la variable "HeureVM_Col".
Sub Workbook_Open() 'envoie un mail au DPX si la date de VM est dans 7 jours ou moins Dim sSujet As String 'sujet du mail Dim sBody As String ' corps du mail Dim sAdresseMail As String 'adresse mail du dpx Dim duree As Date 'nbre de jours entre aujourd'hui et la date à tester Dim Lig_Deb As Integer 'première ligne du tableau Dim Lig_Fin As Long 'dernière ligne remplie du tableau Dim sDates_Col As String ' colonne avec la date de VM Dim sMails_Col As String 'colonne avec l'adresse mail du DPX Dim sRappel_Col As String ' colonne avec la date de rappel Dim I As Integer Dim ws As Worksheet Dim NomOnglet As String Dim NomAgent_Col As String Dim HeureVM_Col As Variant
'enregistrer le nom de l'onglet actif à l'ouverture du fichier NomOnglet = ActiveWorkbook.ActiveSheet.Name
'pour tous les onglets dans le fichier For Each ws In ActiveWorkbook.Worksheets ws.Activate
'initialisation des constantes de la macro : Lig_Deb = 2 'dans ma feuille Excel, les dates à tester commencent en ligne 2 sDates_Col = "B" ' et elles sont en colonne B ( 2 ième colonne)et les adresses mail sont en colonne E à côté sRappel_Col = "G" 'colonne ou apparait la date d'envoi d'un rappel par mail NomAgent_Col = "D" 'colonne ou apparait le nom de l'agent HeureVM_Col = "C" 'colonne ou apparait l'heure de la VM
'Ligne de fin = dernière cellule remplie dans la colonne des dates Lig_Fin = Range("B" & Rows.Count).End(xlUp).Row
' boucle de test dans la plage des dates (=> ) 'pour toutes les lignes de ligne du début à la derniere ligne remplie For I = Lig_Deb To Lig_Fin Range(sDates_Col & CStr(I)).Activate 'activer la cellule testée duree = ActiveCell.Value - Now ' la date est dans la cellule active If duree <= 4 And duree > 0 And Range(sRappel_Col & CStr(I)).Value = "" Then 'la date est dans 4 jours ou moins par rapport à aujourd'hui et la case rappel est vide sAdresseMail = ActiveCell.Offset(0, 3).Value 'l'adresse mail est dans trois colonne après offset (0,3)
'initialisation des données du mail envoyé : sSujet = "Visite médical" sBody = "Votre agent " & Range(NomAgent_Col & CStr(I)) & " doit passer sa visite médicale le " & Range(sDates_Col & CStr(I)) & " à " & Range(HeureVM_Col & CStr(I)) & "."
' envoyer le mail : CDO_SendMail sSujet, sBody, sAdresseMail
'mettre la date d'envoi dans la case rappel Range(sRappel_Col & CStr(I)) = Now
Else
End If
Next I Next ws
'retourner sur l'onglet actif à l'ouverture du fichier Worksheets(NomOnglet).Activate
vb95
Messages postés3511Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention18 septembre 2024169 Modifié par vb95 le 13/04/2016 à 12:37
Bonjour
Tes heures ne sont pas dans la variable "HeureVM_Col"
"HeureVM_Col" ne représente que la lettre de la colonne où se trouvent précisément ces heures et doit être dimensionnée en String ! Par contre la colonne est-elle formatée au format Date-heure ?
ton code
HeureVM_Col = "C" 'colonne ou apparait l'heure de la VM
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
alexpepe
Messages postés20Date d'inscriptionmercredi 30 mars 2016StatutMembreDernière intervention14 avril 2016 13 avril 2016 à 12:33
ah oui exact merci pour la précision.
mais du coup, dans mon envoi du mail il va bien chercher la cellule correspondante mais comment lui indiquer le format à prendre? car sur excel le format est bien heure
sBody = "Votre agent " & Range(NomAgent_Col & CStr(I)) & " doit passer sa visite médicale le " & Range(sDates_Col & CStr(I)) & " à " & Range(HeureVM_Col & CStr(I)) & "."
vb95
Messages postés3511Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention18 septembre 2024169
>
alexpepe
Messages postés20Date d'inscriptionmercredi 30 mars 2016StatutMembreDernière intervention14 avril 2016 13 avril 2016 à 12:43
alexpepe
Messages postés20Date d'inscriptionmercredi 30 mars 2016StatutMembreDernière intervention14 avril 2016
>
vb95
Messages postés3511Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention18 septembre 2024 13 avril 2016 à 12:51
oui j'ai vu cet exemple déjà, j'ai donc essayé de le modifier avec mon code en remplaçant la cellule définie par ma cellule aléatoire, mais mon mail arrive tjr avec l'heure en nombre donc X,XXXXXXXXX
Je l'ai placé juste avant le Else dans mon code.
Je pense que c'est le fait de ne pas indiquer une cellule précise qui ne fonctionne pas dans ce cas.
vb95
Messages postés3511Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention18 septembre 2024169
>
alexpepe
Messages postés20Date d'inscriptionmercredi 30 mars 2016StatutMembreDernière intervention14 avril 2016 Modifié par vb95 le 13/04/2016 à 13:20
Salut Alex
Que contient visuellement la cellule Heure avant l'envoi du mail ?
Excel contient en interne les dates et heures sous forme de nombre X,XXXXX et les affiche au format voulu selon le pays et les infos désirées
sBody = "Votre agent " & Range(NomAgent_Col & CStr(I)) & " doit passer sa visite médicale le " & Range(sDates_Col & CStr(I)).Value & " à " & Range(HeureVM_Col & CStr(I)).Value & "."
A tout hasard que donne l'ajout de .Value dans cette ligne de code ?
Je ne suis pas un spécialiste VBA !
alexpepe
Messages postés20Date d'inscriptionmercredi 30 mars 2016StatutMembreDernière intervention14 avril 2016
>
vb95
Messages postés3511Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention18 septembre 2024 13 avril 2016 à 13:36
Alors la colonne Heure contient des heure comme 08:00 en format heure hh:mm. Cette colonne ne change pas, ce sont des données saisies à l'avance.
L'ajout de Value ne change rien, aucune modif, dans mon mail c'est toujours 0,611111111111111 pour 14h40 par exemple.
Aucun souci toute aide est la bienvenue dans tous les cas.
13 avril 2016 à 12:33
mais du coup, dans mon envoi du mail il va bien chercher la cellule correspondante mais comment lui indiquer le format à prendre? car sur excel le format est bien heure
13 avril 2016 à 12:43
http://www.excel-pratique.com/fr/astuces_vba/format_dates.php
13 avril 2016 à 12:51
Je l'ai placé juste avant le Else dans mon code.
Je pense que c'est le fait de ne pas indiquer une cellule précise qui ne fonctionne pas dans ce cas.
Modifié par vb95 le 13/04/2016 à 13:20
Que contient visuellement la cellule Heure avant l'envoi du mail ?
Excel contient en interne les dates et heures sous forme de nombre X,XXXXX et les affiche au format voulu selon le pays et les infos désirées
A tout hasard que donne l'ajout de .Value dans cette ligne de code ?
Je ne suis pas un spécialiste VBA !
13 avril 2016 à 13:36
L'ajout de Value ne change rien, aucune modif, dans mon mail c'est toujours 0,611111111111111 pour 14h40 par exemple.
Aucun souci toute aide est la bienvenue dans tous les cas.