fonction InStr

Le
Mikel
Bonjour!

J'utilise en VBA la fonction InStr de la façon suivante:
sP = InStr(1, sContenu, "1ère",1)
Elle me retourne 0 alors que dans le string sContenu, j'ai bien le texte
"1ère"
Où est l'erreur?
Merci d'avance pour votre aide
Cordialement, Mikel
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #16551061
Mikel wrote:
Bonjour!

J'utilise en VBA la fonction InStr de la façon suivante:
sP = InStr(1, sContenu, "1ère",1)
Elle me retourne 0 alors que dans le string sContenu, j'ai bien le
texte "1ère"...
Où est l'erreur?
Merci d'avance pour votre aide
Cordialement, Mikel



Hello,

C'est curieux. A ce que je sache, le InStr de VBA est le même
que celui de VB et en VB, ceci fonctionne:

Dim txt As String
Dim pat As String
Dim sp As Long

txt = "La 1ère fois"
pat = "1ère"

sp = InStr(1, txt, pat, 1)

MsgBox "sp = " & sp

A l'exécution, Sp vaut bien 4, ce qui est la valeur attendue.

Peux tu poster un exemple de code ?

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Jean-Paulo
Le #16552201
Il y a souvent des problèmes de code relatifs aux accents. Dans le petit
test, on utilise le même
programme pour créer et tester. Dans le fichier, il y peut-être un autre
code de "è". Il faudrait
tester un asc(chaque caractère), ou bien un dump hexa du fichier original.

--
Jean Paulo
"Jean-marc" 48a5490b$0$2860$
Mikel wrote:
Bonjour!

J'utilise en VBA la fonction InStr de la façon suivante:
sP = InStr(1, sContenu, "1ère",1)
Elle me retourne 0 alors que dans le string sContenu, j'ai bien le
texte "1ère"...
Où est l'erreur?
Merci d'avance pour votre aide
Cordialement, Mikel



Hello,

C'est curieux. A ce que je sache, le InStr de VBA est le même
que celui de VB et en VB, ceci fonctionne:

Dim txt As String
Dim pat As String
Dim sp As Long

txt = "La 1ère fois"
pat = "1ère"

sp = InStr(1, txt, pat, 1)

MsgBox "sp = " & sp

A l'exécution, Sp vaut bien 4, ce qui est la valeur attendue.

Peux tu poster un exemple de code ?

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Jean-marc
Le #16556201
Jean-Paulo wrote:


Hello,


Il y a souvent des problèmes de code relatifs aux accents. Dans le
petit test, on utilise le même
programme pour créer et tester. Dans le fichier, il y peut-être un
autre code de "è". Il faudrait
tester un asc(chaque caractère), ou bien un dump hexa du fichier



C'est même presque sur et c'est ce à quoi je pensais en demandant à
voir un petit bout de code :-)

C'est pourquoi il faut être très prudent avec l'utilisation des
caractères diacritiques car cela demande une compréhension
approfondie des notions d'encodage, de page de code, etc.

Même pour des informaticiens professionnels chevronnés, cela reste
un problème non trivial, voire parfois très complexe.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Mikel
Le #16558211
Bonjour!

Précisément, le fichier .txt est constitué de la façon suivante, à partir du
VBA Excel 2007:
- on récupère le code source d'une page web (française) par
WinHttp.WinHttpRequest.5.1,
- ce code est converti du binaire en string par ADODB.Stream dans lequel il
y a un paramètre .charset="us-ascii"
Peut-être faut-il utiliser un autre charset????
J'ai essayé charset="iso-8859-1", mais ça n'a rien arrangé!!!

Cordialement, Mikel

"Mikel" 48a5452c$0$957$
Bonjour!

J'utilise en VBA la fonction InStr de la façon suivante:
sP = InStr(1, sContenu, "1ère",1)
Elle me retourne 0 alors que dans le string sContenu, j'ai bien le texte
"1ère"...
Où est l'erreur?
Merci d'avance pour votre aide
Cordialement, Mikel




