Accueil > Forum > > > > Problème de chaînes !!!
Problème de chaînes !!!
vendredi 25 février 2005 à 22:27:43 |
Problème de chaînes !!!

eric03
|
Bonjour ! Voila mon souci : sur un formulaire j'ai 'Texte14' rempli avec une référence : ex.:'Poste de travail'. A l'aide d'un code, il faut que je supprime les mots de moins de 5 lettres (reste 'Poste travail'). Ensuite, je dois remplacer les espaces par des +. ('Poste+travail'). Comment puis-je faire, SVP ??? Merci d'avance ! Eric
|
|
vendredi 25 février 2005 à 23:05:03 |
Re : Problème de chaînes !!!

tryborg
|
Réponse acceptée !
Je ne c pas si mon algo est efficace mais ca marche, j'ai bidouillé ca en deux minute : Dim i As Long Machaine$ = "Poste de travail et tout autres chaines de caractères..." For i = 1 To Len(Machaine$) If Mid$(Machaine$, i, 1) = " " Then If Mid$(Machaine$, i + 3, 1) = " " Then Machaine$ = Left$(Machaine$, i - 1) & "+" & Mid$(Machaine$, i + 4, Len(Machaine$)) Else: Machaine$ = Left$(Machaine$, i - 1) & "+" & Mid$(Machaine$, i + 1, Len(Machaine$)) End If End If Next i Text1.Text = Machaine$ Voilivoilou...
tryborg 
|
|
samedi 26 février 2005 à 00:32:15 |
Re : Problème de chaînes !!!

crenaud76
|
Réponse acceptée !
Autre proposition : Function TraiteChaine(ByVal LaChaine As String) As String Dim M() As String, i As Long, Buffer As String
; On éclat la chaien en mot dans un tableau M = Split(LaChaine, " ") ; Pour chaque élément de tableau For i = LBound(M) To UBound(M) ; S'il fait moins de 5 car. de long on l'éfface If Lenb(M(i))<10 Then M(i) = "" Next ; On reconstruit la chaine avec des "+" entre les mots Buffer = Join$(M, "+") ; Tant qu'il y a deux "+" l'un a coté de l'autre While Instr(Buffer, "++") > 0 ; On les remplace par un seul "+" Buffer = Replace$(Buffer, "++", "+") Wend " On revoie le tampon TraiteChaine = Buffer End Function
Avec cela, ça devrait passer Christophe R
|
|
samedi 26 février 2005 à 00:36:57 |
Re : Problème de chaînes !!!
|
samedi 26 février 2005 à 03:49:02 |
Re : Problème de chaînes !!!

eric03
|
Salut ! Merci à vous pour les codes, les deux fonctionnent et vont me servir, car selon les chaînes, on n'arrive pas toujours au même résultat, en appliquant l'une ou l'autre méthode. Vraiment un grand merci !!!!! Eric
|
|
dimanche 27 février 2005 à 13:27:02 |
Re : Problème de chaînes !!!

cqui789
|
Tu n'obtiend pas la meme chose parceque tryborg ne detecte que les mots de 2 lettres et crenaud76 detecte les mots jusqu'a 9 lettres...
|
|
dimanche 27 février 2005 à 13:47:07 |
Re : Problème de chaînes !!!

eric03
|
Tu es dans l'erreur, le code de Triborg ne prend que les mots SUPERIEURS à 2 lettres mais le résultat est parfait. Pour le code de Crenaud76, essaye-le d'abord et tu verra qu'il fonctionne très bien. Eric
|
|
dimanche 27 février 2005 à 15:48:06 |
Re : Problème de chaînes !!!

