Excel vba recherche
Résolu/Fermé
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
-
Modifié par amine69500 le 7/09/2012 à 11:46
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 - 11 sept. 2012 à 18:24
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 - 11 sept. 2012 à 18:24
A voir également:
- Excel vba recherche
- Liste déroulante excel - Guide
- Si et excel - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
13 réponses
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
949
10 sept. 2012 à 17:29
10 sept. 2012 à 17:29
Salut le forum
A tester
Mytå
A tester
Option Explicit Sub Extraire() Dim i As Byte, Lig As Byte Dim Chaine As Variant Chaine = Split(Replace([A1], """", ""), "name:") Lig = 2 For i = 0 To UBound(Chaine) If InStr(Chaine(i), "lead") Then Cells(Lig, 1) = Split(Chaine(i), ",")(0) Lig = Lig + 1 End If Next i End Sub
Mytå
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
10 sept. 2012 à 17:45
10 sept. 2012 à 17:45
Trop trop fort ou forte ca marche super meme sur ma chaine de caractere direct sans rien changer au code, trop trop fort ou forte
merci mille fois a tous ce qui m'ont aidé
merci encore
Cordialement
Myta, tu peut m'expliquer un peu ton code? STP merci
merci mille fois a tous ce qui m'ont aidé
merci encore
Cordialement
Myta, tu peut m'expliquer un peu ton code? STP merci
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
949
10 sept. 2012 à 18:41
10 sept. 2012 à 18:41
Re le forum
Suppression des guillemets et découpage de la Chaine avec l'expression name:
Si le Tableau (Chaine) est vide on quitte la procédure
On boucle sur le Tableau (Chaine) à la recherche de l'expression lead
Si l'expression est trouvé on écrit le premier élément du découpage avec la virgule
Mytå
Sub Extraire() Dim i As Byte, Lig As Byte Dim Chaine As Variant Chaine = Split(Replace([A1], """", ""), "name:") Lig = 2 If UBound(Chaine) = -1 Then Exit Sub For i = 0 To UBound(Chaine) If InStr(Chaine(i), "lead") Then Cells(Lig, 1) = Split(Chaine(i), ",")(0) Lig = Lig + 1 End If Next i End Sub
Suppression des guillemets et découpage de la Chaine avec l'expression name:
Chaine = Split(Replace([A1], """", ""), "name:")
Si le Tableau (Chaine) est vide on quitte la procédure
If UBound(Chaine) = -1 Then Exit Sub
On boucle sur le Tableau (Chaine) à la recherche de l'expression lead
Si l'expression est trouvé on écrit le premier élément du découpage avec la virgule
For i = 0 To UBound(Chaine) If InStr(Chaine(i), "lead") Then Cells(Lig, 1) = Split(Chaine(i), ",")(0) Lig = Lig + 1 End If Next i
Mytå
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
Modifié par amine69500 le 11/09/2012 à 17:32
Modifié par amine69500 le 11/09/2012 à 17:32
Bonjour Myta,
Je souhaterais utilisé ta fonction mais au lieu d'avoir le resultat dans les cellules je souhaite les avoir dans une listbox ou combobox qui sont dans un userform
est-il possible et si oui
tu peu m'aider STP
Merci
Cordialement
Je souhaterais utilisé ta fonction mais au lieu d'avoir le resultat dans les cellules je souhaite les avoir dans une listbox ou combobox qui sont dans un userform
est-il possible et si oui
tu peu m'aider STP
Merci
Cordialement
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
949
11 sept. 2012 à 18:24
11 sept. 2012 à 18:24
Re le forum
Modifie le code comme ceci
Mytå
Modifie le code comme ceci
' . . . For i = 0 To UBound(Chaine) If InStr(Chaine(i), "lead") Then UserfForm1.ListBox1.AddItem Split(Chaine(i), ",")(0) End If Next i ' . . .
Mytå
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
7 sept. 2012 à 12:30
7 sept. 2012 à 12:30
Salut,
C'est pas exactement le même souci que dans ce sujet ?
La même solution fonctionne avec le même problème...
C'est pas exactement le même souci que dans ce sujet ?
La même solution fonctionne avec le même problème...
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
Modifié par amine69500 le 7/09/2012 à 14:24
Modifié par amine69500 le 7/09/2012 à 14:24
Bonjour et merci de votre aide
non c'est pas excatement ca, ce que je cherche la, c'est un code qui me permet d'extraire une chaine de caratere entre deux chaine de caractere, ici c'est donnée1 qui est entre lead et name.
merci de votre aide
Cordialement
non c'est pas excatement ca, ce que je cherche la, c'est un code qui me permet d'extraire une chaine de caratere entre deux chaine de caractere, ici c'est donnée1 qui est entre lead et name.
merci de votre aide
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
7 sept. 2012 à 14:45
7 sept. 2012 à 14:45
Re,
Voici une solution qui fonctionne,
A+
Voici une solution qui fonctionne,
A+
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
7 sept. 2012 à 15:11
7 sept. 2012 à 15:11
Bonjour,
Un exemple en VBA (donnees1, etc ne sont peut-etre pas de longueurs fixes)
L'exemple de Morgothal peut etre modifie de meme, si le coeur lui en dit
Bonne suite
Un exemple en VBA (donnees1, etc ne sont peut-etre pas de longueurs fixes)
Sub rechchaine() '123456789012345678901234567890123456789 '[test,"id":"12345","name":"données1","lead","name":"xxxx",test,"id":"12345","name":"données2","lead","name":"yyyy",test,"id":"12345","name":"données3","lead","name":"zzzzz"] Entete = "5" & Chr(34) & "," & Chr(34) & "name" Suffix = "lead" chaine = Worksheets("feuil2").Range("A1") y = InStr(1, chaine, Entete) + 11 x = InStr(1, chaine, Suffix) - 3 D1 = Mid(chaine, y, x - y) y = InStr(x + 6, chaine, Entete) + 11 a = InStr(x + 6, chaine, Suffix) - 3 D2 = Mid(chaine, y, a - y) y = InStr(a + 6, chaine, Entete) + 11 b = InStr(a + 6, chaine, Suffix) - 3 D3 = Mid(chaine, y, b - y) End Sub
L'exemple de Morgothal peut etre modifie de meme, si le coeur lui en dit
Bonne suite
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
7 sept. 2012 à 15:28
7 sept. 2012 à 15:28
Salut,
Le coeur m'en dit volontiers, je suis en train de voir ;)
Cependant, dans ton code il faut que l'ID finisse toujours par "5" ?
Le coeur m'en dit volontiers, je suis en train de voir ;)
Cependant, dans ton code il faut que l'ID finisse toujours par "5" ?
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
7 sept. 2012 à 16:05
7 sept. 2012 à 16:05
Re,
Eh Oui, des fois l'arbre cache la foret.......!!
Merci
Eh Oui, des fois l'arbre cache la foret.......!!
Merci
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
7 sept. 2012 à 15:22
7 sept. 2012 à 15:22
Bonjour et merci de ton aide
je vais essai et l'adapter a mon cas
merci
cordialement
je vais essai et l'adapter a mon cas
merci
cordialement
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
7 sept. 2012 à 15:50
7 sept. 2012 à 15:50
Cette macro fonctionne également :
Sub recherchedechaine() Dim colonne As Integer Dim D1, tabl(3) As String Range("A1").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _ Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _ ), Array(14, 1), Array(15, 1)), TrailingMinusNumbers:=True D1 = "" i = 1 For colonne = 1 To 15 If Left(Cells(1, colonne), 4) = "name" And Cells(1, colonne + 1) = "lead" Then tabl(i) = Mid(Cells(1, colonne).Value, 7, Len(Cells(1, colonne).Value) - 7) i = i + 1 End If Next For i = 1 To 3 Cells(i + 2, 1) = tabl(i) Next End Sub
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
10 sept. 2012 à 15:57
10 sept. 2012 à 15:57
Salut et merci de ton aide
j'ai essayé ta solution, mais il met l'erreur "le texte est trop long" es normale?
Cordialement
j'ai essayé ta solution, mais il met l'erreur "le texte est trop long" es normale?
Cordialement
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
10 sept. 2012 à 16:12
10 sept. 2012 à 16:12
Aha "est-ce qu'une erreur est normale"
Bonne question de réthorique ;)
Mais en l'occurrence non ce n'est pas normal... En exécutant le programme pas à pas avec F8, où est l'erreur? Pour ma par je n'ai pas cette erreur...
Dans l'attente de te lire,
Bonne question de réthorique ;)
Mais en l'occurrence non ce n'est pas normal... En exécutant le programme pas à pas avec F8, où est l'erreur? Pour ma par je n'ai pas cette erreur...
Dans l'attente de te lire,
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
10 sept. 2012 à 16:54
10 sept. 2012 à 16:54
pouvez vous m'expliquer un peu votre code SVP, j'ai voulu le testé avec ma chaine de caractere car celle donnée avec la question est juste un exemple. et ca ne marche pas
je souhaiterai comprendre un peu plus votre code pour l'appliquer a ma chaine de caractere.
merci de votre aide
Cordialement
je souhaiterai comprendre un peu plus votre code pour l'appliquer a ma chaine de caractere.
merci de votre aide
Cordialement
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
10 sept. 2012 à 19:24
10 sept. 2012 à 19:24
Toute la première partie (avant le D1="") sert a mettre chaque partie de la chaîne de caractères entre "," dans plusieurs cellules.
La seconde partie détermine si le contenu d'une cellule se trouve entre "name" et "lead", et si oui le met dans le tableau tabl(i).
La seconde partie détermine si le contenu d'une cellule se trouve entre "name" et "lead", et si oui le met dans le tableau tabl(i).
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
10 sept. 2012 à 20:54
10 sept. 2012 à 20:54
Ok super merci pour cette explication
Cordialement
Cordialement
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
7 sept. 2012 à 16:13
7 sept. 2012 à 16:13
Bonjour,
Peut-être :
https://www.cjoint.com/?BIhqngZ22vR
Peut-être :
https://www.cjoint.com/?BIhqngZ22vR
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
7 sept. 2012 à 16:28
7 sept. 2012 à 16:28
Re,
Code modifie, en effet "12345" doit etre un nombre sur 5 caracteres.
Code modifie, en effet "12345" doit etre un nombre sur 5 caracteres.
Sub rechchaine() '123456789012345678901234567890123456789 '[test,"id":"12345","name":"données1","lead","name":"xxxx",test,"id":"12345","name":"données2","lead","name":"yyyy",test,"id":"12345","name":"données3","lead","name":"zzzzz"] test = "test" Entete = "name" Suffix = "lead" 'Chaine en Feuil2 A1 pour exemple chaine = Worksheets("feuil2").Range("A1") 'recherche pour D1 y = InStr(1, chaine, Entete) + 7 x = InStr(1, chaine, Suffix) - 3 D1 = Mid(chaine, y, x - y) 'recherche test poour D2 a = InStr(x, chaine, test) y = InStr(a, chaine, Entete) + 7 x = InStr(a, chaine, Suffix) - 3 D2 = Mid(chaine, y, x - y) 'recherche test poour D3 a = InStr(x, chaine, test) y = InStr(a, chaine, Entete) + 7 x = InStr(a, chaine, Suffix) - 3 D3 = Mid(chaine, y, x - y) End Sub
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
10 sept. 2012 à 15:55
10 sept. 2012 à 15:55
Super merci a tous,
j'ai essayé vos solutions ca marche super mais avec une chaine de caractere fixe alors ma chaine de caractere peut varier exemple : aujourdhui elle la 3000 caractere demain elle aura 3500 caractere et ainsi de suite.
merci de m'aider si vous pouvez
merci encore de votre aide
Cordialement
j'ai essayé vos solutions ca marche super mais avec une chaine de caractere fixe alors ma chaine de caractere peut varier exemple : aujourdhui elle la 3000 caractere demain elle aura 3500 caractere et ainsi de suite.
merci de m'aider si vous pouvez
merci encore de votre aide
Cordialement
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
10 sept. 2012 à 16:53
10 sept. 2012 à 16:53
Bonjour a vous tous
Question:
Votre chaine de caracteres provient de quoi? un fichier ou...?
Merci
Question:
Votre chaine de caracteres provient de quoi? un fichier ou...?
Merci
amine69500
Messages postés
422
Date d'inscription
lundi 8 juin 2009
Statut
Membre
Dernière intervention
25 août 2013
12
10 sept. 2012 à 20:53
10 sept. 2012 à 20:53
c'est un GET en web service qui me permet de recuperer cette chaine de caractere
cordialement
cordialement