Recherche des mots comportant un tiret (-) dans une phrase

Signaler
Messages postés
4
Date d'inscription
jeudi 10 octobre 2013
Statut
Membre
Dernière intervention
10 octobre 2013
-
Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
-
Bonjour, je cherche une solution pour identifier et envoyer dans un fichier "résultats" les mots comportant un ou plusieurs tirets (tiret du 6), dans un fichier "données à trier". Je dispose d'un PC windows 7. Si quelqu'un a une solution simple, ce serait très sympa.... Merci d'avance

8 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Bonjour,
commence par le 1er point (identifier chacun de ces mots) ===>>> ouvre STP ton aide VBA sur le mot Split; lis puis sers-t-en
Reviens avec ton code d'essai après cette lecture si encore en difficulté.
Le deuxième point est une question récurrente sur ce forum (écriture dans un fichier texte) et fait l'objet d'un nombre impressionnant de discussions résolues et de codes déposés (utilise le moteur de recherche de ce forum). Ouvre également ton aide VBA sur le mot Open (rubrique Open, instruction). Elle est à lire.
Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
338
Bonjour.
De quel type de fichier s' agit il ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Bonjour, jordane45,
Très bonne question, en effet.
Et en plus, je ne réalise que maintenant qu'il ne veut qu'identifier....
Utilisation; à son gré, de Like ou de Instr (à lire dans l'aide VBA)
Messages postés
4
Date d'inscription
jeudi 10 octobre 2013
Statut
Membre
Dernière intervention
10 octobre 2013

Bonjour et merci de vos réponses.
Le fichier est un .txt, mais si ça peut marcher pour des formats Excel ou pdf, ce serait très bien. Je cherche à identifier (trouver) et exporter vers un autre fichier texte les résultats.
Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
338
Autres questions :
Vous souhaitez réaliser ceci à partir de quel logiciel (Excel, Word ? )
C'est bien en VBA que vous souhaitez réaliser ceci ?

Pour manipuler les fichiers text en VBA vous pouvez utiliser ceci :
http://warin.developpez.com/access/fichiers/#LII

Et comme le dit Ucfoutu, tu peux ensuite utiliser LIKE pour effectuer tes recherches :
http://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-R
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Tout cela demande quand-même une réflexion liminaire sur ce que l'on veut faire.
Car ton titre parle de l'analyse d'une phrase et de l'extraction de mots comportant des tirets.
Regardons maintenant celle-ci, de phrase :
Il s'en est fallu de peu pour qu'il tombe, c'est certain, parce-qu'il était en équilibre sur un meuble (canapé-lit) lui-même en équilibre, qu'Anne-Marie lui avait acheté chez Jean-Pierre Dupont-Durand"
On voit ici bien l'importance de l'identification des "mots". Ils ne sont pas toujours simplement des chaînes de caractères séparées par des espaces, d'une part, et, d'autre part (cas de "parce-qu'il") parce-qu'ils peuvent ne pas correspondre à ce que tu cherches à faire.
Conclusion : si tu veux une réponse adaptée à ton besoin, il vaudra mieux que tu précises très exactement ce besoin.
Messages postés
4
Date d'inscription
jeudi 10 octobre 2013
Statut
Membre
Dernière intervention
10 octobre 2013

Bon, pour préciser, voici ce que je cherche à isoler : les mots comportant des tirets, dans une chaîne de ce type (exemple) :

60676-86-0

3.64 E-02
87.7

877000

51.15

511474

Therm

po

Proprietary

2.08 E-03
5.0

50000

2.92

29160

Therm


Proprietary

2.08 E-03
5.0

50000

2.92

Je n'ai pas de préférence sur le logiciel, j'avais d'abord pensé à PowerShell, mais ça me semple trop compliqué pour moi, déjà qu'en VB, je vais devoir apprendre les bases, que je ne connais pas.
Je peux mettre cette suite de mots dans Excel, mais si je peux traiter le fichier texte directement c'est encore mieux.
Désolé de vous paraître ultra débutant, mais c'est le cas. J'imagine que pour vous,c'est trivial. Merci en tout cas de votre aide.
Messages postés
29743
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2020
338
déjà qu'en VB, je vais devoir apprendre les bases, que je ne connais pas.
Attention toutefois, ici vous êtes dans la section vbA du forum. (donc sous entendu, vous développerez votre application sous Excel, Word ou tout autre logiciel disposant de ce langage.

Votre demande pourrait tout aussi bien être traitée en VB.net, ou plus simplement en VBScript (mais là..ce sont d'autres sections du forum).

Suivez les conseils d'Ucfoutu et si, vous décidez finalement que vous ne voulez pas passer par du VBA.. à ce moment là il faudra fermer ce sujet et ouvrir une nouvelle question dans la bonne section du forum.

Sachant que (pour info) les quelques informations qu'il vous à donné sont aussi valables en VBScript..
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Ce que tu montyre n'est alors plus une "phrase", mais une suite de données séparées par un retour à la ligne (vbcrlf)
Toujours pas vraiment clair. Que gardes-tu, par exemple de :
3.64 E-02 ?
tout ou uniquement E-02 ?
Messages postés
4
Date d'inscription
jeudi 10 octobre 2013
Statut
Membre
Dernière intervention
10 octobre 2013

Précision : dans l'exemple ci-dessus, je ne recherche que les mots sans espace comportant des tirets (un ou plusieurs) : 2.08 E-03 5.0 ne doit pas être retenu. Seul 60676-86-0 doit être identifié et exporté vers le fichier "résultats".
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Il te faut allors boucler sur les lignes et, pour chaque ligne L lue :
If not L like "* *" and L like *-", que tu peux également écrire :
if not instr(L," ") and instr("-")