cqui789
|
Desole Crenaud76, je ne connaissait pas la fonction lenb, que j'ai confondu avec len, je n'ai pas trouve de doc a ce sujet.
pour ce qui est de tryborg, je confirme qu'il ne detecte que les mots
de 2 lettres, c'est a dire qu'il te laisse les mots d'une lettre en
plus de ceux superieurs a 2 lettre et apres essai, je constate que si 2
mots de 2 lettres se suivent, il laisse le deuxieme
mettons que tu tappe (c'est juste un exemple)
vue de la fenetre a la jetee fin
Crenaud76 donne :
+fenetre+jetee+
Ok si les + avant et apres ne te genent pas
tryborg donne:
vue+la+fenetre+a+jetee+fin
Garde un 2 lettres et le 1 lettres.
J'ai essaye de refaire le code de Crenaud76 sans le split et plus
simple mais je doit avouer que je me suis perdu dans des boucles....
|
|
dimanche 27 février 2005 à 16:49:16 |
Re : Problème de chaînes !!!

cqui789
|
Je ne voulait pas rester sur une critique sans proposer ma solution.
Je n'arrivait pas a enlever les premiers et derniers mots si
necessaire, il sufisait de rajouter un espace de chaque cote et enlever
les + resultants apres...
Function TraiteChaine(ByVal LaChaine As String) As String
Dim PosEsp As Integer, PosEspSuiv As Integer, chaine As String
' on ajoute des espaces pour traiter automatiquement les premier et dernier mots
chaine = " " & LaChaine & " "
PosEsp = 1 ' position du premier espace, celui qu'on vient de rajouter
Do Until PosEsp = 0 ' tant qu'il y a un espace a traiter
' pointe sur l'espace suivant si il est a moins de 5 positions
PosEspSuiv = InStr(Mid$(chaine, PosEsp + 1, 5), " ")
' remplace l'espace et le mot eventuel par un +
chaine = Left$(chaine, PosEsp - 1) & "+" & Mid$(chaine, PosEsp + 1 + PosEspSuiv, Len(chaine))
' ne passe a
l'espace suivant que si pas trouve de mot a remplacer pour le cas de
plusieurs mots de moins de 5 lettres se suivant
If PosEspSuiv = 0 Then PosEsp = InStr(chaine, " ")
Loop
' si au moins un mot de + de 5 lettres trouve, on retire les "+" du debut et de la fin
TraiteChaine = IIf(Len(chaine) > 2, Mid$(chaine, 2, Len(chaine) - 2), "")
End Function
|
|
mardi 1 mars 2005 à 09:22:40 |
Re : Problème de chaînes !!!

crenaud76
|
Je détecte tous les mots, quel que soit leur longueur ! je ne m'arrete pas au mot de 9 lettres c'est mon test '< 10' qui vous fait penser cela ? Le Lenb() retourne la longueur d'une chaine ... en octet, donc le double d'un Len() ! C'est pourquoi, afin de stopper les mots de mois de cinq lettre je fait un test de Lenb(Mot(i)) par rapport à 10 (=5*2). Pourquoi utiliser Lenb() plutot que Len() !! Car Lenb() est plus rapide que Len(). En effet, Len() fait appel à Lenb et ensuite, il divise le résultat par deux !! On gagne donc une division par deux (d'accord c'est une opération tres rapide : décalage d'un bit sur la droite) mais c'est toujours ca de gagner ! j'ai l'habitude de l'utiliser quand ca ne complique pas le code. Pour ce qui est des + en début et en fin (je n'avais pas fait attention car j'ai pondu le code sans le tester ) Il suffit de remplacer la dernière ligne par TRaiteChaine = Mid$(Buffer, 2, Len(Buffer)-2) ! Et la, ce n'est pas un Lenb() !! C'est bien un Len() !! Pour ce qui est de al version Split() en vB5, il existe plein de version de cette fonction (il y en a sans doute içi meme sur ce site, je n'ai pas regardé mais je doute fort que cette question n'ai jamais trouvé de solution !)Sans doute Idem pourle Join() qui doit aussi te manquer en VB5
Christophe R
|
|
Cette discussion est classée dans : problème, poste, travail, chaînes
Répondre à ce message
Sujets en rapport avec ce message
PB après installation sur Win 95 [ par Nelly ]
Bonjour a tous, voilà mon problème : j'ai développé sur mon poste qui est en Windows95 une appli sous VB6 qui ouvre des bases access et exporte de
Problème de librairie [ par spikespiegelsan ]
J'ai développé en macro Excel VBA (sous Excel 97) une macro qui utilise des fonctions telles que CURDIR ou MID.Ca fonctionne sur mon poste, mais pas s
Poste de travail [ par NHenry ]
Comment ouviri le poste de travail, le voisinage réseau, un raccourcis, ... à partir de VB? Merci d'avance.
Retour à la ligne [ par sebcar2001 ]
Bonjour,Je suis débutant en vb et j'ai un problème.Je cherche à découper des chaînes de caractères avec une instruction Mid. Jusque là aucun problème.
problème de dll avec crystal report [ par yoda ]
Amis développeur,Je bosse depuis peu sous VB.net et je n'arrive pas à imprimer sur un poste autre que mon poste de développement. Je m'explique....J'a
Problème d'installation [ par Tatar ]
Bonjour a tous,j'ai fait un programme en VB6 et j'essaie de l'installer sur des portables. Manque de pot, sur les portable, il ne marche pas complètem
Objet OLE [ par cybersix ]
Bonjour,Voici mon petit problème.J'affiche un fichier word (*.doc) via un objet OLE, l'exécution du programme sur mon poste se déroule sans problème,
Problème avec la commande "Chr()" sur mon PC [ par mastere30 ]
Bonjour tlm,j'ai une application VBA-Word développée par mes soins au travail. En voulant la reprendre à la maison, en passant sur un "Chr(10)" ou 11,
Gestion d'équipes de travail [ par lap2 ]
Salut,Je débute en prog et je suis confronté à un problème. Je voudrait pouvoir créer un programme qui me permettrait de savoir comment je travaillera
??? ICONE DU POSTE DE TRAVAIL ??? [IMPORTANT] [ par ScSami ]
Comment obtenir l'icone du poste de travail ???Bien entendu, je veux celui utilisé (pas celui par défaut) !Et aussi, dans la foullé, celui de la corbe
Livres en rapport
|
Derniers Blogs
SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|