Format heure par mail par vba [Résolu]

Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Dernière intervention
14 avril 2016
- - Dernière réponse : vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
- 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


End Sub


Merci d'avance pour votre aide :)
Afficher la suite 

Votre réponse

2 réponses

Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
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és
20
Date d'inscription
mercredi 30 mars 2016
Dernière intervention
14 avril 2016
> vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
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
alexpepe
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Dernière intervention
14 avril 2016
> vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
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
vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
> alexpepe
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
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 ?
alexpepe
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Dernière intervention
14 avril 2016
> vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
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.
vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
> alexpepe
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
Dernière intervention
14 avril 2016
-
De rien alexpepe
J'ai vu la solution de cs_MPI
C'était vraiment tout con lol !
Commenter la réponse de vb95
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
Essaie en ajoutant .Text
Range(HeureVM_Col & CStr(I)).Text

alexpepe
Messages postés
20
Date d'inscription
mercredi 30 mars 2016
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.
Commenter la réponse de cs_MPi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.