Bonjour, Soit un tableau "T" dans lequel tu recherches un "Mot" d'une chaîne de caractère "Mot" et "T" sont des variables. X = application.Match("*" & mot & "*", T, 0) MichD
Bonjour,
Soit un tableau "T" dans lequel tu recherches un "Mot" d'une chaîne de caractère
Bonjour, Soit un tableau "T" dans lequel tu recherches un "Mot" d'une chaîne de caractère "Mot" et "T" sont des variables. X = application.Match("*" & mot & "*", T, 0) MichD
Apitos
Bonjour MichD, Avec mot="sc1" Sub rechercheTb() Dim Mot As String T = [A2:A30] For i = LBound(a) To UBound(a) ' Si H1 = Tous récupérer tous les numéros ' Si H1 = une sous-chaine à rechercher alors ' Récupérer seulement les sous-chaines identiques ' avec leurs numéros correspondants Mot = [H1] X = Application.Match("*" & Mot & "*", T, 0) Next End Sub X sera égal à 1, soit la première occurrence dans le tableau . Comment faire pour retrouver le reste des occurrences ? Merci.
Bonjour MichD,
Avec mot="sc1"
Sub rechercheTb()
Dim Mot As String
T = [A2:A30]
For i = LBound(a) To UBound(a)
' Si H1 = Tous récupérer tous les numéros
' Si H1 = une sous-chaine à rechercher alors
' Récupérer seulement les sous-chaines identiques
' avec leurs numéros correspondants
Mot = [H1]
X = Application.Match("*" & Mot & "*", T, 0)
Next
End Sub
X sera égal à 1, soit la première occurrence dans le tableau .
Comment faire pour retrouver le reste des occurrences ?
Bonjour MichD, Avec mot="sc1" Sub rechercheTb() Dim Mot As String T = [A2:A30] For i = LBound(a) To UBound(a) ' Si H1 = Tous récupérer tous les numéros ' Si H1 = une sous-chaine à rechercher alors ' Récupérer seulement les sous-chaines identiques ' avec leurs numéros correspondants Mot = [H1] X = Application.Match("*" & Mot & "*", T, 0) Next End Sub X sera égal à 1, soit la première occurrence dans le tableau . Comment faire pour retrouver le reste des occurrences ? Merci.
MichD
Essaie comme ceci : '-------------------------------------------- Sub rechercheTb() Dim Mot As String Mot = "sc1" T = [A2:A30] For i = LBound(A) To UBound(A) Mot = [H1] If InStr(1, A(1), Mot, vbTextCompare) > 0 Then MsgBox "Le " & Mot & " est présent dans la chaîne " & A(1) & _ ". Il se retrouve au " & i & "rang." End If Next End Sub '-------------------------------------------- MichD "Apitos" a écrit dans le message de groupe de discussion : Bonjour MichD, Avec mot="sc1" Sub rechercheTb() Dim Mot As String T = [A2:A30] For i = LBound(a) To UBound(a) ' Si H1 = Tous récupérer tous les numéros ' Si H1 = une sous-chaine à rechercher alors ' Récupérer seulement les sous-chaines identiques ' avec leurs numéros correspondants Mot = [H1] X = Application.Match("*" & Mot & "*", T, 0) Next End Sub X sera égal à 1, soit la première occurrence dans le tableau. Comment faire pour retrouver le reste des occurrences ? Merci.
Essaie comme ceci :
'--------------------------------------------
Sub rechercheTb()
Dim Mot As String
Mot = "sc1"
T = [A2:A30]
For i = LBound(A) To UBound(A)
Mot = [H1]
If InStr(1, A(1), Mot, vbTextCompare) > 0 Then
MsgBox "Le " & Mot & " est présent dans la chaîne " & A(1) & _
". Il se retrouve au " & i & "rang."
End If
Next
End Sub
'--------------------------------------------
MichD
"Apitos" a écrit dans le message de groupe de discussion :
aad045a6-19d1-4734-928e-0c84c029b53e@googlegroups.com...
Bonjour MichD,
Avec mot="sc1"
Sub rechercheTb()
Dim Mot As String
T = [A2:A30]
For i = LBound(a) To UBound(a)
' Si H1 = Tous récupérer tous les numéros
' Si H1 = une sous-chaine à rechercher alors
' Récupérer seulement les sous-chaines identiques
' avec leurs numéros correspondants
Mot = [H1]
X = Application.Match("*" & Mot & "*", T, 0)
Next
End Sub
X sera égal à 1, soit la première occurrence dans le tableau.
Comment faire pour retrouver le reste des occurrences ?
Essaie comme ceci : '-------------------------------------------- Sub rechercheTb() Dim Mot As String Mot = "sc1" T = [A2:A30] For i = LBound(A) To UBound(A) Mot = [H1] If InStr(1, A(1), Mot, vbTextCompare) > 0 Then MsgBox "Le " & Mot & " est présent dans la chaîne " & A(1) & _ ". Il se retrouve au " & i & "rang." End If Next End Sub '-------------------------------------------- MichD "Apitos" a écrit dans le message de groupe de discussion : Bonjour MichD, Avec mot="sc1" Sub rechercheTb() Dim Mot As String T = [A2:A30] For i = LBound(a) To UBound(a) ' Si H1 = Tous récupérer tous les numéros ' Si H1 = une sous-chaine à rechercher alors ' Récupérer seulement les sous-chaines identiques ' avec leurs numéros correspondants Mot = [H1] X = Application.Match("*" & Mot & "*", T, 0) Next End Sub X sera égal à 1, soit la première occurrence dans le tableau. Comment faire pour retrouver le reste des occurrences ? Merci.
Apitos
Bonjour, J'ai essayé de traiter le cas ou mot = "tous", mais je n'arrive pas encore !
Bonjour,
J'ai essayé de traiter le cas ou mot = "tous", mais je n'arrive pas encore !
Bonjour, J'ai essayé de traiter le cas ou mot = "tous", mais je n'arrive pas encore !
MichD
Tu as bien raison. Toutes mes excuses! Lorsqu'un tableau (array) représente une plage de cellules, le tableau a 2 dimensions ( lignes, colonnes) comme l'adresse d'une cellule. '------------------------------------------------------------------ Sub rechercheTb() Dim Mot As String Dim T() ' As Variant 'Adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'L'Expression cherchée Mot = .Range("H1") 'Dans le tableau suivant T = .Range("A2:A30").Value End With For i = LBound(T, 1) To UBound(T, 1) If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then MsgBox "Le """ & Mot & """ est présent dans la chaîne """ & _ T(i, 1) & """. Il se retrouve au " & i & " rang." End If Next End Sub '------------------------------------------------------------------ MichD
Tu as bien raison. Toutes mes excuses!
Lorsqu'un tableau (array) représente une plage de cellules,
le tableau a 2 dimensions ( lignes, colonnes) comme l'adresse d'une cellule.
'------------------------------------------------------------------
Sub rechercheTb()
Dim Mot As String
Dim T() ' As Variant
'Adapte le nom de l'onglet de la feuille
With Worksheets("Feuil1")
'L'Expression cherchée
Mot = .Range("H1")
'Dans le tableau suivant
T = .Range("A2:A30").Value
End With
For i = LBound(T, 1) To UBound(T, 1)
If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then
MsgBox "Le """ & Mot & """ est présent dans la chaîne """ & _
T(i, 1) & """. Il se retrouve au " & i & " rang."
End If
Next
End Sub
'------------------------------------------------------------------
Tu as bien raison. Toutes mes excuses! Lorsqu'un tableau (array) représente une plage de cellules, le tableau a 2 dimensions ( lignes, colonnes) comme l'adresse d'une cellule. '------------------------------------------------------------------ Sub rechercheTb() Dim Mot As String Dim T() ' As Variant 'Adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'L'Expression cherchée Mot = .Range("H1") 'Dans le tableau suivant T = .Range("A2:A30").Value End With For i = LBound(T, 1) To UBound(T, 1) If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then MsgBox "Le """ & Mot & """ est présent dans la chaîne """ & _ T(i, 1) & """. Il se retrouve au " & i & " rang." End If Next End Sub '------------------------------------------------------------------ MichD
Apitos
Oui, j'ai réglé l'erreur du tableau (L'indice n'appartient pas à la sélection) car il faut l’écrire en deux dimensi ons : T(i,1) Mais comment écrire un code pour traiter le cas ou mot = "tous" '------------ Sub RechercheTb() Dim mot As String, rL1, rL2 Dim i As Integer, Lastrw As Long, plg As Range, c As Range, cc As Range Set rL1 = CreateObject("System.Collections.ArrayList") Set rL2 = CreateObject("System.Collections.ArrayList") mot = Sheets("Feuil1").Range("H1") Lastrw = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row Range("K2:L" & Lastrw).ClearContents a = Sheets("Feuil1").Range("A2:A" & Lastrw) If mot <> "tous" Then For i = LBound(a) To UBound(a) If InStr(1, a(i, 1), mot) > 0 Then rL1.Add i 'c.Row End If Next End If r = rL1.Toarray() ' Si mot = "tous" alors ? For j = LBound(r) To UBound(r) For k = r(j) + 1 To UBound(a) If IsNumeric(Split(a(k, 1), "L3-")(1)) Then rL2.Add Mid(a(k, 1), 4, Len(a(k, 1)) - 3) Else GoTo nt: End If Next nt: Next End Sub '------------ http://www.cjoint.com/c/GFyataqbo6m
Oui, j'ai réglé l'erreur du tableau (L'indice n'appartient pas à la sélection) car il faut l’écrire en deux dimensi ons : T(i,1)
Mais comment écrire un code pour traiter le cas ou mot = "tous"
'------------
Sub RechercheTb()
Dim mot As String, rL1, rL2
Dim i As Integer, Lastrw As Long, plg As Range, c As Range, cc As Range
Set rL1 = CreateObject("System.Collections.ArrayList")
Set rL2 = CreateObject("System.Collections.ArrayList")
mot = Sheets("Feuil1").Range("H1")
Lastrw = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
Range("K2:L" & Lastrw).ClearContents
a = Sheets("Feuil1").Range("A2:A" & Lastrw)
If mot <> "tous" Then
For i = LBound(a) To UBound(a)
If InStr(1, a(i, 1), mot) > 0 Then
rL1.Add i 'c.Row
End If
Next
End If
r = rL1.Toarray()
' Si mot = "tous" alors ?
For j = LBound(r) To UBound(r)
For k = r(j) + 1 To UBound(a)
If IsNumeric(Split(a(k, 1), "L3-")(1)) Then
rL2.Add Mid(a(k, 1), 4, Len(a(k, 1)) - 3)
Else
GoTo nt:
End If
Next
nt:
Next
Oui, j'ai réglé l'erreur du tableau (L'indice n'appartient pas à la sélection) car il faut l’écrire en deux dimensi ons : T(i,1) Mais comment écrire un code pour traiter le cas ou mot = "tous" '------------ Sub RechercheTb() Dim mot As String, rL1, rL2 Dim i As Integer, Lastrw As Long, plg As Range, c As Range, cc As Range Set rL1 = CreateObject("System.Collections.ArrayList") Set rL2 = CreateObject("System.Collections.ArrayList") mot = Sheets("Feuil1").Range("H1") Lastrw = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row Range("K2:L" & Lastrw).ClearContents a = Sheets("Feuil1").Range("A2:A" & Lastrw) If mot <> "tous" Then For i = LBound(a) To UBound(a) If InStr(1, a(i, 1), mot) > 0 Then rL1.Add i 'c.Row End If Next End If r = rL1.Toarray() ' Si mot = "tous" alors ? For j = LBound(r) To UBound(r) For k = r(j) + 1 To UBound(a) If IsNumeric(Split(a(k, 1), "L3-")(1)) Then rL2.Add Mid(a(k, 1), 4, Len(a(k, 1)) - 3) Else GoTo nt: End If Next nt: Next End Sub '------------ http://www.cjoint.com/c/GFyataqbo6m
MichD
Dans ton fichier, le contenu de la cellule H1 est : sc1 et non l'expression "tous". Le contenu de chaque cellule de la plage A2:A27 contenant l'expression de la cellule H1 est placé dans un tableau (array) appelé R. Ce tableau n'a qu'une dimension. Je t'ai donné un exemple quant à la manière de récupérer dans une plage de cellule le contenu du tableau R. Si tu veux autre chose, il faudra que tu sois plus explicite. '-------------------------------------------------------------------- Sub rechercheTb_MichD() Dim Mot As String Dim T(), R(), Compteur As Long 'Adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'L'Expression cherchée Mot = .Range("H1") 'Dans le tableau suivant T = .Range("A2:A30").Value End With For i = LBound(T, 1) To UBound(T, 1) If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then Compteur = Compteur + 1 ReDim Preserve R(1 To Compteur) R(Compteur) = T(i, 1) End If Next With Worksheets("Feuil1") 'Pour copier dans une colonne le contenu du tableau R .Range("B1").Resize(UBound(R)) = Application.Transpose(T) 'Pour copier dans une ligne le contenu du tableau R .Range("B1").Resize(, UBound(R)) = T End With End Sub '-------------------------------------------------------------------- MichD
Dans ton fichier, le contenu de la cellule H1 est : sc1
et non l'expression "tous".
Le contenu de chaque cellule de la plage A2:A27 contenant
l'expression de la cellule H1 est placé dans un tableau
(array) appelé R. Ce tableau n'a qu'une dimension.
Je t'ai donné un exemple quant à la manière de récupérer
dans une plage de cellule le contenu du tableau R.
Si tu veux autre chose, il faudra que tu sois plus explicite.
'--------------------------------------------------------------------
Sub rechercheTb_MichD()
Dim Mot As String
Dim T(), R(), Compteur As Long
'Adapte le nom de l'onglet de la feuille
With Worksheets("Feuil1")
'L'Expression cherchée
Mot = .Range("H1")
'Dans le tableau suivant
T = .Range("A2:A30").Value
End With
For i = LBound(T, 1) To UBound(T, 1)
If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then
Compteur = Compteur + 1
ReDim Preserve R(1 To Compteur)
R(Compteur) = T(i, 1)
End If
Next
With Worksheets("Feuil1")
'Pour copier dans une colonne le contenu du tableau R
.Range("B1").Resize(UBound(R)) = Application.Transpose(T)
'Pour copier dans une ligne le contenu du tableau R
.Range("B1").Resize(, UBound(R)) = T
End With
End Sub
'--------------------------------------------------------------------
Dans ton fichier, le contenu de la cellule H1 est : sc1 et non l'expression "tous". Le contenu de chaque cellule de la plage A2:A27 contenant l'expression de la cellule H1 est placé dans un tableau (array) appelé R. Ce tableau n'a qu'une dimension. Je t'ai donné un exemple quant à la manière de récupérer dans une plage de cellule le contenu du tableau R. Si tu veux autre chose, il faudra que tu sois plus explicite. '-------------------------------------------------------------------- Sub rechercheTb_MichD() Dim Mot As String Dim T(), R(), Compteur As Long 'Adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'L'Expression cherchée Mot = .Range("H1") 'Dans le tableau suivant T = .Range("A2:A30").Value End With For i = LBound(T, 1) To UBound(T, 1) If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then Compteur = Compteur + 1 ReDim Preserve R(1 To Compteur) R(Compteur) = T(i, 1) End If Next With Worksheets("Feuil1") 'Pour copier dans une colonne le contenu du tableau R .Range("B1").Resize(UBound(R)) = Application.Transpose(T) 'Pour copier dans une ligne le contenu du tableau R .Range("B1").Resize(, UBound(R)) = T End With End Sub '-------------------------------------------------------------------- MichD
MichD
Peux-tu me donner un exemple concret sur la finalité de la procédure? Que veux-tu récupérer? La position, le contenu du texte à cette position, autre chose? Au lieu de faire une boucle pour récupérer les positions et dans un second temps, boucler sur le tableau ayant recueilli les positions pour extraire je ne sais pas quoi, pourquoi ne pas faire une seule boucle et récupérer immédiatement ce que tu veux? Pour faire cela, il faut savoir ce que tu veux obtenir à la fin de l'opération. MichD "Apitos" a écrit dans le message de groupe de discussion : Bonjour MichD,
Dans ton fichier, le contenu de la cellule H1 est : sc1 et non l'expression "tous".
[H1] est une liste déroulante qui contient à titre d'exemple : "sc1", "sc2" et "tous". L'exemple en pj est fournit à titre d'exemple. Or dans mon fichier d'origine, je n'utilise pas les feuilles pour traiter et afficher le résultat, puisque les données sont extraites d'un fichier texte et le résultat est lui aussi écrit dans un fichier texte. C'est pour ça que je n'utilise que les tableaux pour récupérer/écrire les données depuis/vers un fichier texte. Si je choisi depuis la liste déroulante: - "sc1" : tous textes contenant ce mot, avec ces numéros correspondants au dessous devront être traités et extraits. - "sc2" : tous textes contenant ce mot, avec ces numéros au dessous correspondants devront être traités et extraits. - "tous" : tous les textes sans exception avec leurs numéros correspondants au dessous devront être traités et extraits. En premier, il faut déterminer les positions dans le premier tableau T du mot recherché. Les positions sont sauvegardées dans le tableau R. Après, on boucle sur le tableau R pour traiter chaque position et récupérer les numéros qui lui appartient. J’espère avoir bien exposé mon problème ! Merci. ------ Cordialement
Peux-tu me donner un exemple concret sur la finalité de la procédure?
Que veux-tu récupérer? La position, le contenu du texte à cette position, autre chose?
Au lieu de faire une boucle pour récupérer les positions et dans un second temps,
boucler sur le tableau ayant recueilli les positions pour extraire je ne sais pas quoi,
pourquoi ne pas faire une seule boucle et récupérer immédiatement ce que tu veux?
Pour faire cela, il faut savoir ce que tu veux obtenir à la fin de l'opération.
MichD
"Apitos" a écrit dans le message de groupe de discussion :
1ae7733f-0b4d-462e-9585-5f28c5f01583@googlegroups.com...
Bonjour MichD,
Dans ton fichier, le contenu de la cellule H1 est : sc1
et non l'expression "tous".
[H1] est une liste déroulante qui contient à titre d'exemple : "sc1", "sc2" et "tous".
L'exemple en pj est fournit à titre d'exemple.
Or dans mon fichier d'origine, je n'utilise pas les feuilles pour traiter et afficher le
résultat, puisque les données sont extraites d'un fichier texte et le résultat est lui aussi
écrit dans un fichier texte.
C'est pour ça que je n'utilise que les tableaux pour récupérer/écrire les données depuis/vers
un fichier texte.
Si je choisi depuis la liste déroulante:
- "sc1" : tous textes contenant ce mot, avec ces numéros correspondants au dessous devront être
traités et extraits.
- "sc2" : tous textes contenant ce mot, avec ces numéros au dessous correspondants devront être
traités et extraits.
- "tous" : tous les textes sans exception avec leurs numéros correspondants au dessous devront
être traités et extraits.
En premier, il faut déterminer les positions dans le premier tableau T du mot recherché.
Les positions sont sauvegardées dans le tableau R.
Après, on boucle sur le tableau R pour traiter chaque position et récupérer les numéros qui lui
appartient.
Peux-tu me donner un exemple concret sur la finalité de la procédure? Que veux-tu récupérer? La position, le contenu du texte à cette position, autre chose? Au lieu de faire une boucle pour récupérer les positions et dans un second temps, boucler sur le tableau ayant recueilli les positions pour extraire je ne sais pas quoi, pourquoi ne pas faire une seule boucle et récupérer immédiatement ce que tu veux? Pour faire cela, il faut savoir ce que tu veux obtenir à la fin de l'opération. MichD "Apitos" a écrit dans le message de groupe de discussion : Bonjour MichD,
Dans ton fichier, le contenu de la cellule H1 est : sc1 et non l'expression "tous".
[H1] est une liste déroulante qui contient à titre d'exemple : "sc1", "sc2" et "tous". L'exemple en pj est fournit à titre d'exemple. Or dans mon fichier d'origine, je n'utilise pas les feuilles pour traiter et afficher le résultat, puisque les données sont extraites d'un fichier texte et le résultat est lui aussi écrit dans un fichier texte. C'est pour ça que je n'utilise que les tableaux pour récupérer/écrire les données depuis/vers un fichier texte. Si je choisi depuis la liste déroulante: - "sc1" : tous textes contenant ce mot, avec ces numéros correspondants au dessous devront être traités et extraits. - "sc2" : tous textes contenant ce mot, avec ces numéros au dessous correspondants devront être traités et extraits. - "tous" : tous les textes sans exception avec leurs numéros correspondants au dessous devront être traités et extraits. En premier, il faut déterminer les positions dans le premier tableau T du mot recherché. Les positions sont sauvegardées dans le tableau R. Après, on boucle sur le tableau R pour traiter chaque position et récupérer les numéros qui lui appartient. J’espère avoir bien exposé mon problème ! Merci. ------ Cordialement
Apitos
Re, En PJ, quatre fichiers texte. Le premier (Source clients.txt) représente la source de données sur laquelle sera fait le traitement. http://www.cjoint.com/c/GFyrjoIhL2N Le nom de l’agence vient après le "< !", celui entre parenth èses représente la circonscription ou est située cette agenc e. Les numéros à extraire viennent dans les lignes contenant le pr éfixe "LI3". Une fois le fichier texte source parcouru ligne par ligne, le résultat de l’extraction est mis dans un tableau T. (Tableau T.txt) http://www.cjoint.com/c/GFyriRI6FtN Pour avoir un fichier texte selon un choix fais par circonscription, ici [T ET, MHI, FND et Tous], on parcourt le tableau T pour n’extraire que les agences avec leurs numéros appartenant à notre choix : TET : fichier texte avec le nom (Clients TET.txt) http://www.cjoint.com/c/G FyrjTBc1bN MHI : fichier texte avec le nom (Clients MHI.txt) http://www.cjoint.com/c/GFyrkkuJ76N FND : fichier texte avec le nom (Clients FND.txt) http://www.cjoint.com/c/GFyrkMDU8dN Tous : fichier texte avec le nom (Clients global.txt) http://www.cjoint.com/c/GFyrk7dDIvN Voila !
Re,
En PJ, quatre fichiers texte.
Le premier (Source clients.txt) représente la source de données sur laquelle sera fait le traitement.
http://www.cjoint.com/c/GFyrjoIhL2N
Le nom de l’agence vient après le "< !", celui entre parenth èses représente la circonscription ou est située cette agenc e.
Les numéros à extraire viennent dans les lignes contenant le pr éfixe "LI3".
Une fois le fichier texte source parcouru ligne par ligne, le résultat de l’extraction est mis dans un tableau T. (Tableau T.txt)
http://www.cjoint.com/c/GFyriRI6FtN
Pour avoir un fichier texte selon un choix fais par circonscription, ici [T ET, MHI, FND et Tous], on parcourt le tableau T pour n’extraire que les agences avec leurs numéros appartenant à notre choix :
TET : fichier texte avec le nom (Clients TET.txt) http://www.cjoint.com/c/G FyrjTBc1bN
MHI : fichier texte avec le nom (Clients MHI.txt)
http://www.cjoint.com/c/GFyrkkuJ76N
FND : fichier texte avec le nom (Clients FND.txt)
http://www.cjoint.com/c/GFyrkMDU8dN
Tous : fichier texte avec le nom (Clients global.txt)
http://www.cjoint.com/c/GFyrk7dDIvN
Re, En PJ, quatre fichiers texte. Le premier (Source clients.txt) représente la source de données sur laquelle sera fait le traitement. http://www.cjoint.com/c/GFyrjoIhL2N Le nom de l’agence vient après le "< !", celui entre parenth èses représente la circonscription ou est située cette agenc e. Les numéros à extraire viennent dans les lignes contenant le pr éfixe "LI3". Une fois le fichier texte source parcouru ligne par ligne, le résultat de l’extraction est mis dans un tableau T. (Tableau T.txt) http://www.cjoint.com/c/GFyriRI6FtN Pour avoir un fichier texte selon un choix fais par circonscription, ici [T ET, MHI, FND et Tous], on parcourt le tableau T pour n’extraire que les agences avec leurs numéros appartenant à notre choix : TET : fichier texte avec le nom (Clients TET.txt) http://www.cjoint.com/c/G FyrjTBc1bN MHI : fichier texte avec le nom (Clients MHI.txt) http://www.cjoint.com/c/GFyrkkuJ76N FND : fichier texte avec le nom (Clients FND.txt) http://www.cjoint.com/c/GFyrkMDU8dN Tous : fichier texte avec le nom (Clients global.txt) http://www.cjoint.com/c/GFyrk7dDIvN Voila !
MichD
Dans cette proposition, si tu veux obtenir le rang plutôt que la valeur, modifie cette ligne de code comme ceci : Remplace ceci R(Compteur) = T(i, 1) par R(Compteur) = i Je n'ai pas beaucoup de temps pour revoir la totalité de l'approche... '-------------------------------------------------------------------- Sub rechercheTb_MichD() Dim Mot As String Dim T(), R(), Compteur As Long 'Adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'L'Expression cherchée Mot = .Range("H1") 'Dans le tableau suivant T = .Range("A2:A30").Value End With For i = LBound(T, 1) To UBound(T, 1) If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then Compteur = Compteur + 1 ReDim Preserve R(1 To Compteur) R(Compteur) = T(i, 1) End If Next With Worksheets("Feuil1") 'Pour copier dans une colonne le contenu du tableau R .Range("B1").Resize(UBound(R)) = Application.Transpose(T) 'Pour copier dans une ligne le contenu du tableau R .Range("B1").Resize(, UBound(R)) = T End With End Sub '-------------------------------------------------------------------- MichD
Dans cette proposition, si tu veux obtenir le rang plutôt que la valeur,
modifie cette ligne de code comme ceci :
Remplace ceci R(Compteur) = T(i, 1) par R(Compteur) = i
Je n'ai pas beaucoup de temps pour revoir la totalité de l'approche...
'--------------------------------------------------------------------
Sub rechercheTb_MichD()
Dim Mot As String
Dim T(), R(), Compteur As Long
'Adapte le nom de l'onglet de la feuille
With Worksheets("Feuil1")
'L'Expression cherchée
Mot = .Range("H1")
'Dans le tableau suivant
T = .Range("A2:A30").Value
End With
For i = LBound(T, 1) To UBound(T, 1)
If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then
Compteur = Compteur + 1
ReDim Preserve R(1 To Compteur)
R(Compteur) = T(i, 1)
End If
Next
With Worksheets("Feuil1")
'Pour copier dans une colonne le contenu du tableau R
.Range("B1").Resize(UBound(R)) = Application.Transpose(T)
'Pour copier dans une ligne le contenu du tableau R
.Range("B1").Resize(, UBound(R)) = T
End With
End Sub
'--------------------------------------------------------------------
Dans cette proposition, si tu veux obtenir le rang plutôt que la valeur, modifie cette ligne de code comme ceci : Remplace ceci R(Compteur) = T(i, 1) par R(Compteur) = i Je n'ai pas beaucoup de temps pour revoir la totalité de l'approche... '-------------------------------------------------------------------- Sub rechercheTb_MichD() Dim Mot As String Dim T(), R(), Compteur As Long 'Adapte le nom de l'onglet de la feuille With Worksheets("Feuil1") 'L'Expression cherchée Mot = .Range("H1") 'Dans le tableau suivant T = .Range("A2:A30").Value End With For i = LBound(T, 1) To UBound(T, 1) If InStr(1, T(i, 1), Mot, vbTextCompare) > 0 Then Compteur = Compteur + 1 ReDim Preserve R(1 To Compteur) R(Compteur) = T(i, 1) End If Next With Worksheets("Feuil1") 'Pour copier dans une colonne le contenu du tableau R .Range("B1").Resize(UBound(R)) = Application.Transpose(T) 'Pour copier dans une ligne le contenu du tableau R .Range("B1").Resize(, UBound(R)) = T End With End Sub '-------------------------------------------------------------------- MichD