Extraire plusieurs chaines de caractères d'une seule chaine

porcinet82

XLDnaute Barbatruc
Bonjour a tous,

Ca fait un petit moment que j'ai pas demandé d'aide, alors je me lance, surtout que je pense que c'est tout con, mais j'ai le cerveau a l'nevers aujourd'hui et impossible d'arriver a faire ce que je veux.
Donc, le problème est tout simple, j'ai des lignes de commande de ce genre (1 ligne de commande = 1 cellule) : if aa56 in (2,3,4,5) and (aa57_58 = . or (aa57_58 >= 1 and aa59_60 = .)) then output ;

Le but est de mettre dans les cellules adjacentes (sur la meme ligne), tous les codes aa, c'est a dire que le resultat sera : aa56 aa57_58 aa59_60
Le résultat peut etre dans une ou plusieurs cellules, aucune importance.

Donc si quelqu'un est motivé pour me filer un p'ti coup de main, je le remercie d'avance.

Au plaisir,

@+
 

porcinet82

XLDnaute Barbatruc
Re : Extraire plusieurs chaines de caractères d'une seule chaine

re, Salut PierreJean,

Que dire a par un grand merci !!!!
Bon c'etait quand meme un peu plus complexe que ce que je pensais, enfin j'étais pas parti du tout dans ce sens la en tout cas...

Merci PierreJean pour ce petit bout de code qui va me rendre un grand service.

Au plaisir,

@+
 

Creepy

XLDnaute Accro
Re : Extraire plusieurs chaines de caractères d'une seule chaine

Re,

Ci dessous le code que tu demandes. Je suis un peu pressé là il doit y avoir moyen d'optimiser je pense. Mais ca fonctionne.

Code:
Sub Xtract_AA()
Dim Boucle As Integer, Position As Integer
Dim Compteur As Integer, Fin As Integer
 
For Boucle = 1 To Cells(65536, 1).End(xlUp).Row Step 1
Compteur = 2
Position = 1
    Do While Position < Len(Cells(Boucle, 1).Value)
        Position = InStr(Position, Cells(Boucle, 1).Value, "aa")
        If Position <> 0 Then
            Fin = InStr(Position, Cells(Boucle, 1).Value, " ") + 1
            Cells(Boucle, Compteur).Value = Mid$(Cells(Boucle, 1).Value, Position, Fin - Position - 1)
            Position = Fin
            Compteur = Compteur + 1
        Else
            Exit Do
        End If
        Loop
Next Boucle
End Sub
@+

Creepy
 
Dernière édition:

Tibo

XLDnaute Barbatruc
Re : Extraire plusieurs chaines de caractères d'une seule chaine

Bonsoir à tous,

Pour ne pas laisser les formulistes de côté :):rolleyes::p :

ta chaîne en A1

la formule :

=SI(COLONNE()>(NBCAR($A$1)-NBCAR(SUBSTITUE($A$1;"aa";"")))/2;"";STXT($A$1;TROUVE("%%";SUBSTITUE($A$1;"aa";"%%";COLONNE()));TROUVE(" ";STXT($A$1;TROUVE("%%";SUBSTITUE($A$1;"aa";"%%";COLONNE()));999))-1))

à recopier vers la droite.

Souci: ne gère pas les doublons...


Bonne soirée

@+
 

porcinet82

XLDnaute Barbatruc
Re : Extraire plusieurs chaines de caractères d'une seule chaine

Bonjour a tous,

Et bien merci a Creepy et a Tibo pour s'etre penché également sur mon problème. Creepy, j'etais parti sur la meme idée de code que toi sans toutefois arriver a le faire.
Tibo, mais ou va tu chercher tout ca ??? :confused:
PierreJean, merci pour ta rapidité et ton code (le Split , va quand meme falloir que je l'integre parce qu'il pourrait me rendre pas mal de service !!!)

M'enfin, merci a tous, et au plaisir de vous aider a mon tour...

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 516
dernier inscrit
René Rivoli Monin