Traitement de chaîne de caractères pour tri

Signaler
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005
-
Daydayer
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005
-
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

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
19
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.
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
19
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.
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005

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
Messages postés
13
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
29 septembre 2005

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
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
19
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.
Messages postés
13
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
29 septembre 2005

une petite remarque pour Econs:

si il y a un autre "-" dans le nom du fichier, ton code ne marchera pas
Messages postés
261
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
18 mai 2009
2
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...
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
19
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.
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005

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
Messages postés
261
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
18 mai 2009
2
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
Messages postés
261
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
18 mai 2009
2
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)
Messages postés
201
Date d'inscription
mercredi 1 décembre 2004
Statut
Membre
Dernière intervention
13 août 2005

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