amine8293
Messages postés3Date d'inscriptionlundi 26 juillet 2010StatutMembreDernière intervention27 juillet 2010
-
26 juil. 2010 à 16:55
amine8293
Messages postés3Date d'inscriptionlundi 26 juillet 2010StatutMembreDernière intervention27 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 !!!!
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 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
amine8293
Messages postés3Date d'inscriptionlundi 26 juillet 2010StatutMembreDernière intervention27 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.