XL 2019 Trouver 1ère lettre et remplacer

julien5521

XLDnaute Nouveau
Bonjour je cherche une formule ou une macro qui permet de trouver la 1ere lettre dans une celulle et la remplacer par un espace ou un caractère commun

Exemple
2215.21Fer
00212Magn
55631Xevc

Ce qui donnerais

2215.21 Fer
00212 Magn
55631 Xevc

Merci ;=
 

vgendron

XLDnaute Barbatruc
Bonjour

avec cette fonction personalisée
VB:
Function separe(chaine As Range) As String

For i = 1 To Len(chaine)
    If IsNumeric(Mid(chaine, i, 1)) Or Mid(chaine, i, 1) = "." Then
        separe = separe & Mid(chaine, i, 1)
    Else
        separe = separe & " " & Right(chaine, Len(chaine) - i + 1)
        Exit Function
    End If
Next i
End Function
 

julien5521

XLDnaute Nouveau
merci pour le code par contre je sais pas comment mettre en VB mais je crois avoir trouvé via

=GAUCHE(G1;CHERCHE(M1;G1)-1)

ca me récupere les lettre et les enleve via un autre gauche sur une autre colonne
Le seul problème est que que je dois convertir en nombre (une petite manip) mais ca fonctionne

Oui tout est majuscule et pas d'accent
 

Wayki

XLDnaute Impliqué
Bonjour,
A condition que les chiffres soient toujours placés avant les lettres, essayez ceci :
Sub test()
Dim cellule As Range
Set cellule = [A1]
For compteur = 1 To Len(cellule)
If Not IsNumeric(Left(cellule, compteur)) Then cellule = Left(cellule, compteur - 1) & " " & Right(cellule, Len(cellule) - compteur + 1): Exit Sub
Next compteur
End Sub
A +
 

job75

XLDnaute Barbatruc
Voyez le fichier joint avec la liste des "lettres" en colonne F et cette formule matricielle en B2 :
Code:
=REMPLACER(A2;PETITE.VALEUR(SI(NB.SI(F:F;STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1));LIGNE(INDIRECT("1:"&NBCAR(A2))));1);1;" "&STXT(A2;PETITE.VALEUR(SI(NB.SI(F$2:F$127;STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1));LIGNE(INDIRECT("1:"&NBCAR(A2))));1);1))
à valider par Ctrl+Maj+Entrée.

La 1ère lettre peut être majuscule ou minuscule, accentuée ou non.

A+
 

Pièces jointes

  • 1ère lettre(1).xlsx
    13.3 KB · Affichages: 6

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous

Essayez (éventuellement à valider matriciellement suivant la version d'Excel) :
VB:
=SUBSTITUE(A1;STXT(A1;PETITE.VALEUR(SI(MAJUSCULE(STXT(A1;LIGNE(1:99);1))>="A";LIGNE(1:99);"");1);1);" "&STXT(A1;PETITE.VALEUR(SI(MAJUSCULE(STXT(A1;LIGNE(1:99);1))>="A";LIGNE(1:99);"");1);1);1)

Nota : Bonjour @job75 ;) Arrrrrrgh! trop tard pour @mapomme ! (pas réactualisé le fil)
 

julien5521

XLDnaute Nouveau
Wow merci beaucoup, j'ai pas encore bien essayé, par contre la macro ne marche pas, le matriciel, je connais un peu le principe il faut faire un control-4 a chaque fois, et les ressources processur sont très impliqués
+ le Ctrl+Maj+Entrée ca semble un peu contraignant, je me penche un peu sur la macro mais ca marche pas
 

Wayki

XLDnaute Impliqué
Essayez
Sub test()
Dim plg As Range, cellule as Range, compteur%
Set plg = PLAGE DÉSIRÉE
For each cellule in plg
For compteur = 1 To Len(cellule)
If Not IsNumeric(Left(cellule, compteur)) or left(cellule, compteur) <> "." Or left(cellule, compteur) <> "," Then cellule = Left(cellule, compteur - 1) & " " & Right(cellule, Len(cellule) - compteur + 1): Exit Sub
Next compteur
Next cellule
End Sub
Où plg est la plage de cellule à traiter.
A +
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir
un petit plus pour @R@chid
ce qui est intéressant dans la formule de @R@childc'est surtout trouver le premier caratères non numerique
sans connaître le caractère
trouver le premier code asc >=65 c'est malin
=EQUIV(VRAI;CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))>64;0)
celle je la stocke
👍
 

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
Bonjour R@chid :)

Je ne savais pas que la fonction remplacer existait. Merci pour la découverte 👍 .
cher @mapomme , la fonction existe depuis longtemps je pense depuis 2010 si ce n'est pas avant, je m'en suis servie à plusieurs reprises.
https://excel-downloads.com/threads...te-de-chiffres-en-date.20007703/post-20057252
re
bonsoir
un petit plus pour @R@chid
ce qui est intéressant dans la formule de @R@childc'est surtout trouver le premier caratères non numerique
sans connaître le caractère
trouver le premier code asc >=65 c'est malin
=EQUIV(VRAI;CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))>64;0)
celle je la stocke
👍
Merci @patricktoulon , ce qui est plus intéressant c'est le fait d'utiliser 0 ou omettre le numéro de caractère pour ne pas avoir à concaténer deux textes.

@R@chid heureux de te revoir cher ami.

Je l'ai aussi utilisée au post #6 avec une formule plus générale.
@job75 merci cher ami
J'ai vu ta formule mais je ne l'ai pas encore étudiée pour la comparer à la mienne.
Ma formule bien sûr va prendre en considération tous les caractères dont le code est supérieur à 64, ce qui n'est pas évident, mais d'après les exemples donnés je pense qu'il ne va y avoir que des chiffres, des lettres ou des points.

Bien cordialement
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
167
  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
97

Statistiques des forums

Discussions
312 165
Messages
2 085 883
Membres
103 013
dernier inscrit
cicro