Gauche ou droite selon condition

  • Initiateur de la discussion Initiateur de la discussion René du var
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

René du var

Guest
Bonjour le forum,

J'ai besoin d'une formule capable de d'extraire 15 caractères

Comme on peut le voir ci-dessous parfois ils se trouvent à droite du "/"
ou à gauche.


Exemples ;

Réimputation mars 100151K/75905212602534

677123005103819/340M0010


Merci d'avance

René du var
 
Bonjour René, re Jean Marie

En fait René est un truqueur LOL !! cette ligne vient de me faire chercher un moment pourquoi ma Function "SPLIT15" ne retournait rien :

Réimputation mars 100151K/75905212602534

Car "75905212602534" ne contient que 14 caratères !! lol

Donc même la formule de Jean-Marie est tributaire d'avoir exactement 15 caractères car sinon dans ce cas de figure elle retourne :
"/75905212602534"

En fait j'ai fait deux fonctions, que l'on peut utiliser directement depuis la feuille dans une cellule :
=SPLIT15(A1)
=SPLITLONGEST(A1)

Function SPLIT15(ByRef Cell As Range)
Dim TheString As String, TheString15 As String
Dim i As Byte
Dim contenu As Variant
Application.Volatile

TheString = Cell.Value
contenu = Split(TheString, Chr(47))
  For i = 0 To UBound(contenu)

   If Len(contenu(i)) = 15 Then
     TheString15 = contenu(i)
   End If
  Next

SPLIT15 = TheString15
End Function


Function SPLITLONGEST(ByRef Cell As Range)
Dim TheString As String, TheLongestString As String
Dim i As Byte, x1 As Byte, x2 As Byte
Dim contenu As Variant
Application.Volatile

TheString = Cell.Value
contenu = Split(TheString, Chr(47))
   For i = 0 To 1
     x1 = Len(contenu(0))
     x2 = Len(contenu(1))
   Next

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If x1 < x2 Then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TheLongestString = contenu(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TheLongestString = contenu(0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If

SPLITLONGEST = TheLongestString
End Function


La fonction SPLIT15 te retournera uniquement la chaine de caractère ayant 15 digits (quelle que soit le nombre de Slash)

La fonction SPLITLONGEST te retournera la chaine de caractère la plus long en deux chaines séparée par un seul Slash (ou le premier si il y en a plus)

Bon Dimanche
@+Thierry

PS La Function "SPLIT" est reconnue uniquement depuis Excel 2000 et +
 
Bonjour Jean Marie et Thierry et le forum,

SI(ESTNUM(STXT(A1;1;15)+0);GAUCHE(A1;15);DROITE(A1;15))

11222333444555/55555 333444555/55555 <<< "réponse bizarre"
11/111222333444555 111222333444555
644121309102597//6853 644121309102597


Effectivement il arrive parfois que le le matricule soit tronqué à 14 caractères .......

Dans ce cas là il faudrait renvoyer la réponse "Erreur" afin de me faciliter la tâche.

Serait-il possible d'avoir une traduction litérale des formules ?

Merci encore d'avoir eu de la patience


René du var
 
Re...

=SI(STXT(A1;16;1)="/";GAUCHE(A1;15);SI(STXT(A1;nbcar(A1)-16;1)="/";DROITE(A1;15);"Erreur de positionnement"))

Litéralement si le 16ème caractère placé à gauche de la chaîne est le "/" prendre les 15 premiers caractères, ce n'est pas le cas, il faut contrôler si le 16ème caractère placé à droite de la chaîne est le "/" prendre les 15 derniers caractères, dans le cas contraire message d'erreur.

@+Jean-Marie
 
Voici le résultat


formule initiel :
=SI(STXT(A1;16;1)="/";GAUCHE(A1;15);SI(STXT(A1;nbcar(A1)-16;1)="/";DROITE(A1;15);"Erreur de positionnement"))

formule après modification :
SI(STXT(A4;16;1)="/";GAUCHE(A4;15);SI(STXT(A4;NBCAR(A4)-"""15""";1)="/";DROITE(A4;15);"Erreur de positionnement"))

J'ai mis 15 au lieu de 16 et les résultats semblent correctes

tu peux confirmer STP

Merci d'avance

René du var
 
Re...

Formule un peu plus longue mais sur la même base

=SI(STXT(substitue(A1;" /";"/");16;1)="/";GAUCHE(A1;15);SI(STXT(substitue(A1;"/ ";"/");nbcar(A1)-15;1)="/";DROITE(A1;15);"Erreur de positionnement"))

@+Jean-Marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
0
Affichages
1 K
Retour