Chercher/Trouver une sous-chaine

Bonjour à tous,

J'aimerais dans un tableau de chaines de caractères, trouver un mot et retourner le nom de la zone.

le nom de chaque zone est le premier élément de chaque sous-tableau.

Le tableau à traiter :

tZon = Array( _

Array("Frn", "Frn", "Mdrs", "Krms", "Tkh", "Mdn", "Rsf"), _

Array("Sgr", "Sgr", "Nai", "Dhb"), _

Array("Khl", "Khl", "Srg", "Zml"))

Le mot rechercher : "Tkh"

Comment coder cela ?

Mzerci d'avance.

Bonjour,

Sub test()
Dim tZon
Dim i As Integer, j As Integer
Dim Rep As String
    tZon = Array( _
    Array("Frn", "Frn", "Mdrs", "Krms", "Tkh", "Mdn", "Rsf"), _
    Array("Sgr", "Sgr", "Nai", "Dhb"), _
    Array("Khl", "Khl", "Srg", "Zml"))
    Rep = InputBox("Quel est le mot recherché ?")
    For i = 0 To UBound(tZon, 1)
        For j = 0 To UBound(tZon(i), 1)
            If tZon(i)(j) = Rep Then
                MsgBox "Le nomde la zone est " & tZon(i)(0)
                Exit Sub
            End If
        Next j
    Next i
End Sub

A+

Bonjour,

Variante modularisée :

Dim tZon

Function QuelleZone(mot As String) As String
    Dim i%, j%
    For i = 0 To UBound(tZon)
        For j = 1 To UBound(tZon(i))
            If tZon(i)(j) = mot Then
                QuelleZone = tZon(i)(0)
                Exit Function
            End If
        Next j
    Next i
    QuelleZone = "non trouvé"
End Function

Sub Demo()
    tZon = Array( _
     Array("Frn", "Frn", "Mdrs", "Krms", "Tkh", "Mdn", "Rsf"), _
     Array("Sgr", "Sgr", "Nai", "Dhb"), _
     Array("Khl", "Khl", "Srg", "Zml"))
    MsgBox QuelleZone("Tkh")
End Sub

Cordialement.

Bonjour frangy, MFeraand;

Merci pour le code.

Une petite chose :

Au lieu de trouver le nom de la zone représenté par un mot, j'aimerais le trouver sous le tableau correspondant (Les tableaux me serviront pour stocker du texte) :

Ex: "Frn" correspond au tableau TxtFrn()

Ex: "Srg" correspond au tableau TxtSrg()

Ex: "Zml" correspond au tableau TxtKhl()

Merci.

Au lieu de trouver le nom de la zone représenté par un mot, j'aimerais le trouver sous le tableau correspondant

C'est à dire ? Tu n'as fourni aucun fichier, nous ne sommes donc aucunement en mesure de matérialiser des emplacements ! Te contenter de penser demeure très insuffisant !

D'accord

Voici un exemple en PJ avec trois fichiers texte !

1) XLP_Texte.txt contient le fichier texte à manipuler

2) Frn (231016).txt - Le résultat de l’extraction correspondante à la zone "Frn"

3) Khl (231016).txt - Le résultat de l’extraction correspondante à la zone "Khl"

8xlp-texte.txt (671.00 Octets)
6frn-231016.txt (400.00 Octets)
6khl-231016.txt (114.00 Octets)

Cela ressemble à un changement complet de sujet !

Et aucun tableau dans le fichier Excel !

Bonsoir MFerrand,

Le fichier Excel est utilisé pour lire le fichier texte principal, le traiter selon des conditions données et puis le décortiquer pour en avoir plusieurs petits fichiers texte en fin de compte.

Tu t'es trompé de sujet au départ, en fin de compte...

Avant de fermer ce fil, j'aimerais juste savoir comment choisir le tableau correspondant au mot retrouvé si c'est possible ou avoir une idée alternative pour faire cela

Si je comprends un peu ton propos, tu disposes d'un fichier texte : il te faut l'ouvrir dans Excel et traiter son contenu pour établir tes tableaux dans lesquels tu rechercheras...

Pour l'instant, je n'ai vu aucune des mentions que tu désignes comme significatives présentes dans le fichier texte que tu signales comme initial !

Cordialement.

Bonjour MFerrand;

Dans le fichier texte initial XLP_Texte.txt, je devrais trouver les noms des localités qui correspondent au valeurs du tableau initial tZone.

Ces noms se trouvent dans les lignes qui débutent par "<!"

Une fois connaitre le nom de la zone, on ouvre le tableau correspondant à cette zone pour stocker les lignes correspondantes du fichier texte initial.

Ex: Le premier nom rencontré dans le fichier texte après un "<!" est bien "Krms"

"Kms" selon le tableau tZone() appartient à la zone "Frn", donc le tableau qui sera utilisé pour stocker ces lignes :

012779020 012779023 012779025 012779048 012779060

sera TxtFrn()

J’espère avoir un peu éclaircis les choses

La question de la recherche dans ton tableau tZone est une affaire déjà vue.

Pour le reste la situation est pour l'instant trop confuse. Tu donnes l'impression de vouloir travailler exclusivement sur des fichiers texte. Dans ce cas, je laisse la suite à d'autres s'il y a des candidats...

Je veux bien examiner comment traiter dans Excel une fois le fichier ouvert dans Excel. Pas autrement.

Cordialement.

Bonjour MFerrad,

Voici une autre idée qui se base sur deux parties :

  • La première consiste à lire, traiter et à extraire les données importantes et les stocker dans le tableau txtTb()
  • La deuxième partie décortique le tableau principal en trois sous-tableaux selon les trois zones.

Le code fonctionne à 70% reste à faire dans la deuxième partie surtout.

Bonjour à tous,

Une piste possible ?

Rechercher des sujets similaires à "chercher trouver chaine"