Extraction de données

petipeton

XLDnaute Nouveau
Bonjour, le forum ! ;)

Voici mon petit souci du jour : dans une colonne, j'ai des données extraites d'une requête SQL. Je voudrais faire deux extractions systématiquement :

- N° 1 dans la colonne D : extraire les 5 derniers caractères (numériques) quelle qu'en soit leur position (variable).

- N°2 dans la colonne B : extraire les 5 caractères numériques qui suivent la mention PER_ID.= quelle qu'en soit sa position, collée ou non à du texte (variable, ce qui est fixe, c'est que les 5 caractères numériques suivent forcément cette mention). Cette mention peut être collée à du texte sans espace avant.
Exemples de contenu de cette colonne :
PFI.PFI_ID =894 ARC.ARC_ID =999999 PER.PER_ID =61012
PER_ID =5920 PPH_NOM =TOTO PPH_PRENOM =Cutugno


Merci de votre aide, chui pas encore suffisamment au point sur VBA pour m'en sortir seule... :whistle:

A plus tard !!!
 

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour petipeton,

Alors pour la question 1 je n'ai pas vraiment compris si tu pouvais donner un exemple précis.

pour la question 2 si les données sont en A1 formule a essayer :

=CNUM(REMPLACER(A1;1;NBCAR(A1);STXT(A1;CHERCHE('PER_ID';A1;1)+8;5)))

Jocelyn

Message édité par: Jocelyn, à: 10/04/2006 11:45
 

petipeton

XLDnaute Nouveau
Yessssssssssss !!!!

Et selon mon habitude : des bisous à vous deux !!!!

Mais je n'ai pas tout compris.

Ce code a marché, mais peux tu me le détailler :

derlin = Range('D65536').End(xlUp).Row
For Each cel In Range('D' & 1, 'D' & derlin)
x = InStr(1, cel, 'PER_ID =')
cel.Offset(0, 1) = Mid(cel, x + 8, 5)
Next cel


Merci... c'est ainsi que je progresserai...
 

pierrejean

XLDnaute Barbatruc
re petipeton

recherche de la derniere ligne de la colonne D
derlin = Range('D65536').End(xlUp).Row

pour chaque cellule de la plage definie:
D1 à Dderniereligne
For Each cel In Range('D' & 1, 'D' & derlin)
numero dans cel du debut du mot 'Per...'
x = InStr(1, cel, 'PER_ID =')
mettre dans la cellule voisine de cel (0 ligne de decalage,1 colonne de decalage ( a droite puisqe positif))
la tranche de cel commencant 8 lettres apres le debut de 'PER..' soit tout de suite apres ,et long de 5 lettres
cel.Offset(0, 1) = Mid(cel, x + 8, 5)

passer a la cellule suivante
Next cel

J'espere avoir été clair

Message édité par: pierrejean, à: 10/04/2006 13:12
 

Discussions similaires

Réponses
3
Affichages
303
Réponses
65
Affichages
4 K

Statistiques des forums

Discussions
312 325
Messages
2 087 304
Membres
103 513
dernier inscrit
adel.01.01.80.19