Macro recherche de chaine de caracteres

  • Initiateur de la discussion Initiateur de la discussion LocSta
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

LocSta

XLDnaute Occasionnel
Bonjours, je souhaiterai trouver une macro ou une formule qui me permette de faire la liste de toute les lignes contenant une meme chaine de caractére
ex:
L1: clavierazerty
L2: ref azerty
L3: voiture
L4: camion
L5: az-01-erty

j'aimerai que la macro me permette d'afficher dans une autre feuille uniquement les lignes 1, 2 voir 3 (si possible)
Si j'ai rentré dans la cellule "chaine de caractéres à rechercher": azerty

Merci de vos réponses.
 
Re : Macro recherche de chaine de caracteres

bonsoir a tous

une generalisation du code de Pyrof (que je salue)
la recherche se fait sur toute la colonne A

Code:
Function numero_lignes(find_txt As Range)
Application.Volatile
Dim cellule As Range
For Each cellule In Range("A1:A" & Range("A65536").End(xlUp).Row)
    If InStr(cellule, find_txt.Value) > 0 Then
        resultat1 = resultat1 & cellule.Row & ","
    End If
Next
numero_lignes = Left(resultat1, Len(resultat1) - 1)
End Function
 
Re : Macro recherche de chaine de caracteres

Bonsoir,

Une autre façon avec Like :

Code:
Sub RechercheValeur()

Dim cell As Range
Dim tablo As Variant
Application.ScreenUpdating = False
tablo = Sheets("Feuil1").Range("A1:A" & Range("A65536").End(xlUp).Row)
For i = 1 To UBound(tablo, 1)
  If tablo(i, 1) Like "*075*" = True Then Cells(i, 1).Copy Sheets("Feuil3").Range("A65536").End(xlUp).Offset(1, 0)
Next
Application.ScreenUpdating = True

End Sub

La macro recherche dans la colonne A s'il y a 075, quelque soit sa position dans la cellule. (Like "*075*")

Par contre je n'ai pas réussi à remplacer 075 par une variable.
Ex: V = InputBox("Chaine à chercher", "Recherche"), ==> Like "* & V & *" ne fonctionne pas.

Bonne nuit
 
Re : Macro recherche de chaine de caracteres

Je n'ai toujours pas réussi à trouver une macro qui me convienne, mais celle qui se rapproche le plus de ce que je désire est celle de jyll. Le pb ce que les resultats ne correspondent pas tout à fait à ce qu'il devrait étre voir fichier joint. "Recherche plaquette"
 

Pièces jointes

Re : Macro recherche de chaine de caracteres

bonjour LocSta

ce serait plus simple si tu voulais bien nous dire ce qui ne va pas (et ce qui convient)

vois si cela est de ton gout

sinon n'hesite pas a revenir nous dire (voir plus haut)
 

Pièces jointes

Re : Macro recherche de chaine de caracteres

J'me suis tromper dans mon fichier joint, regarde le. C exactement cette macro que je veux mais elle ne marche pas bien. Dans le fichier G rechercher "actionneur" et il me sort plein de lignes qui n'ont rien à voir avec actionneur.
 

Pièces jointes

Re : Macro recherche de chaine de caracteres

Bonjour

Parce que j'ai trouvé cela joli...

Code:
Sub testII()
'Auteur de la macro originale: jindon
'source:http://www.ozgrid.com/forum/showthread.php?t=66713
Dim a, e, b(), i As Long, n As Long
a = Range("a1", Range("a" & Rows.Count).End(xlUp)).Value
ReDim b(1 To UBound(a, 1), 1 To 1)
For Each e In a
    If (e = "0,75") * (e <> "") Then
        n = n + 1: b(n, 1) = e
    End If
Next
Range("b1").Resize(n).Value = b
End Sub

Quelqu'un peut-il m'expliquer cette ligne?
If (e = "0,75") * (e <> "")
 
Re : Macro recherche de chaine de caracteres

Bonjour Staple1600,

pour la formule c'est tout simplement une multiplication des résultats des deux tests

True*tue= true
True* false= false
et false*false=false
ce qui revient à mettre AND ou OR suivant le résultat que tu souhaite, lui cherche True car il n'y a pas de condition derrière.

Comme tu peux mettre if A then si A >0 Vrai comme en formule excel
:
=SI(B1;"ok";"ko")

Bon test.
 
Re : Macro recherche de chaine de caracteres

Re

Merci de ta réponse et de tes eclaircissements

C'est ce que j'avais compris

Mais j'étais pas sur

Autre question pendant que j'y pense, svp

Dim a, e, b(), i As Long, n As Long

Il ne faut déclarer ligne par ligne normalement comme ca

Dim a ' et la il faut pas mettre As cequilfaut
Dim e 'et la aussi il faut pas mettre As cequilfaut
Dim b() 'et ici As Array
Dim i As Long
Dim n As Long

Ou la ligne initiale est trés bien comme ca?
 
Re : Macro recherche de chaine de caracteres

Bonjour LocSta, Staple1600 et le Forum,

Grand bonjour à PierreJean,

Pour la déclaration des variables VB est pas très pratique, il fait type chaque variable si l'on fait

Dim A, B, C as integer Il n'y aura que C en Integer les autres seront variant. Contrairement à d'autres langages Comme C, C++, Pascal, HPBasic. Ce qui induit un ralentissement important du code. Sur des calculs importants, il peut y avoir un rapport 30 dans la vitesse. VB analyse la donnée et choisi le type qui lui convient le mieux par exemple integer et fait son opération, si c'est dans une boucle à l'exécution suivante il va de nouveau analyser la variable et admettons quelle soit maintenant supérieure à 32767 et que c'est un entier, il va la coder en Long et cette analyse à lieu à chaque fois que la variable est utilisée. Voila pourquoi il est utile de typer ses variables, ce que je ne fais pas toujours.

De plus si on prend l'habitude pour le variable d'inclure des majuscules ex:
"Dim MaVariable as String"

si vous tapez "mavariable" par la suite une fois fait le "enter" la variable va devenir "MaVariable" et comme cela vous voyez que la variable existe et qu'elle est bien tapée, si vous avez une erreur de frappe elle reste en minuscules.


Maintenant revenons au fil. Je vais regarder puisque tu dis que je suis proche de ce que tu souhaites. Chercher la chaîne de caractères compléte en continu, très facile, maintenant pour trouver si la chaîne existe en deux morceau comme dans ton exemple et dire que c'est bon, avec les yeux et le cerveau très simple par un algo c'est autre chose. Si tu cherches "azerty" et que tu as "ytreza" ltoutes les lettres sont présentes et dans le désordre alors il faut tester la posisition des lettres dans la chaîne, toujours facile. Mais car il y en a toujours un, si tu as "pomme banane zorro thierry" toutes les lettres y sont et même certaines plusieurs fois alors comment décrêter que tu prends ou pas.
Voilà où j'en suis et je pense que pour les autres c'est idem.

Si tu peux orienter le débat, je suis preneur.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour