Récupération nombres dans ligne de texte

Bonjour,

Je m'adresse à vous aujourd'hui car mon supérieur me demande de faire ceci dans son fichier excel :

B2= PLAST.610*0950.627.BLEU 4026 COTELINE (c'est du format papier)

extraire 610 en C2

extraire 0950 en D2

extraire 627 en E2

Pouvez-vous m'aider cela dépasse mes compétences..

En vous remerciant d'avance.

Bonjour Cwaller, bonjour le forum,

Par formule je ne sais pas faire mais voici un petit bout de code commenté qui fait cela :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim T As String 'déclare la variable T (Texte)

Set O = Worksheets("Feuil1") 'définit l'onglet O
T = O.Range("B2").Value 'définit le texte T
O.Range("C2").Value = Split(Split(T, "*")(0), ".")(1) 'renvoie en C2 le premier numéro avant le caractère "*"
O.Range("D2").Value = Split(Split(T, "*")(1), ".")(0) 'renvoie en D2 le premier numéro après le caractère "*"
O.Range("E2").Value = Split(Split(T, "*")(1), ".")(1) 'renvoie en E2 le second numéro après le caractère "*"
End Sub

Comment fonctionne Split(Texte,délimiteur)(index) ? cette fonction va séparer dans, un tableau indexé, un texte par rapport à un délimiteur.

Par exemple Split(Bonjour Monsieur Dupont," ") va créer un tableau de trois éléments, séparés par le délimiteur, ici [espace],

Split(Bonjour Monsieur Dupont," ")(0) = Bonjour

Split(Bonjour Monsieur Dupont," ")(1) = Monsieur

Split(Bonjour Monsieur Dupont," ")(2) = Dupont

Dans ton cas, le premier Split (à l'intérieur du second) renvoie, à partir du du texte T, avec "*" comme délimiteur et l'index 0 : Split(T, "*")(0) = PLAST.610

Pour obtenir la partie après le point il faut à nouveau spliter cette partie et renvoyer l'index 1 avec, cette fois le point "." comme délimiteur : Split("PLAT.610", ".")(1) = 610

En combinant dans une seule ligne ça donne le double Split : Split(Split(T, "*")(0), ".")(1) pour C2

Le principe est identique pour les autres valeur, il a juste fallu changé les index...

Bonjour Cwaller !

Quelques propositions de formules à adapter en fonction de tes références,

Bonjour cwaller.

Une première proposition, un peu lourde à écrire.

Tu pourras passer par des colonnes ou lignes intermédiaires pour enregistrer l'emplacement des différents caractères recherchés.

Je te laisse étudier la solution, revient dire si ça te convient.

En [C2] :

=STXT($B2;CHERCHE(".";$B2;1)+1;CHERCHE("~*";$B2;1)-CHERCHE(".";$B2;1)-1)

En [D2] :

=STXT($B2;CHERCHE("~*";$B2;1)+1;CHERCHE(".";$B2;CHERCHE(".";$B2;1)+1)-CHERCHE("~*";$B2;1)-1)

En [E2] :

=STXT($B2;CHERCHE(".";$B2;CHERCHE(".";$B2;1)+1)+1;CHERCHE(".";$B2;CHERCHE(".";$B2;CHERCHE(".";$B2;1)+1)+1)-CHERCHE(".";$B2;CHERCHE(".";$B2;1)+1)-1)

Evidemment pour que cela fonctionne, il faut que le texte en colonne B soit du même style que celui donné.

C'est à dire :

  • Premier groupe de chiffre entre le premier "." et "*"
  • Second groupe de chiffre entre "*" et le second "."
  • Troisième groupe de chiffre entre le second et le troisième "."

Sinon il faudrait passer par une formule personnalisée en VBA permettant de déterminer l'emplacement de chaque groupe de chiffres et là ce n'est pas du même acabit.

Edit: Bonjour ThauThème, Gaz0line, désolé pour la collision.

Je vous remercie pour vos réponses, les formules marchent très bien merci, je n'ai pas esseyé la matricielle car je ne sais pas comment la rentrer dans le fichier ... Je reste une utilisatrice basique de excel.

thebenoit59 a écrit :

Edit: Bonjour ThauThème, Gaz0line, désolé pour la collision.

Salut TheBenoit!

Plus il y a de solutions, mieux c'est

Bonne journée tout le monde !

Rechercher des sujets similaires à "recuperation nombres ligne texte"