Format heure par mail par vba [Résolu]

Signaler
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
14 avril 2016
-
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
-
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


End Sub


Merci d'avance pour votre aide :)

2 réponses

Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137
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. 
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
14 avril 2016
>
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021

en effet erreur sur le String =

du coup j'ai essayé ça:
Dim Heure As String
Heure = TEXTE((Range(HeureVM_Col & CStr(I))) / 24, "h:mm")


mais sans résultat, et il ne veux pat du point virgule, et avec la virgule il me surligne le range
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
14 avril 2016
>
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021

moi sur mon excel ca ne me veux pas me calculer la formule, elle reste écrite --> étrange.... mais le sujet n'est pas là
mais oui dans l'idée si on travaillais sur Excel je pense que ce serait bien ça la solution.
merci pour ton obstination. je continue de mon côté aussi
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137 >
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
14 avril 2016

Essaie ceci

Dim Heure As String
Heure = Format(Range(HeureVM_Col & CStr(I)), "h:mm")


Tu as quelle version d'Office ?
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
14 avril 2016
>
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021

vb95 je tiens à te dire que tu es un génie, ça fonctionne :-)
C'est nickel ça m'indique bien la bonne heure et dans le bon format.
Tu n'imagine pas mon soulagement. Je te remercie grandement pour ton aide et ta persévérance.

J'ai office 2010.

Vraiment mille merci car je n'aurai pas réussi tout seul.
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137 >
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
14 avril 2016

De rien alexpepe
J'ai vu la solution de cs_MPI
C'était vraiment tout con lol !
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Essaie en ajoutant .Text
Range(HeureVM_Col & CStr(I)).Text

Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Statut
Membre
Dernière intervention
14 avril 2016

Bonjour cs_MPi,

je viens de tester et ça fonctionne aussi, et vu comme ça c'était vraiment tout con :-)

merci pour ton aide.