VBA pb pr extraire & copier 1 partie de texte

r.assice Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour

J’aurais besoin d’aide pour creer une macro qui puisse chercher dans une plage de cellule une serie de lettre et ensuite extraire cette ligne avant de passer a la ligne suivante.

Par exemple, je cherche a extraire toutes les lignes qui contiennent les lettres EUR dans une colonne bien specifique qui peut contenir des textes tels que EUR/AUD, LD-EUR, EURAUD etc…

Merci d’avance pour votre retour,

Pour le moment je n’ai reussi qu’à créer une macro qui puisse trouver et copier de facon exaustive un texte exact et non pas une partir du texte
Cf :

'**Selection & copy sur une nouvelle feuille des donnees voulues

Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "USD"

Sheets("Data").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

For Each Rw In Selection.Rows
Ligne = Rw.Row

If Rw.Cells(1, 10).Value = "LD-USD" Or Rw.Cells(1, 10).Value = "AUD/USD" Or Rw.Cells(1, 10).Value = "EUR/USD" Or Rw.Cells(1, 10).Value = "GBP/USD" _
Or Rw.Cells(1, 10).Value = "USD/JPY" Or Rw.Cells(1, 10).Value = "NZD/USD" Or Rw.Cells(1, 10).Value = "USD/HKD" Or Rw.Cells(1, 10).Value = "USD/SGD" Then

Rw.Select
Rw.Copy Destination:=Worksheets("USD").Cells(Ligne, 2).EntireRow

End If

Next Rw
A voir également:

3 réponses

xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Bonjour,

pour extraire une partie du texte il n'y pas de fonction existante :S
il te faut donc faire une fonction.
par exemple je prend la chaine de caractere EUR/DOL
tu as dis que tu cherchais la partie EUR. Tout d'abord tu cherche un E si tu en trouve un tu test le caractere d'apres si c'est un U tu test le caractere d'apres et si c'est un R tu marque ta ligne comme contenant la chaine EUR.

Sinon si tu as un nombre de phrase predefenie et toujours identique tu test chaque cas, exemple:
toujours EUR/DOL, tu recupere les trois premier caractere grace a la fonction Mid et tu compare avec "EUR"
et tu fais de meme avec toute les phrase possible... en gros, dans ton cas tu test les 3 premiers caracteres ca couvrira les cas EUR/AUD, EURAUD et tu test aussi les 3 derniers pour le cas LD-EUR si le premier n'etait pas concluant...

j'espere avoir ete clair et t'avoir aider :-)
0
r.assice Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

Merci pour ton aide. Au final j'ai reussi a m'en sortir en faisant un filtre auto personalise.

Cheers
0
mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   28
 
Salut,
Pour info, il existe la fonction Instr

InStr([start], string1, string2, [compare])

La syntaxe de la fonction InStr comprend les arguments suivants :


start Facultatif.Expression numérique qui définit la position de départ de chaque recherche. Si cet argument est omis, la recherche commence au premier caractère. Si l'argument start contient une valeur de typeNull, une erreur se produit. L'argument start est obligatoire si l'argument compare est indiqué.

string1 Expression de chaîne dans laquelle la recherche est effectuée.
string2 Expression de chaîne recherchée.

compare Facultatif. Indique le type de comparaison de chaînes. Si l'argument compare est de type Null, une erreur se produit. Si l'argument compare est omis, la valeur de l'instruction Option Compare détermine le type de comparaison.

Ex : instr("je suis sur un forum","suis") renvoie la valeur 4

Bonne journée.
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Certes, je n'avais pas pensé a utiliser cet fonction de la sortre, bonne idee :)
0