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

Manipulation de chaine de caratére(Position et découpage de chaine)

Tatiana29

XLDnaute Occasionnel
Bonjour à tous!
je suis en train d'essayer de construire une formule sous excel.
j'ai plusuers chaines de caractères soit composé de 3,2 ou 1 chiffre et l'objectif est de gardé le dernier chiffre comme dans l'exemple ci dessous.

je dois faire une formule qui detecte l'avant dernier "." de la liste quand ya 2 ou 3 chiffres et qui restitue la fin de la chaine,donc le dernier chiffre!

je viens de me lancer sur le sujet!

Si quelqu'un veut participer à la reflexion!

welcome
tatiana

3 630.48 112 003.72 => 112 003.72
16.15 30.76 1 052.46 => 1 052.46
631.43 => 631.43
0.23 1.85 58.41 =>58.41
3 314.88 => 3 314.88
 

Victor21

XLDnaute Barbatruc
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Bonjour.

j'ai plusuers chaines de caractères soit composé de 3,2 ou 1 chiffre
Vous voulez sans doute parler de nombres ?

Joignez donc un fichier avec quelques exemples (données de base, contraintes, résultats attendus).

Edit : Bonjour, Jean-Claude
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Bonjour à tous,

Peux-tu mettre tes valeurs dans un fichier XL ?

Tes données en A et le résultat souhaité en B

A + à tous
 

Tatiana29

XLDnaute Occasionnel
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Voici un exemple,je me suis lancé dans une macro pour traiter le problème mais je pense qu'il est possible avec une formule mais j'aime la difficulté!
 

Pièces jointes

  • exemplee.xlsx
    9.1 KB · Affichages: 70
  • exemplee.xlsx
    9.1 KB · Affichages: 85
  • exemplee.xlsx
    9.1 KB · Affichages: 73

Habitude

XLDnaute Accro
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Bonjour

Ton affichage est-il toujours sous le format # ### ##0.00
Ou les zéros après le point ne sont pas afficher ?

Autrement dit
Cet affichage est possible ?
16.1 30.76 1052
 

Habitude

XLDnaute Accro
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Essaie en lien avec résultat désiré
 

Pièces jointes

  • exemplee.xls
    37 KB · Affichages: 82
  • exemplee.xls
    37 KB · Affichages: 84
  • exemplee.xls
    37 KB · Affichages: 75

JCGL

XLDnaute Barbatruc
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Bonjour à tous,
Salut Patrick,
Salut Habitude,

Jolie fonction...

Puis-je me permettre pour avoir une valeur calculable ?
Private Sub CommandButton1_Click()
For Each cell In Range("A:A").SpecialCells(xlCellTypeConstants): cell.Offset(, 1) = Format(ct(cell.Value) * 1, "# ##0.00"): Next cell
End Sub

A++
A + à tous
 

JBOBO

XLDnaute Accro
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

bonjour,

Une petite formule à s'arracher les cheveux. Si nombres en A1, alors en En B1 :
Code:
=CNUM(SIERREUR(DROITE(A1;(NBCAR(A1)-(CHERCHE("+";SI(ET(NON(ESTERREUR(CHERCHE(".";A1;CHERCHE(".";A1)+1)));ESTERREUR(CHERCHE(".";A1;CHERCHE(".";A1;CHERCHE(".";A1)+1)+1)));SUBSTITUE(A1;".";"+";1);SI(ET(ESTERREUR(CHERCHE(".";A1;CHERCHE(".";A1)+1));ESTERREUR(CHERCHE(".";A1;CHERCHE(".";A1;CHERCHE(".";A1)+1)+1)));A1;SUBSTITUE(A1;".";"+";2)));1)+3)));A1))

Pourrait pas la redecomposer, j'ai oublié de conserver les étapes intermédiaires. A tenter de comprendre avec la fonction "audit de formule. En gros je cherche l'avant dernier ".", et le remplace par un "+". Ensuite je cherche la position de ce "+" et j'extrait le dernier nombre à partir de la position de ce "+". Désolé.
 

tototiti2008

XLDnaute Barbatruc
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Bonjour Tatiana, Bonjour Victor, Bonjour JCGL, Bonjour Habitude, Bonjour JBOBO,

une autre version en formule

Code:
=SI(NBCAR(A1)-NBCAR(SUBSTITUE(A1;".";""))=1;A1;STXT(A1;CHERCHE(" ";A1;CHERCHE("$";SUBSTITUE(A1;".";"$";NBCAR(A1)-NBCAR(SUBSTITUE(A1;".";""))-1)));1000))

Edit : Juste pour ajouter que l'idée est exactement la même que celle de JBOBO
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Bonjour

Une autre possibilité, avec une formule matricielle :
Code:
STXT(A1;1+GRANDE.VALEUR(SI(STXT(".  "&A1;LIGNE(INDIRECT("1:"&NBCAR(A1)+1));1)=".";LIGNE(INDIRECT("1:"&NBCAR(A1)+1)));2);100)

Pour autant, je ne suis pas sûr que cela donne la bonne réponse dans tous les cas.

La méthode : On recherche la position de l'avant dernier "." dans ". "&A1 et on affiche tous les caractères pris un peu plus loin sur la droite.

@ plus
 

Pièces jointes

  • exemplee.xlsx
    9.3 KB · Affichages: 60
  • exemplee.xlsx
    9.3 KB · Affichages: 61
  • exemplee.xlsx
    9.3 KB · Affichages: 64
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Bonsoir à tous


Je pensais l'avoir mais j'échoue proche du but
Code:
Function tatiana(r As Range)
tatiana = Replace(IIf(InStr(r.Text, Chr(32)) = 0, r.Text, StrReverse(Split(StrReverse(r.Text))(0) & Split(StrReverse(r.Text))(1))), ".", ",") * 1
End Function

PS: JNP: un petit pattern de derrière les fagots , tu as cela ?
 

JNP

XLDnaute Barbatruc
Re : Manipulation de chaine de caratére(Position et découpage de chaine)

Bonsoir le fil ,
PS: JNP: un petit pattern de derrière les fagots , tu as cela ?
Petit n'est pas le terme, mais j'ai pas réussi à le simplifier plus ...
Mais pour le fun
Code:
Function Tatiana(ATrouver As String) As String
With CreateObject("vbscript.regexp")
    .Global = True
    .Pattern = "((?!\.\d\d )(\d{1,3} \d{3}\.\d{0,2}$))|(\d{1,3}\.\d{0,2}$)"
        If .test(ATrouver) Then
    Tatiana = .Execute(ATrouver)(0)
    End If
End With
End Function
fonctionne sur les cas de figure précités ...
Bonne soirée
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…