[VBS]Récupérer le texte derrière un caractère
Résolu/Fermé
bezourox
Messages postés
729
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
19 janvier 2013
-
7 sept. 2011 à 11:22
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 - 8 sept. 2011 à 11:09
bezourox Messages postés 729 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 19 janvier 2013 - 8 sept. 2011 à 11:09
A voir également:
- [VBS]Récupérer le texte derrière un caractère
- Caractère ascii - Guide
- Comment récupérer un compte facebook piraté - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Recuperer video youtube - Guide
- Caractere speciaux - Guide
8 réponses
Heremion
Messages postés
539
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
102
7 sept. 2011 à 11:26
7 sept. 2011 à 11:26
Bonjour Bezourox,
Je ne connais pas le VBS, mais pourquoi ne chercherais-tu pas la position du =, ou de ton premier et dernier " pour récupérer ce qu'il y a entre?
Je ne connais pas le VBS, mais pourquoi ne chercherais-tu pas la position du =, ou de ton premier et dernier " pour récupérer ce qu'il y a entre?
bezourox
Messages postés
729
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
19 janvier 2013
143
7 sept. 2011 à 11:50
7 sept. 2011 à 11:50
C'est exactement ce que je cherche à faire :-)
C'est juste que je ne trouve pas la fonction qui permet de faire ça, et idem pour moi je ne connais quasiment pas le vbs
C'est juste que je ne trouve pas la fonction qui permet de faire ça, et idem pour moi je ne connais quasiment pas le vbs
Heremion
Messages postés
539
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
102
7 sept. 2011 à 12:11
7 sept. 2011 à 12:11
Si tu réussis à récupérer ligne par ligne les informations de ton fichier, tu peux peut-être utiliser la fonction InStr([start, ]string1, string2[, compare]):integer
Elle renvoie la position de ton string2 dans ton string1, en partant de la position start (le premier caractère est à 1), et compare permet de personnaliser la recherche selon la valeur :
-1 : Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
0 :Effectue une comparaison binaire.
1 :Effectue une comparaison textuelle.
2 :Réservée à Microsoft Access. Effectue une comparaison basée sur les informations de votre base de données.
La position de ton premier " serait PosGuillemet = InStr(1,TaLigne,""",0)
Je te suggère de stocker ta ligne dans une variable temporaire car, une fois que tu as récupéré la position du premier guillemet, il te faut récupérer le second.
Pour faire cela, j'ai procédé de cette façon :
- Je crée une variable sTemp dans laquelle je mets le contenu de la ligne
- Je récupère la position du premier guillemet
- Je stocke dans la variable sTemp la chaine depuis la position du guillemet récupérée +1
- Je récupère à nouveau la position du premier guillemet rencontré (qui est en fait le deuxième du coup)
- Je copie dans une variable sResultat, la chaine partant de 1 jusqu'à la position du guillemet -1
Au besoin, j'ai fait un fichier Excel rempli de macros, si tu as besoin d'aides, je peux te donner quelques astuces...
Elle renvoie la position de ton string2 dans ton string1, en partant de la position start (le premier caractère est à 1), et compare permet de personnaliser la recherche selon la valeur :
-1 : Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
0 :Effectue une comparaison binaire.
1 :Effectue une comparaison textuelle.
2 :Réservée à Microsoft Access. Effectue une comparaison basée sur les informations de votre base de données.
La position de ton premier " serait PosGuillemet = InStr(1,TaLigne,""",0)
Je te suggère de stocker ta ligne dans une variable temporaire car, une fois que tu as récupéré la position du premier guillemet, il te faut récupérer le second.
Pour faire cela, j'ai procédé de cette façon :
- Je crée une variable sTemp dans laquelle je mets le contenu de la ligne
- Je récupère la position du premier guillemet
- Je stocke dans la variable sTemp la chaine depuis la position du guillemet récupérée +1
- Je récupère à nouveau la position du premier guillemet rencontré (qui est en fait le deuxième du coup)
- Je copie dans une variable sResultat, la chaine partant de 1 jusqu'à la position du guillemet -1
Au besoin, j'ai fait un fichier Excel rempli de macros, si tu as besoin d'aides, je peux te donner quelques astuces...
bezourox
Messages postés
729
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
19 janvier 2013
143
7 sept. 2011 à 12:15
7 sept. 2011 à 12:15
Salut et merci pour les infos.
Je vais regarder ça cet aprem mais je pense avoir compris le concept.
Me reste plus qu'à retranscrire ça en vbs.
Snin pour ton fichier excel blindé de macros, oui je suis preneur :)
Je vais regarder ça cet aprem mais je pense avoir compris le concept.
Me reste plus qu'à retranscrire ça en vbs.
Snin pour ton fichier excel blindé de macros, oui je suis preneur :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Heremion
Messages postés
539
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
102
7 sept. 2011 à 13:31
7 sept. 2011 à 13:31
Voilà le fichier en question. Il ne fonctionnera pas, à moins de faire quelques manip, dans ton environnement mais tu peux au moins voir les macros.
http://www.cijoint.fr/cjlink.php?file=cj201109/cija2uGxyZ.xlsm
Si vraiment tu veux voir comment fonctionne le fichier, dis-le moi ;)
http://www.cijoint.fr/cjlink.php?file=cj201109/cija2uGxyZ.xlsm
Si vraiment tu veux voir comment fonctionne le fichier, dis-le moi ;)
Utilisateur anonyme
Modifié par Lupin.PC4 le 7/09/2011 à 14:14
Modifié par Lupin.PC4 le 7/09/2011 à 14:14
Bonjour,
Exemple Type :
À adapter selon vos besoin :-)
Cdt
Lupin
Exemple Type :
À adapter selon vos besoin :-)
'--------------------------------------------------------------------- ' Fichier .vbs Const ctePourLecture = 1 Const cteRapport = "Resultat.txt" Dim objFSO, objFichier, varNomFic, Texte, Message Dim Chaine, Position Set objFSO = CreateObject("Scripting.FileSystemObject") ' Localisation du script et du fichier à lire varNomFic = WScript.ScriptFullName varNomFic = Left(varNomFic, InStrRev(varNomFic, "\")) varNomFic = varNomFic & cteRapport If ( objFSO.FileExists(varNomFic) ) Then Set objFichier = objFSO.OpenTextFile(varNomFic, ctePourLecture) While Not objFichier.AtEndOfStream Texte = objFichier.ReadLine Position = InStr(1, Texte, "=", 1) Texte = Mid(Texte,(Position + 2)) Texte = Mid(Texte, 1, (Len(Texte) - 2)) Message = Message & vbCrLf & Texte Wend objFichier.Close Set objFichier = Nothing WScript.Echo Message Else WScript.Echo "Fichier absent" End If Set objFSO = Nothing WScript.Quit(0) ' '---------------------------------------------------------------------
Cdt
Lupin
bezourox
Messages postés
729
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
19 janvier 2013
143
7 sept. 2011 à 15:36
7 sept. 2011 à 15:36
Sans commentaires ni explications, un peu complexe :)
Utilisateur anonyme
Modifié par Lupin.PC4 le 7/09/2011 à 16:50
Modifié par Lupin.PC4 le 7/09/2011 à 16:50
re:
Tout d'abord :
Instruction [InStr]
https://www.microsoft.com/en-us/download/details.aspx?id=55984
Instruction [Mid]
https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/mid-statement
Le code avec des commentaires :
Cdt
Lupin
Tout d'abord :
Instruction [InStr]
https://www.microsoft.com/en-us/download/details.aspx?id=55984
Instruction [Mid]
https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/mid-statement
Le code avec des commentaires :
'--------------------------------------------------------------------- ' Fichier .vbs Const ctePourLecture = 1 ' Nom du fichier à lire Const cteRapport = "Resultat.txt" Dim objFSO, objFichier, varNomFic, Texte, Message Dim Chaine, Position ' Création d'on objet pour l'accès au système de fichier Set objFSO = CreateObject("Scripting.FileSystemObject") ' Localisation du script et du fichier à lire ' Capture du nom complet du script varNomFic = WScript.ScriptFullName ' Suppression du nom pur afin de conserver le chamin d'accès varNomFic = Left(varNomFic, InStrRev(varNomFic, "\")) ' Ajout du nom du fichier à lire varNomFic = varNomFic & cteRapport ' Si fichier existe If ( objFSO.FileExists(varNomFic) ) Then ' Création d'un objet fichier pour accès au fichier, et ouverture Set objFichier = objFSO.OpenTextFile(varNomFic, ctePourLecture) ' Tant que fichier n'est pas terminé While Not objFichier.AtEndOfStream ' Lire une ligne Texte = objFichier.ReadLine ' Recherche la position de caractère [=] ' InStr(1, Texte, "=", 1) ' 1 = À partir du premier caractère ' Texte = texte dans lequel la recherche s'effectue ' "=" = Caractère recherché ' 1 = Méthode de comparaison en texte Position = InStr(1, Texte, "=", 1) ' Capture le texte 2 caractère plus loin ' donc après le [="] Texte = Mid(Texte,(Position + 2)) ' Enlève les 2 derniers caractères, ' le caractère de saut de ligne et les guillemets Texte = Mid(Texte, 1, (Len(Texte) - 2)) ' Ajoute le texte trouvé avec un saut de ligne [vbCrLf] Message = Message & vbCrLf & Texte Wend ' Ferme le fichier objFichier.Close ' Libère l'objet Fichier Set objFichier = Nothing ' Affiche à l'écran WScript.Echo Message Else ' Affiche à l'écran WScript.Echo "Fichier absent" End If ' Libère l'objet du système de fichier Set objFSO = Nothing ' Quitte le script avec [0] comme paramètre ' pour signaler "Aucune erreur" WScript.Quit(0) ' '---------------------------------------------------------------------
Cdt
Lupin
bezourox
Messages postés
729
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
19 janvier 2013
143
8 sept. 2011 à 11:09
8 sept. 2011 à 11:09
Ok merci super !