Extraction de caractères numériques d'une liste

Bonsoir.

Je me permets de vous solliciter de nouveau pour m'aider à résoudre un nouveau problème. J'ai beau essayé, mais je crois que la maîtrise d'excel est encore très loin pour moi. Plutôt que de m'entêter et perdre du temps, je me suis dit qu'il serait plus judicieux de demander assistance à des personnes nettement plus fortes que moi.

Mon problème est d'extraire les nombres d'un texte sous forme de liste et de les mettre dans des cases séparées. Il y a au plus 8 nombres, donc 8 cases à remplir. Voici un exemple de liste : "1 - 5 - 6 - 10 - 9". Dans cet exemple, comme il n'y a que 5 nombres, les 3 cases restantes seront remplies avec des 0.

La difficulté est qu'on ne sait pas à l'avance combien il y aura de nombres sans dépasser 8, mais surtout qu'on ne sait pas à l'avance lesquels de combien de chiffres ils seront composés (1 ou 2).

Vous trouverez un petit fichier en exemple avec un début de solution (lourde et fastidieuse si on décide de pousser la logique jusqu'au bout) pour les deux premiers nombres dans la partie VBA du fichier .xls. Ma solution étant trop grossière et pas très intelligente, elle devient trop fastidieuse à écrire puisque pour le 7ème nombre, il faudrait écrire pas moins de 132 fonctions SI. Un cauchemar que je n'ai pas la force de vivre, donc je me tourne vers les esprits plus aguerris de ce forum pour me sortir de mon impasse.

D'avance merci et bonne année !

Bonjour,

Une solution avec la fonction Split

19extraction-001j.zip (13.16 Ko)

A+

Bonjour @ tous,

Salut Frangy,

Une astuce avec une Macro XL4,

Nommer une plage comme,

MaPlage :

=EVALUER("{"""&SUBSTITUE(Feuil1!$A3;" - ";""";""")&"""}")*1

Utiliser cette formule en K3,

=SI(COLONNES($K:K)>NB(MaPlage);"";INDEX(MaPlage;COLONNES($K:K)))

@ tirer vers le bas et vers la droite

@ +

10extraction-num.zip (12.55 Ko)

Bonjour !

Alors vraiment vous êtes très forts, mais hélas mon ignorance est si grande que je n'ai pas tout compris à vos solutions car j'ai besoin d'utiliser cette fonction dans d'autres feuilles. Néanmoins, à force de chercher sur la toile, j'ai trouvé un code qui marche et que je porte à votre connaissance. Le voici :

Function ExtractElement(str, n, sepChar)
'   Returns the nth element from a string,
'   using a specified separator character
    Dim x As Variant
    x = Split(str, sepChar)
    If n > 0 And n - 1 <= UBound(x) Then
       ExtractElement = x(n - 1)
    Else
        ExtractElement = ""
    End If
End Function

Le site internet est le suivant : "

". Vous remarquerez que cette fonction utilise la macro Split rejoignant ainsi la suggestion de frangy.

En espérant avoir été d'une quelconque utilité et vous remerciant encore une fois pour votre aide. Je marque le fil comme "Résolu".

Bonjour,

@ +

Je ne le savais pas. C'est désormais fait, merci bien.

Rechercher des sujets similaires à "extraction caracteres numeriques liste"