Traitement de chaîne de caractères pour tri

Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005 - 19 janv. 2005 à 17:58
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005 - 20 janv. 2005 à 16:46
lorsque je fait 'fichier.Name', j'obtiens 'nomdufichier.doc' (il s'agit de doc word).
j'aimerais enlever ce '.doc', comment dois-je faire??

par ailleurs, j'aimerais choisir parmi ces fichiers ('WPtruc-51', 'WPtruc-52', 'WP-truc53') celui qui a le plus grand chiffre de fin... comment accéder à ces chiffre.
je suis novice en VB et j'ai un peu de mal...

merci de votre aide!

Daydayerement Vôtre

12 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 23
19 janv. 2005 à 18:32
pour enlever le .doc :



chaine = "toto.doc"

ma_nouvelle_chaine = Left(chaine,Len(chaine)-4)


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 23
19 janv. 2005 à 18:34
Pour le reste de la question ...



dans le nom de tes fichiers :

WPtruc-51.doc

WPtruc-52.doc



Le tiret est-il toujours présent ?

Le nombre est-il toujours entouré par un tiret et le point du ".doc" ?






Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
19 janv. 2005 à 19:14
merci pour la 1ère partie!
oui, les chiffre sont toujours entourés de .doc et d'un tiret (mais il se peut que par la suite, il n'y ait plus le .doc)

Daydayerement Vôtre
0
cs_ifix Messages postés 13 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 29 septembre 2005
19 janv. 2005 à 19:50
if faut tester tous tes noms de fichiers avec :

chaine = "Wptruc51.doc"
ma_nouvelle_chaine = Left(chaine,Len(chaine)-4)
for x= 1 to len(ma_nouvelle_chaine)
If right(ma_nouvelle_chaine,x)="-" then
' il faut absolument que tu es le symbole "-" dans ton nom de fichier
numero_fichier=mid(ma_nouvelle_chaine,x)
end if
next
msgbox numero_fichier

Pour enumerer tes noms de fichiers , tout depend s 'ils sont dans un repertoire , une listbox ou une feuille de calcul

Ifix
0

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

Posez votre question
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 23
19 janv. 2005 à 20:13
Dim Chiffre As Long

Dim PremierIndice As Long

Dim SecondIndice As Long





Machaine = "WPtruc-51.doc"

PremierIndice = Instr(1,MaChaine,"-",vbTextCompare)+1

SecondIndice = Len(MaChaine)-4



Chiffre = Val(Mid(MaChaine,PremierIndice,SecondIndice-PremierIndice+1))

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_ifix Messages postés 13 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 29 septembre 2005
19 janv. 2005 à 20:19
une petite remarque pour Econs:

si il y a un autre "-" dans le nom du fichier, ton code ne marchera pas
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
19 janv. 2005 à 20:27
juste pour en rajouter et parceque tu n'est pas sure que le point doc soit la,



Dim Chiffre As Long

Dim PremierIndice As Long

Dim SecondIndice As Long

' Dim machaine As String



' machaine = "WPtruc-51.doc"

PremierIndice = InStr(1, machaine, "-", vbTextCompare) + 1

SecondIndice = InStr(1, machaine, ".", vbTextCompare) + 1

If SecondIndice 0 Then SecondIndice Len(machaine)



Chiffre = Val(Mid(machaine, PremierIndice, SecondIndice - PremierIndice + 1))



si tu est sure que le nombre n'a que deux chiffres, tu peut faire encore plus simple...
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 23
20 janv. 2005 à 13:32
ifix > Je sais bien que plusieurs tirets font planter mon code, mais il ne donne pas de précision de ce côté.



cqui789 > Plusieurs points dans le nom font aussi planter ton code.



Ce qu'il faut avant tout, c'est une description précise du type de
chaine qu'on aura à traiter. Ensuite, on pourra sortir un algo correct.


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
20 janv. 2005 à 13:44
bon alors,pour être plus précise sur le type de chaine à traiter, et bien elle aura cette tete :

WP17-descriptionNumero.doc

en fait, 'description' sera collée à 'Numero', celui-ci étant un vrai numéro.ce sera un numéro à deux chiffres exactement ,pas plus (ou peut etre à un chiffre).c'est par rapport à ce numero que j'aurai à choisir : je devrai prendre le nom qui a ce numéro le plus grand.

merci de votre patience!
ça fait du bien de sentir aidée.
Daydayerement Vôtre
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
20 janv. 2005 à 14:13
si tu connait le nombre de chiffres, tu n'as plus besoins du tirret

si description peut finir par un chiffre et que numero n'en a qu'un, tu est dans le c...



machaine = "WP17-description1.doc"

Indice = InStr(1, machaine, ".", vbTextCompare)

If IsNumeric(Mid(machaine, Indice - 2, 2)) Then

Chiffre = Val(Mid(machaine, Indice - 2, 2))

Else

Chiffre = Val(Mid(machaine, Indice - 1, 1))

End If
0
cqui789 Messages postés 261 Date d'inscription jeudi 13 janvier 2005 Statut Membre Dernière intervention 18 mai 2009 3
20 janv. 2005 à 14:21
Je suis bete, en tapant ajouter, je me suis rapeller, tes chiffres sont toujour a la fin moins 4 positions!



machaine = "WP17-description51.doc"

Indice = Len(machaine) - 4

'
longueur du nom -4

If IsNumeric(Mid(machaine, Indice - 1, 2)) Then ' on prend 2 caracteres est si c'est numerique

Chiffre = Val(Mid(machaine, Indice - 1, 2)) ' c'est bon

Else

Chiffre = Val(Mid(machaine, Indice , 1))
' si non, on n'en
prend qu'un

End If


entre nous, si avec les propositions que tu avait tu n'avait pas trouve
quelque chose qui marche, il faudrais etre plus avantureux(se)
0
Daydayer Messages postés 201 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 13 août 2005
20 janv. 2005 à 16:46
c'est gentil de vous être occupé de mon cas!
je vais essayer ce que vous me conseiller... et sans doute que j'aurais bientôt de nouveau besoin de vous!

encore merci (je le dis à chaque fois mais on le dit jamais assez!)

Daydayerement Vôtre
0
Rejoignez-nous