Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Isoler une partie de texte d'une cellule avec position variable ?

DukeDevlin

XLDnaute Nouveau
Bonjour,

Je viens vers vous aujourd'hui pour avoir vos lumières. En effet, vous trouverez en PJ un tableau expliquant mon problème. J'ai une cellule contenant un descriptif assez long. Et j'aimerais isoler 2 références à partir de ce descriptif : Le NCA et le NCR. Je sais que le NCA a 4 chiffres et le NCR 5 chiffres et que l'un comme l'autre peuvent être placés qu'au début (à gauche) et non pas à la fin. Le problème, c'est que la nomenclature utilisée peut changer d'une cellule à une autre comme joint dans l'exemple, sinon cela serait trop facile et il suffirait d'utiliser la fonction GAUCHE. Avez-vous une idée pour que je clean le fichier en faisant ressortir les NCA et NCR pour chaque descriptif dans deux nouvelles colonnes ? Je pense que cela sera plus parlant avec l'exemple.

Merci à vous. Bonne journée.
 

Pièces jointes

  • Test.xlsx
    9.2 KB · Affichages: 27

DukeDevlin

XLDnaute Nouveau
Merci à tous ! Je suis en train de faire plusieurs tests et certains mélanges. A première vue, ça demande d'être testé sur le moyen terme, une fonction comme ça peut marcher :

VB:
Function ncancr(r, v)
    'fonction qui renvoie les numéros NCA (v=1) ou NCR(v=2) se trouvant dans la chaine de caractères r
    '
    r = Replace(Replace(Replace(Replace(r, "NCA", ""), "NCR", ""), "/", " "), ".", " ")
    t = Split(r & " ", " ")
    nca = ""
    ncr = ""
    For i = LBound(t) To UBound(t)
        If t(i) <> "" Then
            If t(i) Like "####" Then
                nca = nca & IIf(nca = "", "", " / ") & t(i)
            ElseIf t(i) Like "#####" Then
                ncr = ncr & IIf(ncr = "", "", " / ") & t(i)
            'Else
            '    Exit For
            End If
        End If
    Next i
    If v = 1 Then
        ncancr = nca
    Else
        ncancr = ncr
    End If
End Function

Qu'en pensez-vous ? C'est à l'usage que je saurai si cela marche ou si je dois partir sur d'autres conditions. Un grand merci à vous pour tout ce que vous faites en tout cas !!
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @DukeDevlin ,

Rien ne vaut ce qu'on fait soi-même. Si à partir de tous les codes de ce fil, tu es arrivé à créer un code (parfaitement mis en forme par ailleurs) que tu comprends (forcément) et qui fait ce que tu désires, alors c'est parfait. L'optimisation viendra ensuite avec la pratique. Bon courage

edit: bonjour @jmfmarques
 
Dernière édition:

jmfmarques

XLDnaute Accro
Il y a des messages qui me font énormément plaisir et il me fait plaisir de les signaler alors.
Celui que vient de "poster" mapomme en est un et je l'assortis de mon applaudissement.
Rien ne vaudra jamais autant que le choix de ce que l'on a parfaitement compris et que l'on peut donc parfaitement maîtriser. Peu importe si d'autres manières s'avèrent plus performantes,. Elles sont à ignorer si non maîtrisées, le copier/coller n'aidant en aucun cas, seul, à progresser.
Un énorme merci à mapomme pour l'avoir ainsi exprimé;
Amitiés à tous.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…