Fonction split

Résolu/Fermé
lowenbrau - 20 nov. 2008 à 16:54
 lowenbrau - 24 nov. 2008 à 11:57
Bonsoir,
Je suis sous VB 2008 ,
j'ai effectuer un streamreader permettant de lire un fichier texte
j'ai fais une conneciton entre un bouton et le chemin d'acces du fichier texte.
ce que je voudrais faire c'est:

par ex on trouve des ligne de ce genre dans le code:

!A1!T2!ABC AZERTY!AQWZSX!10.000!15.000!0.000!NO!MULTIMOD!
!A4!9999!ABC AZERTY!AQWSX!20.000!12.010!90.000!NO!SMD!

Ensuite j'essaye de faire un select à l'aide de la fonction split pour récuperer les lignes ayant un !SMD! à la fin
et seulement celle-la !! les multimod ne m'interressent pas
est-ce correct ?
y a t il une autre fonctoin disponible ?
Dans quels cas comment faire svp
j'ai déjà chercher depuis pas mal de temps et pas c'est pas très clair.

Merci à vous
Bonne soirée
A voir également:

3 réponses

wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
20 nov. 2008 à 17:04
Bonjour

Split n'est pas dans toute les versions Excel, j'ai 2002 c'est Ok, mais 97 pas bon et 2000 je ne sais pas

tu cherche les 5 derniers caractères
si tu fais split(maligne;"!") tu auras tes 2 dernier caracteres sur les 3 denieres position du tableau que split te renvoie
!
SMD
!
alors qu'ile est plus simple d'utiliser pour le controle : right
if right(maligne,5) = "!SMD!" then
1
Bonjour,
Merci de répondre d'une part
d'autre part en utilisant ma fonction split je disais

split(maligne;"!SMD!") est cela ne correpondait pas du tout avec le résultat attendu.

mais là je vais voir la fonction right peut etre que cela marchera. merci je vous tiens au courant

Bonne journée
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
21 nov. 2008 à 08:39
re:

la commande : est devient assez bizarre, car dans le cas ou !SMD! n'est pas present, tu risques de te retrouver avec une erreur
le seul moyen est de tester la position 0 avec la ligne elle meme, si elles sont egales, SMD absent, sinon SMD present

voici le code, j'ai testé et ca marche

Function cherche1(ligne as string, caractere as string) as boolean
      if split(ligne,caractere)(0) = ligne then cherche1 = false else cherche1 = true
end function

autre fonction avec instr (ce qui permet ou qu'il soit dans la liste il est trouvé)
Function chercher2( ligne as string, caractere as string) as boolean
     if instr(ligne,caractere) = 0 then cherche2 = false else cherche2 = true
end if


msgbox cherche1(maligne, "!SMD!")
msgbox cherche2(maligne, "!SMD!")
1
re !

Ton code m'a permis de m'orienter vers la solution Merci !

dim ssplit as string
Split(ligne, "!SMD!")
ssplit = ligne.Split("!SMD!")(9)
If ssplit = "SMD" Then MsgBox(ligne)

voila le code que j'utilise.
Merci encore !
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
21 nov. 2008 à 14:52
re:

je ne sais pas trop, tu as essayé sur une ligne qui ne contient pas !SMD! ?????

Personnellement je pense que ca ne devrait pas marcher, si tu n'as pas !SMD! Dans ta ligne, split renvoie une seule valeur : un tablo(0 to 0)
donc : sur une ligne ou !SMD! n'est pas present
SPlit(ligne,"!SMD!")(9) renverra Erreur d'execution "9": L'indice n'apartient pas à la selection
C'est cela que ca provoque sur mon Excel
0
salut

La je pense que tu n'a pas compris ce que je recherchais à faire avec mon petit programme.
En effet je me sers de la fonction split pour pouvoir faire une sorte de select dans une sous-chaîne
Je veux pour le moment récuperer les lignes contenant !SMD! à la 9ème position de la ligne, ce qui marche
L'erreur que tu as écrite ne s'affiche pas, pour le moment tout fonctionne comme je le veux.
Dans mon fichier, il y a même des cas où il n'y a pas 9 champs dans une ligne et pourtant ca marche.

Maintenant il va falloir que je cherche comment sélectionner des données dans le champ déjà sélectionne ...

a plus
0