Suppression de caratère numérique d'une chaine

  • Initiateur de la discussion Initiateur de la discussion Temjeh
  • 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 !

Temjeh

XLDnaute Accro
Bonjour et merci d'avance

J'aimerais une formule qui me donne juste la valeur non-numérique d'une cellule.
J'ai ceci en cell:

=INDIRECT("F1!A"&LIGNE()+K1-2)

Mais si ie résultait de cette formule est: 1BLABLABLA je voudrais juste BLABLABLA

La longueur des chiffres peuvent être variable soit 1, 2 ou 3 caractères à gauche

Merci beaucoup

Temjeh
 
Dernière édition:
Re : Suppression de caratère numérique d'une chaine

Bonjour Temjeh

en attendant les formulistes, une fonction personnalisée :
Code:
Option Explicit
Function SuppChif(a As Range)
Application.Volatile
SuppChif = Replace(a, Val(a), "")
End Function

bonne journée
@+
 
Re : Suppression de caratère numérique d'une chaine

Bonjour Temjeh, salut Pierrot,

Le nombre d'imbrications de fonctions dépassera le nombre autorisé (8) sur Excel 2003.

Il faut donc utiliser un nom défini (menu Insertion-Nom) intermédiaire.

1) Sélectionner la cellule où se trouve la formule indiquée et définir le nom CEL avec cette formule :

=INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2)

2) Entrer dans la cellule cette nouvelle formule, matricielle maintenant :

Code:
=STXT(CEL;EQUIV(VRAI;ESTERR(-STXT(CEL;LIGNE(INDIRECT("1:"&NBCAR(CEL)));1));0);999)
A valider par Ctrl+Maj+Entrée.

A+
 
Re : Suppression de caratère numérique d'une chaine

Merci beaucoup pour votre aide

Je vais essayé celle de pierrot car je viens de pondre un monstre:

=SI(ESTNUM(CNUM(GAUCHE(SI(ESTNUM(CNUM(GAUCHE(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)))));DROITE(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2));NBCAR(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)))-1);SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2))))));DROITE(SI(ESTNUM(CNUM(GAUCHE(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)))));DROITE(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2));NBCAR(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)))-1);SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)));NBCAR(SI(ESTNUM(CNUM(GAUCHE(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)))));DROITE(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2));NBCAR(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)))-1);SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2))))-1);SI(ESTNUM(CNUM(GAUCHE(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)))));DROITE(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2));NBCAR(SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2)))-1);SI(ESTNUM(CNUM(GAUCHE(INDIRECT("F1!A"&LIGNE()+K1-2))));DROITE(INDIRECT("F1!A"&LIGNE()+K1-2);NBCAR(INDIRECT("F1!A"&LIGNE()+K1-2))-1);INDIRECT("F1!A"&LIGNE()+K1-2))))
...enlève 1 à 3 premier caractère num

Prob réglé

Temjeh
 
Dernière édition:
Re : Suppression de caratère numérique d'une chaine

Re,

On peut éviter le nom défini CEL avec cette formule, toujours matricielle :

Code:
=STXT(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2);EQUIV(VRAI;ESTERR(-STXT(T(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2));LIGNE($1:$999);1));0);999)
Elle est plus longue à calculer que la précédente.

Noter l'utilisation (indispensable) de la fonction T()...

Edition : je repasse par là avec cette formule matricielle un peu plus simple :

Code:
=STXT(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2);1+NB(-STXT(T(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2));1;LIGNE($1:$999)));999)
A+
 
Dernière édition:
Re : Suppression de caratère numérique d'une chaine

Bonsoir le fil 🙂,
Pour faire écho à Pierrot dont on a pas tenu compte 🙁...
une solution "bourrin" mais qui fonctionne quelque soit l'emplacement des chiffres
Code:
Function SuppChif2(a As String)
Dim I As Byte
Application.Volatile
SuppChif2 = a
For I = 0 To 9
SuppChif2 = Replace(SuppChif2, I, "")
Next I
End Function
sinon, une solution plus subtile qui peut permettre d'ajouter des exclusions de caractères à travers le Pattern
Code:
Function SuppChif3(a As String)
Dim m, mm, tmp$
Application.Volatile
With CreateObject("vbscript.regexp")
    .Global = True: .IgnoreCase = True: .Pattern = "[^0-9]"
    Set mm = .Execute(a)
    For Each m In mm
        If m <> "" Then
        tmp = tmp & m.Value
        End If
    Next m
End With
SuppChif3 = tmp
End Function
Bonne soirée 😎
 
Re : Suppression de caratère numérique d'une chaine

Re,

Une autre solution par formule normale, dans le genre "bourrin" :

Code:
=SUBSTITUE(SUBSTITUE(SUBSTITUE(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2);SI(ESTNUM(-GAUCHE(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2)));GAUCHE(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2));););SI(ESTNUM(-STXT(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2);2;1));STXT(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2);2;1);););SI(ESTNUM(-STXT(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2);3;1));STXT(INDIRECT("F1!A"&LIGNE()+Feuil1!K1-2);3;1););)
En effet Temjeh a précisé qu'il y avait de 1 à 3 chiffres à éliminer, ce que fait consciencieusement cette formule.

A+
 
Re : Suppression de caratère numérique d'une chaine

Bonjour le fil, le forum,

Je repasse par là avec une autre formule matricielle intéressante :

Code:
=MCONCAT(REPT(STXT(A1;LIGNE(Feuil1!$1:$999);1);ESTERR(-STXT(A1;LIGNE(Feuil1!$1:$999);1))))

Elle élimine tous les chiffres du texte en A1.

La fonction MCONCAT appartient à la bibliothèque de fonctions Morefunc de Laurent Longre.

C'est une macro complémentaire qu'on peut télécharger gratuitement sur le web.

A+
 
- 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

Discussions similaires

P
  • Question Question
Réponses
1
Affichages
3 K
Patrosso
P
D
Réponses
78
Affichages
7 K
DukeDevlin
D
M
Réponses
4
Affichages
1 K
Mathieu Régis
M
M
  • Question Question
Réponses
11
Affichages
2 K
A
Réponses
17
Affichages
3 K
Auzingueur
A
F
Réponses
8
Affichages
1 K
fabi1joret
F
M
Réponses
4
Affichages
4 K
M
Retour