Extraire des caracteres d'une chaine

dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007 - 4 janv. 2007 à 12:16
 cs_JMO - 9 janv. 2007 à 15:01
Bonjour,

Je suis débutante en VB et je n'y comprends pas grand chose.
Mais j'ai un répertoire dans lequel se trouve un nom de fichier de style xxx_yyy_AAMMJJHHMMSS.DAT
j'aurais besoin de recuperer dans une variable les caracteres AAMMJJHHMMSS pour les utiliser dans un .bat
Merci d'avance pour votre aide.

30 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 janv. 2007 à 12:40
tu peux faire par exemple :

sFileName = "xxx_yyy_AAMMJJHHMMSS.DAT"
sDateTime = Mid$ ( sFileName , 9 , 12)

MsgBox sDateTime

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 janv. 2007 à 13:51
ou encore celà :

toto = "xxx_yyy_AAMMJJHHMMSS.DAT"
titi = Mid(toto, 1, InStr(toto, ".") - 1)

puis utiliser à ton chois :
-soit instrev avec le caractère "_"
-soit split avec le séparateur "_" (et prendre la dernière chaine)

encore que, personnellement (je suis cinglé) , je préfèrerais la méthode "tradtionnelle ":

Private Sub Command1_Click()
  toto = "xxx_yyy_AAMMJJHHMMSS.DAT"
  titi = Mid(toto, 1, InStr(toto, ".") - 1)
  While InStr(titi, "_") > 0
     titi = Mid(titi, InStr(titi, "_") + 1)
  Wend
  MsgBox titi
End Sub
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
4 janv. 2007 à 13:51
Merci pour cette réponse, sauf que j'ai oublié de preciser que le nom du fichier changer tous les jours voirs plusieurs fois dans la journées
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 janv. 2007 à 13:55
Oui ?
Et alors ?
Si ce que tu cherches est touhours situé entrre le dernier _ et le ., ma réponse est toujours valable !
0

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

Posez votre question
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
4 janv. 2007 à 13:55
en fait, faudrait peut etre lister le contenu du repertoire dans une variable et travailler a partir de la variable?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 janv. 2007 à 13:57
Ouias ...
Fais alors selon ton idée ou explique avec plus de précision les noms de baptème de tes fichiers !...
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
4 janv. 2007 à 14:00
oui ce que je cherche est toujours situé entre le _ et le .
pour prendre un exemple concret, mes fichiers vont s'appeler kilpro_racine_070104135845.DAT pour le fichier1 et pour le fichier2 qui sera generé un peu plus tard kilpro_racine_070104140015.DAT mais dans mon repertoire il n'y aura qu'un seul fihcier de present car l'ancien sera supprimé apres pris en compte
repoertoire de test admettons d:\temp\test
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 janv. 2007 à 14:02
"oui ce que je cherche est toujours situé entre le _ et le ."


hé bé !
Tu as ta solution, alors, non ? (voir mon code donné plus haut) ....!!!!
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
4 janv. 2007 à 14:08
ok, tu va vraiment me prendre pour je sais pas quoi, mais c du carabia ca pour moi en fait


je v te poser une nouvelle question


moi, ce que je connais reellement , c le nom du repertoire ou va se trouver le fichier, mais le nom du fichier je ne le connais pas a l'avance qd le prog va s'executer


est ce qu'on truc va marcher quand meme?


 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 janv. 2007 à 14:41
Attends un peu, là, hein ?

Tu as quoi et tu connais quoi, exactement, alors ?

Il va falloir que tu apprennes à exposer tes problèmes avec précision, dès ta 1ère question !

Elle était, je te le rappelle :

"Bonjour,

Je suis débutante en VB et je n'y comprends pas grand chose.
Mais j'ai un répertoire dans lequel se trouve un nom de fichier de style xxx_yyy_AAMMJJHHMMSS.DAT
j'aurais besoin de recuperer dans une variable les caracteres AAMMJJHHMMSS pour les utiliser dans un .bat
Merci d'avance pour votre aide."

ce qui, bien évidemment, a conduit à la réponse logique que t'a faite Renfield...(et que j'aprouve !)
puis à la mienne (un peu plus fouillée et générale car je me doutais d'un truc...)

et maintenant, tu viens avec autre chose, mais toujours sans définir ce qu'est cette autre chose ...

Alors, ami, ceci n'a rien à voir avec le développement, mais totalement avec l'expression :
Exprime donc avec précision et totale exactitude ce que tu as et ce que tu cherches à faire...
A défaut : adieu !
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
4 janv. 2007 à 14:51
bon, je v essayer d'etre clair mais meme moi je m'y perd
donc :
j'ai un fichier qui arrive d'un serveur unix dans un repertoire windows d:\temp\test
le fichier qui est transferé se nomme kilpro_racine_AAMMJJHHMMSS.DAT
AAMMJJHHMMSS.DAT correspond au date et heure syteme de l'unix
donx exemple le fichier peut s'appeler une premiere fois kilpro_racine_070104144630.DAT et 2 heure plus tard kilpro_racine_060701164652.DAT
et d'autre part, ce qui est sur c que dans le repertoire d:\temp\test, il n'y a aura toujours qu'un seul fichier
mais moi je ne sais pas comment va s'appeler reellement le fichier au moment ou il arrive sur le serveur ce que je suis sur c qu'il se trouve dans le repertoire d:\temp\test et qu'il commence par kilpro_racine et se termine par .DAT
donc, en fait, ce dont j'ai besoin c de recupere la valeur de AAMMJJHHMMSS dans une variable

mais je ne sais pas du tout comment m'y prendre ni meme si c faisable

alors ma logique a moi, et je n'ai pas du tout une logique de developpement, ca serait de faire un dir du repertoire en question qu'on affecte dans un fichier ou variable un trcu du genre
lire ce fichier ou variable afin d'extraire les caracteres que j'ai besoin dans une autre variable

en esperant avoir ete assez claire cette fois ci
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 janv. 2007 à 15:05
1) la fonction Dir (voir ton aide en ligne) permet d'utiliser un filtre et des jokers ... bûche donc un peu !

