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

Application.match et tableau VBA

4 réponses
Avatar
Top100
Bien le Bonjour =E0 tous, joyeux noel, bonnes f=EAtes et toutes ces
sortes de choses
Je cherche une valeur (toto) dans un tableau VBA construit =E0 partir
d'un fichier texte. Voici le code que j'ai fait =E0 partir de l'aide, du
mpfe et de ma phosphoration.
Bien sur, cela ne marche pas. En mode pas =E0 pas, j'ai vu que la
variable "position" prennait la valeur "error 2015". Le probl=E8me vient
il du fait que je construise mon tableau avec Line Input et que la
valeur cherch=E9e est une chaine de carat=E8res INCLUS dans la ligne ?
d'ou mes 2 questions :
1/ comment resoudre ce pb sans transformer mon portable en freesbee le
plus cher du monde
2/ comment connaitre le libell=E9 d'une erreur. J'ai essay=E9 Sub msgbox
error 2015 End sub mais sans r=E9sultat.

Merci bien.

Open FICHIER1 For Input As #1
'r=E9cup=E8re toutes les valeurs du fichier dans un tableau
Do While Not EOF(1)
j =3D j + 1
ReDim Preserve Tblo(1 To j)
Line Input #1, Tblo(j)
Loop
'Sort de la macro si le fichier est vide ou n'existe pas
If j =3D 0 Then
Exit Sub
End If
'recherche la valeur TOTO
For j =3D 1 To UBound(Tblo)
position =3D Application.Match("TOTO", Tblo(j), 0)
Next j
'referme le fichier avant de le r=E9-ouvrir en =E9criture
Close #1
If Err <> 0 Then
Sheets("Sheet1").Range("A4").Value =3D "TROUVE"
Else
Sheets("Sheet1").Range("A5").Value =3D "PAS TROUVE"
End If
Erase Tblo
j =3D 0

4 réponses

Avatar
Michel Pierron
Bonjour Top100;
Il me semble que ce serait plus simple avec ceci:

Dim Info$, Buffer$, f%: f = FreeFile
Open txtFile For Binary Access Read As #f
Buffer = String(LOF(f), Chr(0))
Get #f, , Buffer
Close #f
Info = "NON TROUVE"
If InStr(1, Buffer, "TOTO") Then Info = Mid$(Info, 5)
Sheets("Sheet1").Range("A4").Value = Info

MP


"Top100" a écrit dans le message de news:

Bien le Bonjour à tous, joyeux noel, bonnes fêtes et toutes ces
sortes de choses
Je cherche une valeur (toto) dans un tableau VBA construit à partir
d'un fichier texte. Voici le code que j'ai fait à partir de l'aide, du
mpfe et de ma phosphoration.
Bien sur, cela ne marche pas. En mode pas à pas, j'ai vu que la
variable "position" prennait la valeur "error 2015". Le problème vient
il du fait que je construise mon tableau avec Line Input et que la
valeur cherchée est une chaine de caratères INCLUS dans la ligne ?
d'ou mes 2 questions :
1/ comment resoudre ce pb sans transformer mon portable en freesbee le
plus cher du monde
2/ comment connaitre le libellé d'une erreur. J'ai essayé Sub msgbox
error 2015 End sub mais sans résultat.

Merci bien.

Open FICHIER1 For Input As #1
'récupère toutes les valeurs du fichier dans un tableau
Do While Not EOF(1)
j = j + 1
ReDim Preserve Tblo(1 To j)
Line Input #1, Tblo(j)
Loop
'Sort de la macro si le fichier est vide ou n'existe pas
If j = 0 Then
Exit Sub
End If
'recherche la valeur TOTO
For j = 1 To UBound(Tblo)
position = Application.Match("TOTO", Tblo(j), 0)
Next j
'referme le fichier avant de le ré-ouvrir en écriture
Close #1
If Err <> 0 Then
Sheets("Sheet1").Range("A4").Value = "TROUVE"
Else
Sheets("Sheet1").Range("A5").Value = "PAS TROUVE"
End If
Erase Tblo
j = 0
Avatar
Top100
impeccable. Un grand merci à toi. Sais-tu juste si la methode que
j'utilisais ne marchait pas a cause de "line input" qui me construit
mon tableau par ligne?


