Format heure par mail par vba [Résolu]

alexpepe 20 Messages postés mercredi 30 mars 2016Date d'inscription 14 avril 2016 Dernière intervention - 13 avril 2016 à 12:08 - Dernière réponse : vb95 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention
- 14 avril 2016 à 13:57
VBA Office (Excel, Word ...) Posez votre question Signaler Répondre au sujet
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 

22 réponses

Répondre au sujet
vb95 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - Modifié par vb95 le 13/04/2016 à 12:37
0
Utile
19
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 20 Messages postés mercredi 30 mars 2016Date d'inscription 14 avril 2016 Dernière intervention > vb95 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 13 avril 2016 à 16:01
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 20 Messages postés mercredi 30 mars 2016Date d'inscription 14 avril 2016 Dernière intervention > vb95 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 13 avril 2016 à 15:53
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 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention > alexpepe 20 Messages postés mercredi 30 mars 2016Date d'inscription 14 avril 2016 Dernière intervention - 13 avril 2016 à 16:02
Essaie ceci

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


Tu as quelle version d'Office ?
alexpepe 20 Messages postés mercredi 30 mars 2016Date d'inscription 14 avril 2016 Dernière intervention > vb95 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention - 14 avril 2016 à 08:44
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 1386 Messages postés samedi 11 janvier 2014Date d'inscriptionContributeurStatut 12 décembre 2017 Dernière intervention > alexpepe 20 Messages postés mercredi 30 mars 2016Date d'inscription 14 avril 2016 Dernière intervention - 14 avril 2016 à 13:57
De rien alexpepe
J'ai vu la solution de cs_MPI
C'était vraiment tout con lol !
Commenter la réponse de vb95
cs_MPi 3858 Messages postés mardi 19 mars 2002Date d'inscription 21 novembre 2017 Dernière intervention - 13 avril 2016 à 21:29
0
Utile
1
Essaie en ajoutant .Text
Range(HeureVM_Col & CStr(I)).Text

alexpepe 20 Messages postés mercredi 30 mars 2016Date d'inscription 14 avril 2016 Dernière intervention - 14 avril 2016 à 09:25
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.