Bonjour les amis, le Forum
Et oui, en effet Anna a bien écrit en réponse à mon ami Ândré, qu'il y avait '
Oui toujour 3 lettre au debut', bien qu'elle ait précisé dans son tout premier Post '
qui sont dans une chaine à longeur differente selon les champs'
Donc Creepy tu n'es pas du tout 'mauvais' dans ta proposition, mais en tant que développeur, je te donnerais un conseil tout simple :
Si la demande de l'utilisateur consiste par exemple :
'
J'aurai besoin d'un traitement sur une centaine de codifications'
=> si on ne peut pas traîter directement 'l'infini' Prévoir minimum 1000 'Keys'
'
J'aurai que trois lettre au début'
=> si on ne peut pas traîter directement tous les cas de figures, prévoir une gestion d'anomalie(s) dans le traitement.
Pour Hellboy, oui on peut directement placer la Function Split sans gestion d'erreur, mais par contre le retour du 'Ubound' de ce tableau est fondamentalement faux par rapport à la demande d'Anna, regarde ceci :
CCL/8206
CCL/8301/LTA/MMA
CCL/830/LTA
CCL/83023/LTA
CCL/82032
Retour par Cell = Container(UBound(Container))
8206
MMA
LTA
LTA
82032
Ce qui n'est pas le résultat attendu...
Pour conclure, voilà ce que je propose, toujours avec Split, (donc à partir d'Excel 2000, only)
Sub TheSlashExtractorWithAlert()
Dim Plage As Range, Cell As Range
Dim Container As Variant
Dim StringComplet As String, StringSeul As String
Dim Alert As String
Set Plage = Range('A1:A' & Range('A65536').End(xlUp).Row)
For Each Cell In Plage
StringComplet = Cell
Container = Split(StringComplet, Chr(47))
If UBound(Container) > 0 Then
StringSeul = Container(1)
Cell = StringSeul
Else
Alert = Alert & Cell.Address(0, 0) & vbTab & StringComplet & vbCrLf & vbTab
Cell.Interior.ColorIndex = 3
End If
Next Cell
If Len(Alert) > 0 Then
MsgBox 'Les Cellules suivantes n'ont pas pu être traïtées' & vbCrLf & vbTab & Alert, vbCritical
End If
End Sub
Comme ceci, Anna devrait pouvoir être tranquille... Au fait où est Anna ?
Bon Week End
@+Thierry