2) regarde ce que fait celà :

Private Sub Command2_Click()
  toto = "xxx_yyy_AAMMJJHHMMSS.Dat"
  If UCase(Right(toto, 4)) = ".DAT" Then MsgBox "oui"
End Sub

ceci étant dit : Dir devrait te suffire !

Reviens avec ton code d'essai si tu rencontres encore une difficulté !
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
4 janv. 2007 à 15:35
Salut:



"ok, tu va vraiment me prendre pour je sais pas quoi, mais c du carabia ca pour moi en fait"



Quand je ne connais le mot d'une langue, je prends un dictionnaire ou un traducteur, ici ton dictionnaire s'appelle F1.




 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
5 janv. 2007 à 11:59
Bonjour,

Voila ce que j'ai essayé de faire, mais lorsque je lance mon .vbs, rien ne se passe :(

Sub ShowFiles
   Dim NextFile
   Dim AllFiles


   AllFiles = ""
   NextFile = Dir("D:\temp\test", 0)


   While NextFile  <> ""
      AllFiles = AllFiles & Chr(13) &  NextFile
      NextFile  = Dir
   Wend


MyResult = Mid(AllFiles, 6,17)


   End Sub

Pouvez vous me dire si ce que j'ai fait semble correct a quelqu'un  :)

Merci d'avance
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
5 janv. 2007 à 12:47
Bonjour

VB ou VBS ?   Ce n'est pas vraiment la même chose.

Si je regarde ton code et si je garde en tête ton "rien ne se passe"; il me semble que c'est à peu près normal : tu ne vois rien car tu n'as pas de MsgBox (vb) ou de WScript.echo (vbs).    Si cela se trouve, ton code tourne et parce qu'en l'absence d'interactivité, tu crois que rien ne se passe.   OK, j'avoue que c'est jouer sur les mots. 

Ton code ne fait également aucune référence à toutes les sources qui t'ont été données plus haut.   Pourquoi n'essayerais-tu pas de faire confiance à Redfield et jfmmarques ?

Christophe
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
5 janv. 2007 à 14:15
moi c du vbs

donc faut que je termine mon script par un WScript.echo & MyResult & c bien ca?
c pas que je ne leur fais pas confiance, c juste que je galere trop dessus depuis 15 jours vu que je suis une vraie debutante et que j'essaie de trouver de l'aide partout pour faire mon code le plus rapidement possible
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
5 janv. 2007 à 21:56
Si tu veux afficher quelque chose, p.e., fais un WScript.Echo AllFiles dans la boucle; avant ton NextFile = Dir mais attention ceci ne t'avancera à rien d'autre qu'à constater que ton code fonctionne.   Ton problème initial n'en sera pas pour autant résolu tant que tu n'auras pas mis en oeuvre les conseils qui t'ont déjà été prodigués.

Bonne prog.

Christophe
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
8 janv. 2007 à 09:29
Bonjour,

Voici, ce que j'ai de nouveau essayé de faire, et encore lorsque je lance mon .vbs, rien ne se passe, il me rend la main aussi vite mais sans mettre de message d'erreur.

Merci d'avance,

Private Sub Command1_Click()
  toto = Dir("d:\temp\test\*.DAT",0)
  titi = Mid(toto, 1, InStr(toto, ".") - 1)
  While InStr(titi, "_") > 0
     titi = Mid(titi, InStr(titi, "_") + 1)
  Wend
  MsgBox titi
End Sub
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
8 janv. 2007 à 12:34
Bonjour,

Il me semble à relire tout l'historique de cette conversation que tes connaissances VB sont vraiment très ... faible.

A lire ton code, c'est bien du VB que tu fais et pas du VBS.  En outre, ton code correspond à un clic sur un bouton de commande nommé Command1 ==> un tel bouton de commande doit être présent dans ton formulaire VB.   

Pour que ton code s'exécute, c'est donc bien depuis l'interface de VB que tu dois le lancer et seulement après un clic sur le bouton Command1.

Je te conseille d'apprendre les bases de VB avant de te lancer dans ce type de programmation.  

Christophe
0
dachyc Messages postés 15 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 9 janvier 2007
8 janv. 2007 à 12:38
merci pour les conseils, mais j'ai reellement besoin de faire du vbs, et oui je l'avais bien precisé que mes connaissances vbs etaient tres mediocres.
J'ai lu pas mal de vos articles sur le site dans lequel vous aidiez les gens c pour cela que je me suis décidés a poster un sujet :)
donc, si quelqu'un peut m'aider a faire la meme chose mais en vbs, ca serait cool :)

merci d'avance
0
Rejoignez-nous