Pb pour concaténer une date au milieu d'une chaine [Résolu]

Signaler
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour...

J'ai un petit problème avec un script vbs... et comme c'est pas trop ma tasse de thé j'en appel à votre aide...

Donc... en fait c'est un petit script que je veux combiner à l'appli clavier+... il sagit d'une petite appli qui permet de configurer des raccourcis clavier pour écrire du texte, lancer une autre appli, etc... le problème pour l'écriture de texte est que l'on ne peut pas intégrer de tag date il faut mettre la date en dur dans le texte associé au raccourcis... chiant quand il faut changer la date tous les jours et encore plus quand on a plusieurs raccourcis avec la date... j'ai donc fait un petit vbs, en me basant sur un code donné par le créateur de clavier+, qui renvoi la date... pas de p lorsqu'il sagit de récupérer uniquement la date courante... en fait je passe les bouts de chaine en argument au script... le problème se pose lorsque la date doit être intégrée au milieu d'une chaine de caractère ou au début de la chaine... impossible la date se retrouve toujours en dernière position dans la chaine... mon code vbs est...

Set args = WScript.Arguments
Set shell = WScript.CreateObject("WScript.Shell")

Select Case args.Count
Case 0
     shell.SendKeys Date
Case 1
     shell.SendKeys args(0) & Date
Case Else
     shell.SendKeys args(0) & Date & args(1)
End Select

rien de bien compliqué mais ça bloque... imaginons que j'envois comme argument "test test 1 " et " test test 2" il me renvoi

test test 1  test test 203/03/2008

au lieu de...

test test 1 03/03/2008 test test 2

la date est concaténée en fin de chaine... je comprend pas pourquoi... et comme je suis nul en vb... si quelqu'un a une idée... merci d'avance pour votre aide... .. .

@ tchaOo°

l'homme est un loup pour l'homme... .. .

9 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
apparemment la fonction Format ne fonctionne pas en VBS

cadeau

function FormatMonth(iMonth)
  if len(iMonth)=1 then FormatMonth = "0" & iMonth else FormatMonth = iMonth
end function

msgbox FormatMonth(month(now))

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
salut,

avec des msgbox, ton script est bon...

je dirais que le problème vient de la synchro du sendkeys....

çà devrait donner qqchose comme çà (avec prévision d'arguments supplémentaires):

dim args, Shell, i
Set args = WScript.Arguments
Set shell = WScript.CreateObject("WScript.Shell")

if args.Count=0 then
  shell.SendKeys Date
else
  for i=0 to args.Count-1
    shell.SendKeys args(i), true
    if i=0 then shell.SendKeys Date, true
  next
end if

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Merci pour ta réponse PCPT... malheureusement ça fait pareil avec ton code... ou alors c'est clavier+ qui fait tout foirer... c'est à n'y rien comprendre... surtout pour un novice du vb comme moi... et ça me ferait chier de devoir compiler un fichier php en exe (je fais que du dev web php, ruby, etc) juste pour mettre une date dans une chaine... .. .

@ tchaOo°

l'homme est un loup pour l'homme... .. .
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
umm oui ici çà semble venir du clavier+ dans ce cas...

solution alternative? selon ton besoin, est-ce possible de récupérer la date dans un fichier texte plutôt que dans la config de l'appli (je suppose) ?
comme çà le vbs est lancé à chaque changement de jour ou démarrage du PC par le planificateur windows, il change la date dans le fichier texte, et clavier+ va juste lire l'info?

c'est vraiment de la bidouille....

ou mieux, que l'auteur fasse une maj
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Merci pour ton aide PCPT... j'ai trouvé d'où ça vient... en fait les arguments étaient mal passés par clavier+ dû à une erreur de ma part... .. .

Par contre j'en profite pour reposer une petite question (plutot que de réouvrir un topic) comment avoir les 0 initiaux avec les fonctions day() et month() car month(date()) me renvois 3 (pour le mois de mars) et j'aimerais bien avoir 03... je continu mes recherches sur mon ami google mais j'ai rien trouvé de concluant pour l'instant... .. .

Merci d'avance

@ tchaOo°

l'homme est un loup pour l'homme... .. .
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Merci... .. .

@ tchaOo°

l'homme est un loup pour l'homme... .. .
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Bonsoir à tous,

Bonsoir PCPT,
Ah que nenni, la fonction Format existe ....version Renfield !!!

'La fonction Format issue de ADODB :
'Formatage d'entier => Réponse fournie par Renfield (Admin CS) le 30/06/2006
'http://www.vbfrance.com/infomsg_FORMATAGE-ENTIER_770443.aspx
Option Explicit

Private Const adVariant = 12

Public Function Format(vsExpression, vsFormat) 
Dim oFmt
Dim oRS
    Set oFmt = CreateObject("MSSTDFMT.StdDataFormat")
    oFmt.Format = vsFormat
 
    Set oRS = CreateObject("ADODB.Recordset")
    oRS.Fields.Append "Field1", adVariant
 
    oRS.Open
    oRS.AddNew
 
    Set oRS.Fields(0).DataFormat = oFmt
    oRS.Fields(0).Value = vsExpression
    Format = oRS.Fields(0).Value
    oRS.close
    Set oRS = Nothing
    Set oFmt = Nothing 
End Function

MsgBox  Format(Day(Date), "00") &vbCr&_
        Format(Month(Date), "00")

MsgBox  Format ( "15", "000" )

jean-marc
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Re,

Autres exemples utiles, en vbs, pour la transformation de dates:

 MsgBox Format(now(), "yyyy-mm-dd") &vbCr& Format(time(), "hh:mm") &vbCrlf&_
        Format(Now(), "dd-mmm-yyyy") &vbCr& Format(Now(), "hh:nn:ss") &vbCrLf&_
        Format(Now(), "yyyymmdd.hhnnss") &vbCrLf&_
        Format(Now(), "dd/mm/yyyy h:nn:ss AMPM")

jean-marc
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
salut JMO,
à garder de côté, pas bête (enfin, encore faut-il faire du VBS )

merci à toi donc (et à Rey), j'garde çà de côté, qui sait....

trop gourmant pour ce cas de figure mais çà reste une très bonne alternative

bonne soirée ;)
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp