Application.match et tableau VBA

Le
Top100
Bien le Bonjour tous, joyeux noel, bonnes ftes 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 problme vient
il du fait que je construise mon tableau avec Line Input et que la
valeur cherche est une chaine de caratres 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 rsultat.

Merci bien.

Open FICHIER1 For Input As #1
'rcupre 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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel Pierron
Le #4142841
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"
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
Top100
Le #4142741
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"
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


Michel Pierron
Le #4142701
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"
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"
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


Top100
Le #4142571
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"
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"
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




Publicité
Poster une réponse
Anonyme