Je débute largement en VB et, bien que je comprenne les principes de base de
la programmation, je butte sur deux problèmes (qui n'en forme qu'un seul),
ignorant en réalité les instructions à utiliser :
- dans un fichier texte ouvert via une macro excel, comment retourner le
numéro de la ligne dans laquelle on a trouvé une chaîne de caractères ?
- comment rechercher une autre chaîne de caractères dans les X lignes qui
suivent ou précèdent ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LE TROLL
Salut,
Si tu veux une réponse "macro", faut voir dans le forum Excel...
Si tu veux une réponse VB, ben quand tu lis ton fichier txt, sauf disposition contraire, chaque enregistrement correspond à une ligne, alors il suffit de numéroter avec une variable à chaque fois que tu lis une ligne, et quand c'est la bonne, tu peux ensuite conserver la valeur afin de mémoriser les lignes proches de celle trouvée...
Par exemple:
dim i i=0 lit_encore: lecture... i=i+1 si ligne ok(ligne = i) goto fin si <> fin = goto lit_encore... fin: ' désormais on va pouvoir retourner plus tard (ne pas modifier "i"), à la ligne trouvée ok, et aux suivantes (seconde lecture): dim ligne as string dim j for j = 1 to i lit ligne fichier = ligne next i ligne = ligne recherchée (i), etc... --------------------- si tu veux un exemple avec la syntaxe exacte, demande :o) ---------------------
"Georges Saunier" a écrit dans le message de news:
Bonjour,
Je débute largement en VB et, bien que je comprenne les principes de base de la programmation, je butte sur deux problèmes (qui n'en forme qu'un seul), ignorant en réalité les instructions à utiliser : - dans un fichier texte ouvert via une macro excel, comment retourner le numéro de la ligne dans laquelle on a trouvé une chaîne de caractères ? - comment rechercher une autre chaîne de caractères dans les X lignes qui suivent ou précèdent ?
Vos conseils me seraient très utiles.
Cordialement,
G. Saunier.
Salut,
Si tu veux une réponse "macro", faut voir dans le forum
Excel...
Si tu veux une réponse VB, ben quand tu lis ton fichier
txt, sauf disposition contraire, chaque enregistrement
correspond à une ligne, alors il suffit de numéroter avec
une variable à chaque fois que tu lis une ligne, et quand
c'est la bonne, tu peux ensuite conserver la valeur afin de
mémoriser les lignes proches de celle trouvée...
Par exemple:
dim i
i=0
lit_encore:
lecture...
i=i+1
si ligne ok(ligne = i) goto fin
si <> fin = goto lit_encore...
fin:
' désormais on va pouvoir retourner plus tard (ne pas
modifier "i"), à la ligne trouvée ok, et aux suivantes
(seconde lecture):
dim ligne as string
dim j
for j = 1 to i
lit ligne fichier = ligne
next i
ligne = ligne recherchée (i), etc...
---------------------
si tu veux un exemple avec la syntaxe exacte, demande :o)
---------------------
"Georges Saunier" <saunier@paris7.jussieu.fr> a écrit dans
le message de news: OtLG8FadFHA.220@TK2MSFTNGP12.phx.gbl...
Bonjour,
Je débute largement en VB et, bien que je comprenne les
principes de base de la programmation, je butte sur deux
problèmes (qui n'en forme qu'un seul), ignorant en réalité
les instructions à utiliser :
- dans un fichier texte ouvert via une macro excel,
comment retourner le numéro de la ligne dans laquelle on a
trouvé une chaîne de caractères ?
- comment rechercher une autre chaîne de caractères dans
les X lignes qui suivent ou précèdent ?
Si tu veux une réponse "macro", faut voir dans le forum Excel...
Si tu veux une réponse VB, ben quand tu lis ton fichier txt, sauf disposition contraire, chaque enregistrement correspond à une ligne, alors il suffit de numéroter avec une variable à chaque fois que tu lis une ligne, et quand c'est la bonne, tu peux ensuite conserver la valeur afin de mémoriser les lignes proches de celle trouvée...
Par exemple:
dim i i=0 lit_encore: lecture... i=i+1 si ligne ok(ligne = i) goto fin si <> fin = goto lit_encore... fin: ' désormais on va pouvoir retourner plus tard (ne pas modifier "i"), à la ligne trouvée ok, et aux suivantes (seconde lecture): dim ligne as string dim j for j = 1 to i lit ligne fichier = ligne next i ligne = ligne recherchée (i), etc... --------------------- si tu veux un exemple avec la syntaxe exacte, demande :o) ---------------------
"Georges Saunier" a écrit dans le message de news:
Bonjour,
Je débute largement en VB et, bien que je comprenne les principes de base de la programmation, je butte sur deux problèmes (qui n'en forme qu'un seul), ignorant en réalité les instructions à utiliser : - dans un fichier texte ouvert via une macro excel, comment retourner le numéro de la ligne dans laquelle on a trouvé une chaîne de caractères ? - comment rechercher une autre chaîne de caractères dans les X lignes qui suivent ou précèdent ?
Vos conseils me seraient très utiles.
Cordialement,
G. Saunier.
Fred
Dans le message:, Georges Saunier écrit:
Bonjour,
Je débute largement en VB et, bien que je comprenne les principes de base de la programmation, je butte sur deux problèmes (qui n'en forme qu'un seul), ignorant en réalité les instructions à utiliser : - dans un fichier texte ouvert via une macro excel, comment retourner le numéro de la ligne dans laquelle on a trouvé une chaîne de caractères ? - comment rechercher une autre chaîne de caractères dans les X lignes qui suivent ou précèdent ?
Bonjour, L'idéal, du point de vue occupation mémoire, serait d'utiliser un buffer circulaire de X lignes de texte qui te permettrait, à chaque nouvelle ligne lue dans le fichier, d'avoir à disposition les X lignes précédentes. Pour la recherche dans les X lignes suivantes, il suffit de continuer à lire le fichier (pas besoin de mémorisation).
Une ébauche : 8<--------------- Dim buffer() as string (global) Dim ptr as Integer
Sub InitBuffer(taille as integer) ReDim buffer(taille-1) Dim Index as Integer For Index=0 To taille - 1 buffer(Index)="" Next ptr=0 End Sub
Sub AjouterDansBuffer(chaine as string) buffer(ptr) = chaine ptr = (ptr+1) Mod (UBound(buffer, 0)+1) 'J'ai un doute sur la syntaxe de UBound End Sub 8<---------------------- Le tableau buffer contient les [taille] dernière ligne lues. Si l'ordre à une importance, la plus ancienne des lignes est à l'indice ptr et la plus récente est à l'indice ptr-1 (modulo la taille)
-- Fred
Dans le message:OtLG8FadFHA.220@TK2MSFTNGP12.phx.gbl,
Georges Saunier écrit:
Bonjour,
Je débute largement en VB et, bien que je comprenne les principes de
base de la programmation, je butte sur deux problèmes (qui n'en forme
qu'un seul), ignorant en réalité les instructions à utiliser :
- dans un fichier texte ouvert via une macro excel, comment retourner
le numéro de la ligne dans laquelle on a trouvé une chaîne de
caractères ? - comment rechercher une autre chaîne de caractères dans
les X lignes qui suivent ou précèdent ?
Bonjour,
L'idéal, du point de vue occupation mémoire, serait d'utiliser un buffer
circulaire de X lignes de texte qui te permettrait, à chaque nouvelle
ligne lue dans le fichier, d'avoir à disposition les X lignes
précédentes.
Pour la recherche dans les X lignes suivantes, il suffit de continuer à
lire le fichier (pas besoin de mémorisation).
Une ébauche :
8<---------------
Dim buffer() as string (global)
Dim ptr as Integer
Sub InitBuffer(taille as integer)
ReDim buffer(taille-1)
Dim Index as Integer
For Index=0 To taille - 1
buffer(Index)=""
Next
ptr=0
End Sub
Sub AjouterDansBuffer(chaine as string)
buffer(ptr) = chaine
ptr = (ptr+1) Mod (UBound(buffer, 0)+1) 'J'ai un doute sur la
syntaxe de UBound
End Sub
8<----------------------
Le tableau buffer contient les [taille] dernière ligne lues.
Si l'ordre à une importance, la plus ancienne des lignes est à l'indice
ptr et la plus récente est à l'indice ptr-1 (modulo la taille)
Je débute largement en VB et, bien que je comprenne les principes de base de la programmation, je butte sur deux problèmes (qui n'en forme qu'un seul), ignorant en réalité les instructions à utiliser : - dans un fichier texte ouvert via une macro excel, comment retourner le numéro de la ligne dans laquelle on a trouvé une chaîne de caractères ? - comment rechercher une autre chaîne de caractères dans les X lignes qui suivent ou précèdent ?
Bonjour, L'idéal, du point de vue occupation mémoire, serait d'utiliser un buffer circulaire de X lignes de texte qui te permettrait, à chaque nouvelle ligne lue dans le fichier, d'avoir à disposition les X lignes précédentes. Pour la recherche dans les X lignes suivantes, il suffit de continuer à lire le fichier (pas besoin de mémorisation).
Une ébauche : 8<--------------- Dim buffer() as string (global) Dim ptr as Integer
Sub InitBuffer(taille as integer) ReDim buffer(taille-1) Dim Index as Integer For Index=0 To taille - 1 buffer(Index)="" Next ptr=0 End Sub
Sub AjouterDansBuffer(chaine as string) buffer(ptr) = chaine ptr = (ptr+1) Mod (UBound(buffer, 0)+1) 'J'ai un doute sur la syntaxe de UBound End Sub 8<---------------------- Le tableau buffer contient les [taille] dernière ligne lues. Si l'ordre à une importance, la plus ancienne des lignes est à l'indice ptr et la plus récente est à l'indice ptr-1 (modulo la taille)
-- Fred
Georges Saunier
Oups ! Je viens de lire votre réponse après un aller-retour en province.
Merci à tous les deux pour votre aide, je vais tenter de mettre tout cela en pratique.
Cordialement,
GS.
"Georges Saunier" a écrit dans le message de news:
Bonjour,
Je débute largement en VB et, bien que je comprenne les principes de base de la programmation, je butte sur deux problèmes (qui n'en forme qu'un seul), ignorant en réalité les instructions à utiliser : - dans un fichier texte ouvert via une macro excel, comment retourner le numéro de la ligne dans laquelle on a trouvé une chaîne de caractères ? - comment rechercher une autre chaîne de caractères dans les X lignes qui suivent ou précèdent ?
Vos conseils me seraient très utiles.
Cordialement,
G. Saunier.
Oups ! Je viens de lire votre réponse après un aller-retour en province.
Merci à tous les deux pour votre aide, je vais tenter de mettre tout cela en
pratique.
Cordialement,
GS.
"Georges Saunier" <saunier@paris7.jussieu.fr> a écrit dans le message de
news: OtLG8FadFHA.220@TK2MSFTNGP12.phx.gbl...
Bonjour,
Je débute largement en VB et, bien que je comprenne les principes de base
de la programmation, je butte sur deux problèmes (qui n'en forme qu'un
seul), ignorant en réalité les instructions à utiliser :
- dans un fichier texte ouvert via une macro excel, comment retourner le
numéro de la ligne dans laquelle on a trouvé une chaîne de caractères ?
- comment rechercher une autre chaîne de caractères dans les X lignes qui
suivent ou précèdent ?
Oups ! Je viens de lire votre réponse après un aller-retour en province.
Merci à tous les deux pour votre aide, je vais tenter de mettre tout cela en pratique.
Cordialement,
GS.
"Georges Saunier" a écrit dans le message de news:
Bonjour,
Je débute largement en VB et, bien que je comprenne les principes de base de la programmation, je butte sur deux problèmes (qui n'en forme qu'un seul), ignorant en réalité les instructions à utiliser : - dans un fichier texte ouvert via une macro excel, comment retourner le numéro de la ligne dans laquelle on a trouvé une chaîne de caractères ? - comment rechercher une autre chaîne de caractères dans les X lignes qui suivent ou précèdent ?