Retraitement de chaine de caractère

Résolu
amine8293 Messages postés 3 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 27 juillet 2010 - 26 juil. 2010 à 16:55
amine8293 Messages postés 3 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 27 juillet 2010 - 27 juil. 2010 à 11:13
Bonjour à tous,
Je suis assez novice en programmation VB. Ma question concerne une partie du programme d'une macro. Je dois faire un traitement d'une colonne de données, dans chaque cellule de cette colonne il ya une chaine de caractère pour exemple "BP2S RRSFTLT 0000747429Z" je dois garder uniquement le premier mot "BP2S" pour chaque cellule de la colonne. S'achant que les mots sont séparés par un espace. Alors plusieurs problèmes la taille du premier mots est aléatoire et celle de la suite de la chaine l'est aussi. Enfin la colonne retraitée doit contenir uniquement le premier mot dans chaque cellule.

J'ai vraiment tenté plusieurs pistes mais rien à faire !!!
Je vous remercie tous par avance pour votre aide !!!!

2 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
26 juil. 2010 à 17:42
Bonjour

ça s'appelle un cadeau
Je viens de l'éclire et de le tester sous excel
Rechercher les premiers mots à partir de la cellule B6 et en descendant jusqu'à la derniere ligne non vide : la procedure d'appel est X()


Function DerniereLigne(col) As Long
DerniereLigne = Range(col).End(xlDown).Row
End Function

Sub LirePremierMotDansColonne(col As String)
Dim cel
Dim lRow
Dim lCol
Dim LastLine As Long
lRow = Val(Mid(col, 2, 1))
lCol = Asc(Mid(col, 1, 1)) - Asc("A") + 1
LastLine = DerniereLigne(col)
Dim l
For l = lRow To LastLine
MsgBox Split(Cells(l, lCol).Value, " ")(0)
'MsgBox cel.Value
Next
End Sub

Sub x()
Call LirePremierMotDansColonne("B6")
End Sub
3
amine8293 Messages postés 3 Date d'inscription lundi 26 juillet 2010 Statut Membre Dernière intervention 27 juillet 2010
27 juil. 2010 à 11:13
C bien plus compliqué que ca je vous donne la partie de mon code qui pose problème :


For Each aRecord In RecordsList.Rows 'pour chaque valeur contenue dans Recordlist je la mets dans aRecord


'1 - traitement des noms dépositaire (unicité - groupement)
GstLibName = Trim(aRecord.Cells(1, colGstLib))'ici moi je ne veux pas qu'il prenne le contenu de la cellule en entier mais seulement le premier mot


'GstLibName = Mid$(aRecord, 0, "")
If GstLibName <> "" Then
GstLibRow = 0
On Error Resume Next
GstLibRow = GstLibRows(GstLibName) ' test l'existance du gerant dans collection RefIntRows

On Error GoTo 0 ' Continue si erreur

'ajout du nom du dépositaire dans la liste temporaire et dans le fichier cible

If GstLibRow = 0 Then

currentRow = currentRow + 1
GstLibRow = currentRow
GstLibRows.Add GstLibRow, GstLibName
.Cells(GstLibRow, 1) = "'" & GstLibName
End If
End If
If IsNumeric(aRecord.Cells(1, colEvaluation)) Then .Cells(GstLibRow, 2) = .Cells(GstLibRow, 2) + aRecord.Cells(1, colEvaluation)

Next aRecord

Voilà je c pas si ca vous aidera un peu plus mais bon je nage dans le noir total.
0
Rejoignez-nous