Pb pour concaténer une date au milieu d'une chaine

Résolu
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015 - 3 mars 2008 à 10:57
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 5 mars 2008 à 03:31
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 mars 2008 à 15:27
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
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mars 2008 à 11:43
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
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
3 mars 2008 à 11:59
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... .. .
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 mars 2008 à 12:27
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
4 mars 2008 à 13:11
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... .. .
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
4 mars 2008 à 16:51
Merci... .. .

@ tchaOo°

l'homme est un loup pour l'homme... .. .
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
4 mars 2008 à 18:51
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
4 mars 2008 à 20:17
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 mars 2008 à 03:31
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
0
Rejoignez-nous