Excel vba recherche
Résolu
amine69500
Messages postés
422
Date d'inscription
Statut
Membre
Dernière intervention
-
Mytå Messages postés 2973 Date d'inscription Statut Contributeur Dernière intervention -
Mytå Messages postés 2973 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Excel vba recherche
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
13 réponses
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å
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
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å
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...
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
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
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
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
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