Bonjour Top100;
Il me semble que ce serait plus simple avec ceci:

Dim Info$, Buffer$, f%: f = FreeFile
Open txtFile For Binary Access Read As #f
Buffer = String(LOF(f), Chr(0))
Get #f, , Buffer
Close #f
Info = "NON TROUVE"
If InStr(1, Buffer, "TOTO") Then Info = Mid$(Info, 5)
Sheets("Sheet1").Range("A4").Value = Info

MP


"Top100" a écrit dans le message de news:

Bien le Bonjour à tous, joyeux noel, bonnes fêtes et toutes ces
sortes de choses
Je cherche une valeur (toto) dans un tableau VBA construit à partir
d'un fichier texte. Voici le code que j'ai fait à partir de l'aide, du
mpfe et de ma phosphoration.
Bien sur, cela ne marche pas. En mode pas à pas, j'ai vu que la
variable "position" prennait la valeur "error 2015". Le problème vient
il du fait que je construise mon tableau avec Line Input et que la
valeur cherchée est une chaine de caratères INCLUS dans la ligne ?
d'ou mes 2 questions :
1/ comment resoudre ce pb sans transformer mon portable en freesbee le
plus cher du monde
2/ comment connaitre le libellé d'une erreur. J'ai essayé Sub msgbox
error 2015 End sub mais sans résultat.

Merci bien.

Open FICHIER1 For Input As #1
'récupère toutes les valeurs du fichier dans un tableau
Do While Not EOF(1)
j = j + 1
ReDim Preserve Tblo(1 To j)
Line Input #1, Tblo(j)
Loop
'Sort de la macro si le fichier est vide ou n'existe pas
If j = 0 Then
Exit Sub
End If
'recherche la valeur TOTO
For j = 1 To UBound(Tblo)
position = Application.Match("TOTO", Tblo(j), 0)
Next j
'referme le fichier avant de le ré-ouvrir en écriture
Close #1
If Err <> 0 Then
Sheets("Sheet1").Range("A4").Value = "TROUVE"
Else
Sheets("Sheet1").Range("A5").Value = "PAS TROUVE"
End If
Erase Tblo
j = 0


Avatar
Michel Pierron
Re Top100;
Parce que tu remplis mal ton tableau dont tu n'as d'ailleurs pas besoin:

Dim Content As String, OK As Boolean
Open FICHIER1 For Input As #1
Do While Not EOF(1)
Line Input #1, Content
OK = CBool(InStr(1, Content, "TOTO"))
If OK Then Exit Do
Loop
Close #1
If OK Then
Sheets("Sheet1").Range("A4").Value = "TROUVE"
Else
Sheets("Sheet1").Range("A5").Value = "PAS TROUVE"
End If

MP

"Top100" a écrit dans le message de news:

impeccable. Un grand merci à toi. Sais-tu juste si la methode que
j'utilisais ne marchait pas a cause de "line input" qui me construit
mon tableau par ligne?


Bonjour Top100;
Il me semble que ce serait plus simple avec ceci:

Dim Info$, Buffer$, f%: f = FreeFile
Open txtFile For Binary Access Read As #f
Buffer = String(LOF(f), Chr(0))
Get #f, , Buffer
Close #f
Info = "NON TROUVE"
If InStr(1, Buffer, "TOTO") Then Info = Mid$(Info, 5)
Sheets("Sheet1").Range("A4").Value = Info

MP


"Top100" a écrit dans le message de news:

Bien le Bonjour à tous, joyeux noel, bonnes fêtes et toutes ces
sortes de choses
Je cherche une valeur (toto) dans un tableau VBA construit à partir
d'un fichier texte. Voici le code que j'ai fait à partir de l'aide, du
mpfe et de ma phosphoration.
Bien sur, cela ne marche pas. En mode pas à pas, j'ai vu que la
variable "position" prennait la valeur "error 2015". Le problème vient
il du fait que je construise mon tableau avec Line Input et que la
valeur cherchée est une chaine de caratères INCLUS dans la ligne ?
d'ou mes 2 questions :
1/ comment resoudre ce pb sans transformer mon portable en freesbee le
plus cher du monde
2/ comment connaitre le libellé d'une erreur. J'ai essayé Sub msgbox
error 2015 End sub mais sans résultat.

