Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fonction InStr

7 réponses
Avatar
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

7 réponses

Avatar
Jean-marc
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_' ;
Avatar
Jean-Paulo
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" a écrit dans le message de news:
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_' ;






Avatar
Jean-marc
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_' ;
Avatar
Mikel
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" a écrit dans le message de news:
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




Avatar
Jean-marc
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_' ;
Avatar
Jean-Paulo
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" a écrit dans le message de news:
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" a écrit dans le message de news:
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








Avatar
Mikel
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" a écrit dans le message de news:
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