Jean-marc
Le #16559361
Mikel wrote:
Bonjour!

Précisément, le fichier .txt est constitué de la façon suivante, à
partir du VBA Excel 2007:
- on récupère le code source d'une page web (française) par
WinHttp.WinHttpRequest.5.1,
- ce code est converti du binaire en string par ADODB.Stream dans
lequel il y a un paramètre .charset="us-ascii"
Peut-être faut-il utiliser un autre charset????
J'ai essayé charset="iso-8859-1", mais ça n'a rien arrangé!!!



Hello,

Tout s'explique... Tu peux regarder du codé des fonctions CharToOem et
les focntions réciproques:
http://msdn.microsoft.com/en-us/library/ms647473(VS.85).aspx

Beaucoup de tests en perspective, j'en ai peur.

Tu peux aussi Googler et regarder les liens de cette page:
http://www.google.fr/search?hl=fr&safe=off&q=VB+oem+page+de+code&meta
La solution est là, avec pas mal de lecture en perspective.

Tu peux aussi investiguer en regardant les codes ascii de ton fichier texte,
avec les fonctions Asc(), Chr$() et consorts.

Bon courage !

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Jean-Paulo
Le #16559351
Bonjour.

Oui. Je n'ai aucun des outils en question! Mais pour résoudre le problème,
il faut un dump du fichier, avec
un outil comme Winhex ou autre outil plus gratuit.

On peut aussi, comme je l'ai dit, faire simplement une boucle dans VBA
for i = 1 to len(machaine)
debug.print asc(mid$(machaine,i,1)),
next i
Dans la fenêtre d'exécution sera affiché chaque caractère. Pour moi, le code
"é" de VB est 233.

Sur une page web, en Usascii, ce serait peut-aussi être 2 ou 3
caractères... comme &#233

(voir http://en.wikipedia.org/wiki/ASCII) et
http://www.terena.org/activities/multiling/euroml/tests/html-eurolat1.html

Bonne chance

--
Jean Paulo
"Mikel" 48a68937$0$900$
Bonjour!

Précisément, le fichier .txt est constitué de la façon suivante, à partir
du VBA Excel 2007:
- on récupère le code source d'une page web (française) par
WinHttp.WinHttpRequest.5.1,
- ce code est converti du binaire en string par ADODB.Stream dans lequel
il y a un paramètre .charset="us-ascii"
Peut-être faut-il utiliser un autre charset????
J'ai essayé charset="iso-8859-1", mais ça n'a rien arrangé!!!

Cordialement, Mikel

"Mikel" 48a5452c$0$957$
Bonjour!

J'utilise en VBA la fonction InStr de la façon suivante:
sP = InStr(1, sContenu, "1ère",1)
Elle me retourne 0 alors que dans le string sContenu, j'ai bien le texte
"1ère"...
Où est l'erreur?
Merci d'avance pour votre aide
Cordialement, Mikel








Mikel
Le #16568311
Bonsoir!

Merci pour vos réponses! Votre aide m'a été précieuse car j'ai approfondi un
domaine peu exploré!
En fait, mes pages web sont codées en UTF-8.
J'a trouvé la petite fonction suivante
http://www.aspfr.com/codes/CONVERSION-CARACTERES-UTF-VERS-FRANCAIS_41904.aspx
qui me permet de retrouver un fichier plus sympathique et de régler mon
problème!
--
Cordialement, Mikel

"Mikel" 48a5452c$0$957$
Bonjour!

J'utilise en VBA la fonction InStr de la façon suivante:
sP = InStr(1, sContenu, "1ère",1)
Elle me retourne 0 alors que dans le string sContenu, j'ai bien le texte
"1ère"...
Où est l'erreur?
Merci d'avance pour votre aide
Cordialement, Mikel




Publicité
Poster une réponse
Anonyme