Merci bien.

Open FICHIER1 For Input As #1
'récupère toutes les valeurs du fichier dans un tableau
Do While Not EOF(1)
j = j + 1
ReDim Preserve Tblo(1 To j)
Line Input #1, Tblo(j)
Loop
'Sort de la macro si le fichier est vide ou n'existe pas
If j = 0 Then
Exit Sub
End If
'recherche la valeur TOTO
For j = 1 To UBound(Tblo)
position = Application.Match("TOTO", Tblo(j), 0)
Next j
'referme le fichier avant de le ré-ouvrir en écriture
Close #1
If Err <> 0 Then
Sheets("Sheet1").Range("A4").Value = "TROUVE"
Else
Sheets("Sheet1").Range("A5").Value = "PAS TROUVE"
End If
Erase Tblo
j = 0


Avatar
Top100
ok merci pour tout ça, je vais retravailler ma macro (ou j'utilise
plusieurs fois le tableau) dans ce sens.
Bonne soirée.



Re Top100;
Parce que tu remplis mal ton tableau dont tu n'as d'ailleurs pas besoin:

Dim Content As String, OK As Boolean
Open FICHIER1 For Input As #1
Do While Not EOF(1)
Line Input #1, Content
OK = CBool(InStr(1, Content, "TOTO"))
If OK Then Exit Do
Loop
Close #1
If OK Then
Sheets("Sheet1").Range("A4").Value = "TROUVE"
Else
Sheets("Sheet1").Range("A5").Value = "PAS TROUVE"
End If

MP

"Top100" a écrit dans le message de news:

impeccable. Un grand merci à toi. Sais-tu juste si la methode que
j'utilisais ne marchait pas a cause de "line input" qui me construit
mon tableau par ligne?


Bonjour Top100;
Il me semble que ce serait plus simple avec ceci:

Dim Info$, Buffer$, f%: f = FreeFile
Open txtFile For Binary Access Read As #f
Buffer = String(LOF(f), Chr(0))
Get #f, , Buffer
Close #f
Info = "NON TROUVE"
If InStr(1, Buffer, "TOTO") Then Info = Mid$(Info, 5)
Sheets("Sheet1").Range("A4").Value = Info

MP


"Top100" a écrit dans le message de news:

Bien le Bonjour à tous, joyeux noel, bonnes fêtes et toutes ces
sortes de choses
Je cherche une valeur (toto) dans un tableau VBA construit à partir
d'un fichier texte. Voici le code que j'ai fait à partir de l'aide, du
mpfe et de ma phosphoration.
Bien sur, cela ne marche pas. En mode pas à pas, j'ai vu que la
variable "position" prennait la valeur "error 2015". Le problème vient
il du fait que je construise mon tableau avec Line Input et que la
valeur cherchée est une chaine de caratères INCLUS dans la ligne ?
d'ou mes 2 questions :
1/ comment resoudre ce pb sans transformer mon portable en freesbee le
plus cher du monde
2/ comment connaitre le libellé d'une erreur. J'ai essayé Sub msgbox
error 2015 End sub mais sans résultat.

Merci bien.

Open FICHIER1 For Input As #1
'récupère toutes les valeurs du fichier dans un tableau
Do While Not EOF(1)
j = j + 1
ReDim Preserve Tblo(1 To j)
Line Input #1, Tblo(j)
Loop
'Sort de la macro si le fichier est vide ou n'existe pas
If j = 0 Then
Exit Sub
End If
'recherche la valeur TOTO
For j = 1 To UBound(Tblo)
position = Application.Match("TOTO", Tblo(j), 0)
Next j
'referme le fichier avant de le ré-ouvrir en écriture
Close #1
If Err <> 0 Then
Sheets("Sheet1").Range("A4").Value = "TROUVE"
Else
Sheets("Sheet1").Range("A5").Value = "PAS TROUVE"
End If
Erase Tblo
j = 0