Portage fonction "Format"

francedemo

XLDnaute Occasionnel
bonjour à tous,

j'utilise un bout de code sur mon PC pour recopier l'onglet de base et faire ainsi un onglet de sauvegarde dans le même fichier

par contre, ça fonctionne bien sur mon PC mais pas sur celui de collègues amené à utiliser aussi ce fichier

Code:
On Error Resume Next
If Err = 0 Then
    ActiveWorkbook.Sheets("Base").Copy after:=Sheets("Analyse")
    ActiveSheet.Name = Format(Date, "dd-mm") & "_" & Format(Time, "hh.mm")
'    ActiveSheet.Visible = False
End If

Sur un autre PC, Excel me dit qu'il ne reconnait pas la fonction "Date", du coup j'ai essayé avec "now" qui semble reconnue et là, c'est la fonction "format" qui ne l'est plus

je suis preneur si une autre formule existe

d'avance merci
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Portage fonction "Format"

Bonjour francedemo,

Voici deux fonctions à tester :
VB:
Public Function DdMm() As String
Dim tmp As String

    'récupérer le jour
    DdMm = Mid(Now, 1, 2)
    'ajouter le "-"
    DdMm = DdMm & "-"
    'ajouter le mois
    DdMm = DdMm & Mid(Now, 4, 2)
End Function



Public Function HhMm() As String
Dim tmp As String

    'récupérer l'heure
    HhMm = Mid(Now, 12, 2)
    'ajouter le "."
    HhMm = HhMm & "."
    'ajouter les minutes
    HhMm = HhMm & Mid(Now, 15, 2)
End Function
Sinon, le tout en une seule fonction :
VB:
Public Function DdMmHhMm() As String
Dim tmp As String

    'récupérer le jour
    DdMmHhMm = Mid(Now, 1, 2)
    'ajouter le "-"
    DdMmHhMm = DdMmHhMm & "-"
    'ajouter le mois
    DdMmHhMm = DdMmHhMm & Mid(Now, 4, 2)
    'ajouter le "_"
    DdMmHhMm = DdMmHhMm & "_"
    'ajouter l'heure
    DdMmHhMm = DdMmHhMm & Mid(Now, 12, 2)
    'ajouter le "."
    DdMmHhMm = DdMmHhMm & "."
    'ajouter les minutes
    DdMmHhMm = DdMmHhMm & Mid(Now, 15, 2)
End Function
a+
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Portage fonction "Format"

Bonjour FranceDemo :),
A ma connaissance, Format fonctionne sur toutes les versions. Par contre Date n'existait pas sur d'anciennes versions. En ce qui concerne Now, il y a 2 syntaxes, as-tu testé les 2 ?
Code:
ActiveSheet.Name = Format(Now(), "dd-mm") & "_" & Format(Now(), "hh.mm")
ou
Code:
ActiveSheet.Name = Format(Now, "dd-mm") & "_" & Format(Now, "hh.mm")
Sinon, tu peux mettre dans une celule de la feuille Base
Code:
=MAINTENANT()
et y faire référence dans la macro.
Dans le pire des cas, tu peux utiliser
Code:
ActiveSheet.Name = Day(Now) & "-" & Month(Now) & "_" & Hour(Now) & "." & Minute(Now)
mais il va falloir faire des tests pour rajouter le 0 devant les chiffres uniques...
Bon courage :cool:
Ajout : Salut MRomain
 

francedemo

XLDnaute Occasionnel
Re : Portage fonction "Format"

re, et merci à tous pour vos réponses

j'ai essayé les formules de JnP, la seule qui fonctionne est :
Code:
ActiveSheet.Name = Day(Now) & "-" & Month(Now) & "_" & Hour(Now) & "." & Minute(Now)
par contre elle renvoi les valeurs non formatées...

je vais regarder au niveau des références sur un poste

le cas échéant, existe-t'il un moyen de "forcer" l'activation des références manquantes qui ne sont pas activent sur un poste ? (je me vois mal faire le tour des postes pour valider les références une à une)
 

Pierrot93

XLDnaute Barbatruc
Re : Portage fonction "Format"

Bonjour à tous

petite reflexion au passage, à quoi sert le test si erreur égal zéro, puisque l'on vien juste de lancer l'instruction de pas s'arrêter sur les erreurs... :

Code:
On Error Resume Next
If Err = 0 Then

vérifier peut être également si "format" ou "date" ne sont pas utilisés comme nom de variable ou de procédure dans le projet...

bonne journée
@+
 

francedemo

XLDnaute Occasionnel
Re : Portage fonction "Format"

bonjour pierrot

concernant "error resume next", j'avoue ne pas pouvoir te répondre, à vrai dire, j'en sais rien, c'est une structure de code que j'ai récupéré sur le site (pour d'autre utilisation en ouverture de fichier) et qui semblait bien fonctionner

l'idée c'est que :
quand j'ouvre le fichier, j'ai un onglet qui se crée, nommé au format dd-mm_hh.mm (ça c'est mon souhait)
or si j'ouvre 2 fois le fichier dans la même minute, j'ai une erreur (création d'un onglet nommé "base (2)"), d'où la gestion d'erreur...

sinon, j'ai vérifié, je n'ai nul part de variable "format" ou "date" dans le projet
 

JNP

XLDnaute Barbatruc
Re : Portage fonction "Format"

Re :),
Donc, même si c'est un peu "bourrin" :p :
Code:
Dim NomOnglet As String
If Day(Now) < 10 Then NomOnglet = "0" & Day(Now) & "-" Else NomOnglet = Day(Now) & "-"
If Month(Now) < 10 Then NomOnglet = NomOnglet & "0" & Month(Now) & "_" Else NomOnglet = NomOnglet & Month(Now) & "_"
If Hour(Now) < 10 Then NomOnglet = NomOnglet & "0" & Hour(Now) & "." Else NomOnglet = NomOnglet & Hour(Now) & "."
If Minute(Now) < 10 Then NomOnglet = NomOnglet & "0" & Minute(Now) Else NomOnglet = NomOnglet & Minute(Now)
ActiveSheet.Name = NomOnglet
Bon courage :cool:
 

francedemo

XLDnaute Occasionnel
Re : Portage fonction "Format"

bonjour à tous et merci pour votre aide

pour faire faces aux difficultés de config différentes sur les différents postes avec des versions différentes, bref, un peu le binz
je suis parti sur la création d'une copie du fichier placée dans un répertoire sauvegarde à part accessible sur le réseau par tout le monde

et là, ça semble coller, j'ai plus les utilisateurs qui m'appellent en râlant que "ça ouvre un truc bizarre pour "débugger""

nota: certains n'avait jamais vu cette fenêtre !!! cool
 

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia