Formule de type LEFT / MID / TRIM / RIGHT

kevin1030

XLDnaute Nouveau
Bonjour,

Je cherche une solution pour découper une chaine de caractères suivants des critères précis. Si possible, juste en utilisant des formules.

Voici le fichier explicatif avec exemple.



Merci d'avance
 

Pièces jointes

  • Test_Left_1.xls
    98.5 KB · Affichages: 188

mth

XLDnaute Barbatruc
Re : Formule de type LEFT / MID / TRIM / RIGHT

Bonjour kevin, tdenfert,

Un autre essai en C2 et tirée vers le bas:

Code:
=GAUCHE(A2;MIN(SI(ESTNUM(STXT(A2;LIGNE($1:$255);1)*1);LIGNE($1:$255)))-1)
formule matricielle à valider par CTRL MAJ ENTER

pour D2:
Code:
=GAUCHE(SUBSTITUE(A2;F2;"");CHERCHE(" ";SUBSTITUE(A2;F2;""))-1)

et E2:
Code:
=SUBSTITUE(SUBSTITUE(A2;F2&G2;"");" ";"";1)

Bonne journée à tous :)

mth
 

kevin1030

XLDnaute Nouveau
Re : Formule de type LEFT / MID / TRIM / RIGHT

C'est presque çà !
Concernant la premier collone, je veux avoir tout le temps 5 caratères au total.
Si il y a que 3 nombres, il doit y avoir 2 espaces après et si il y a que 4 nombres, il doit y avoir 1 espace après pour avoir 5 caractères.
 

job75

XLDnaute Barbatruc
Re : Formule de type LEFT / MID / TRIM / RIGHT

Bonjour le fil, le forum,

Le plus simple paraît d'insérer 2 colonnes intermédiaires C et D, chacune insérant un espace s'il est nécessaire.

Formule en C2 :

Code:
=SI(ESTNUM(-STXT(A2;8;1));A2;REMPLACER(A2;5;0;" "))
Formule en D2 :

Code:
=SI(ESTNUM(-STXT(C2;8;1));C2;REMPLACER(C2;5;0;" "))
Pour les formules en E2 F2 G2 on remplace A2 par D2.

Fichier joint.

A+
 

Pièces jointes

  • Test_Left_1(1).xls
    125.5 KB · Affichages: 92
Dernière édition:

job75

XLDnaute Barbatruc
Re : Formule de type LEFT / MID / TRIM / RIGHT

Re,

En fait d'après ce que je comprends, il peut y avoir jusqu'à 4 espaces à insérer.

Alors une seule colonne intermédiaire avec cette fonction macro :

Code:
Function MEF$(t$)
Dim i, j
For i = 1 To Len(t)
  If IsNumeric(Mid(t, i, 1)) Then Exit For
Next
For j = i To Len(t)
  If Not IsNumeric(Mid(t, j, 1)) Then Exit For
Next
MEF = Application.Replace(t, i, 0, String(9 - j, " "))
End Function
Fichier (2).

A+
 

Pièces jointes

  • Test_Left_1(2).xls
    136.5 KB · Affichages: 75

job75

XLDnaute Barbatruc
Re : Formule de type LEFT / MID / TRIM / RIGHT

Re,

Une solution entièrement par formules qui font la même chose que la macro du post #7.

Voir les noms définis deb et fin et la formule en C2 :

Code:
=REMPLACER(A2;deb;0;REPT(" ";9-fin))
Fichier (3).
A+
 

Pièces jointes

  • Test_Left_1(3).xls
    131 KB · Affichages: 68

job75

XLDnaute Barbatruc
Re : Formule de type LEFT / MID / TRIM / RIGHT

Bonjour le fil, le forum,

Sur les versions (2) et (3), regardez les lignes 24 et 25 :ça ne va pas :mad:

Il faut rechercher les chiffres après le 5ème caractère ou après le 1er espace.

tototiti l'avait bien vu :) mais c'est un tantinet tordu tout ça.

Prenez donc ces versions (2 bis) et (3 bis).

A+
 

Pièces jointes

  • Test_Left_1(2 bis).xls
    137.5 KB · Affichages: 69
  • Test_Left_1(3 bis).xls
    137.5 KB · Affichages: 145

job75

XLDnaute Barbatruc
Re : Formule de type LEFT / MID / TRIM / RIGHT

Re,

Retour sur la fonction VBA :

Code:
Function MEF$(t$, n As Byte)
Dim deb, fin
deb = Application.Min(5, InStr(t, " ")) + 1 'à cause des lignes 24 et 25
For deb = deb To Len(t)
  If IsNumeric(Mid(t, deb, 1)) Then Exit For
Next
For fin = deb To Len(t)
  If Not IsNumeric(Mid(t, fin, 1)) Then Exit For
Next
MEF = Application.Replace(t, deb, 0, String(9 - fin, " "))
If n = 1 Then MEF = Left(MEF, 5) 'colonne C
If n = 2 Then MEF = Mid(MEF, 6, 3) 'colonne D
If n = 3 Then MEF = Mid(MEF, 10, 14) 'colonne E
End Function
Maintenant il n'y a plus besoin de colonne intermédiaire.

Une seule formule en C2 à tirer à droite et vers le bas :

Code:
=MEF($A2;COLONNES($C2:C2))
A+
 

Pièces jointes

  • Test_Left_VBA(1).xls
    125.5 KB · Affichages: 70

job75

XLDnaute Barbatruc
Re : Formule de type LEFT / MID / TRIM / RIGHT

Re,

Pour la version par formules, pas besoin de colonne intermédiaire non plus.

Formule en C2 à tirer à droite et vers le bas :

Code:
=STXT(REMPLACER($A2;deb;0;REPT(" ";9-fin));CHOISIR(COLONNES($C2:C2);1;6;10);CHOISIR(COLONNES($C2:C2);5;3;14))
A+
 

Pièces jointes

  • Test_Left_Formules(1).xls
    136 KB · Affichages: 81

Discussions similaires

Réponses
2
Affichages
94

Statistiques des forums

Discussions
312 610
Messages
2 090 208
Membres
104 452
dernier inscrit
hamzamounir