Excel VBA Écrire un nom de file en fonction de la date du système

J'essaie d'écrire un script VBA dans Excel qui va save un file et donner un nom prédéterminé. L'un des critères est que si ce n'est pas avant 11 heures, il devrait append au nom de file "H12". Si il est passé 11 heures, alors il devrait append "H16".

Voici ce que j'ai jusqu'ici, en ce qui concerne cette partie spécifique (il y a plus de code qui n'est pas pertinent à afficher ici:

Dim SaveTime As Integer SaveTime = Round(Timer / 3600, 0) dt = Format(CStr(Now), "yyyy_mm_dd") FolderName = "path/to/file" If SaveTime < 11 Then With Destwb .SaveAs FolderName _ & "\" & Destwb.Sheets(1).Name & dt & "H12", _ FileFormat:=FileFormatNum .Close False End With Else With Destwb .SaveAs FolderName _ & "\" & Destwb.Sheets(1).Name & dt & "H16", _ FileFormat:=FileFormatNum .Close False End With End If 

Le script fonctionne correctement, sauf cette partie, car il sauvegarde toujours les files comme "H16". J'ai fonctionné il y a 45 minutes et il aurait dû l'écrire comme "H12". Je suis sûr que je ne fais pas la comparaison de time correctement. J'ai essayé de comparer if dt < "11:00" mais cela ne fonctionne pas non plus.

Quelqu'un peut-il me donner une main ici?

Merci d'avance!

modifier: ajouté un dernier détail.

Alors que je ne suis pas entièrement sûr de votre erreur (quelle ligne a-t-elle causé avec Err #?), J'espère que cela vous aidera à résoudre votre problème

 (...) Dim SaveTime As Integer SaveTime = Hour(Now) FolderName = "C:\Users\b036081\NoBackupData" FileFormatNum = 51 ' that's xlsx without macros With Destwb If SaveTime < 11 Then .SaveAs FolderName _ & "\" & .Sheets(1).Name & dt & "H12", FileFormatNum '.Close False Else .SaveAs FolderName _ & "\" & .Sheets(1).Name & dt & "H16", FileFormatNum '.Close False End If End With (...) (...) Dim SaveTime As Integer SaveTime = Hour(Now) FolderName = "C:\Users\b036081\NoBackupData" FileFormatNum = 51 ' that's xlsx without macros With Destwb If SaveTime < 11 Then .SaveAs FolderName _ & "\" & .Sheets(1).Name & dt & "H12", FileFormatNum '.Close False Else .SaveAs FolderName _ & "\" & .Sheets(1).Name & dt & "H16", FileFormatNum '.Close False End If End With 
  • J'ai remarqué que vous avez utilisé / dans votre nom de FolderName -place, mais je crois que vous savez que vous devez utiliser \ comme séparateur de path dans VBA
  • Je ne suis pas sûr de vouloir faire SaveTime = Round(Timer / 3600, 3) . Si votre objective est d'extraire l'heure de la date, au lieu de par exemple returnner 5 à 04:35 , vous pouvez utiliser quelque chose comme Hour(Now) , qui renvoie un Integer
  • J'ai enveloppé le With Destwb autour du If , au lieu de l'inverse, qui nettoie un peu votre code

Modifier: code mis à jour avec la solution de travail