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

Séparation chiffres-lettres-chiffres

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 !

arakiriman

XLDnaute Nouveau
Bonjour,

Je cherche une solution depuis pas mal de temps sur les sites et forums pour un problème de séparation de chiffres et de lettres dans une même case.
Exemple

20cartes20
2546lettres256
2coeurcochés1

Comme vous le voyez, il n'y a pas de nombres de lettres ou de chiffres précis et je cherche à mettre donc un espace pour faire des "phrases"

Ainsi :
20 cartes 20
2546 lettres 256
2 coeurcochés 1

Merci d'avance
Cordialement
 
Re : Séparation chiffres-lettres-chiffres

la séparation doit se faire à quelle momment?
à la saisie
juste aprés la saisie
sur un traitement complet de la feuille ou du classeur

en fonction de cette information, il sera plus facil de répondre
 
Re : Séparation chiffres-lettres-chiffres

En fait cela vient de l'extraction d'un tableau sur internet, que je suis obligée de mettre sur le bloc note pour supprimer toutes les images, et donc le bloc note me colle tout, les chiffres et les lettres.

Donc je colle le tas de boue (200 lignes) dans excel et là je ne peux rien en tirer pour le moment.
Donc je dirais sur un traitement complet de la feuille.

Merci d'avance

Edit : mais sans macros si possible.
 
Dernière édition:
Re : Séparation chiffres-lettres-chiffres

Bonjour arakiriman, tbft,

Puisqu'il ne faut pas de macro, utilisons la fonction MCONCAT de la macro complémentaire Morefunc de Laurent Longre.

C'est une bibliothèque de fonctions à télécharger sur le web, c'est gratuit.

Formule matricielle en B2 :

Code:
=SI(A2="";"";MCONCAT(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)&REPT(" ";ESTERR(-STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))*ESTNUM(-STXT(A2;LIGNE(INDIRECT("2:"&NBCAR(A2)+1));1))+ESTNUM(-STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))*ESTERR(-STXT(A2;LIGNE(INDIRECT("2:"&NBCAR(A2)+1));1)))))
A valider par Ctrl+Maj+Entrée et tirer vers le bas.

Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : Séparation chiffres-lettres-chiffres

Re,

Notez dans le fichier précédent qu'il se crée un espace à la fin du texte complété.

On peut le supprimer avec SUPPRESPACE mais pour cela il faut être sur Excel 2007/2010/2013 en .xlsx.

En effet le nombre de niveaux d'imbrication est de 9, et Excel 2003 n'en autorise que 8.

Fichier (2).

A+
 

Pièces jointes

Re : Séparation chiffres-lettres-chiffres

Bonjour le fil, bonjour le forum,

Peut-être avec la fonction personnalisée ESP ci-dessous :

Code:
Public Function ESP(Target As Range) As String
Dim I As Integer 'déclare la variable I (Incrément)
Dim TBE() As Integer 'déclare le tableau de variables TBE (TaBleau des Espaces)
Dim X As Integer 'déclare la variable X (incrément)
Dim G As String 'déclare la variable G (partie Gauche)
Dim D As String 'déclare la variable D (partie Droite)
Dim NV As String 'déclare la variable NV (Nouvelle Valeur)

For I = 1 To Len(Target.Value) - 1 'boucles sur tous les caractères (sauf le dernier) de la valeur de la cible
    If IsNumeric(Mid(Target.Value, I, 1)) Then 'condition 1: si le caractère est numérique
        If Not IsNumeric(Mid(Target.Value, I + 1, 1)) Then 'condition 2 : si le caractère suivant n'est pas numérique
            ReDim Preserve TBE(X) 'redimensionne le tableau de variable TBE
            TBE(X) = I + 1 'récupère la position du caractère suivant dans la variable indexée TBE(X)
            X = X + 1 'incrémente X
        End If 'fin de la condition 2
    Else 'sinon (condition 1) = si le caractère n'est pas numérique
        If IsNumeric(Mid(Target.Value, I + 1, 1)) Then 'condition 2 : si le caractère suivant est numérique
            ReDim Preserve TBE(X) 'redimensionne le tableau de variablea TBE
            TBE(X) = I + 1 'récupère la position du caractère suivant dans la variable indexée TBE(X)
            X = X + 1 'incrémente X
        End If 'fin de la condition 2
    End If 'fin de la condition 1
Next I 'prochain caractère de la boucle
NV = Target.Value 'définit la nouvelle valeur NV
For X = UBound(TBE) To 0 Step -1 'boucle inversée de la dernière variable indexée du tableau TBE à la première
    G = Left(NV, TBE(X) - 1) 'définit la partie gauche G
    D = Mid(NV, TBE(X)) 'définit la partie droite G
    NV = G & " " & D 'redéfinit la nouvelle valeur NV
Next X 'prochaine variable du tableau TBE
ESP = NV 'renvoie la nouvelle valeur NV
End Function
 
Re : Séparation chiffres-lettres-chiffres

Re, salut Robert,

Pourquoi une macro puisqu'arakiriman a bien dit :

Edit : mais sans macros si possible.

J'ai montré que c'est possible avec MCONCAT 🙄

Pour en terminer, avec un fichier .xls on peut éviter l'espace final :

Code:
=SI(A2="";"";MCONCAT(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)-1));1)&REPT(" ";ESTERR(-STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)-1));1))*ESTNUM(-STXT(A2;LIGNE(INDIRECT("2:"&NBCAR(A2)));1))+ESTNUM(-STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)-1));1))*ESTERR(-STXT(A2;LIGNE(INDIRECT("2:"&NBCAR(A2)));1))))&DROITE(A2))
Voir le fichier (3) où je vérifie que B5 n'a que 3 caractères.

A+
 

Pièces jointes

Re : Séparation chiffres-lettres-chiffres

Bonsour® 🙄

🙁
Hélas de nombreux "D.S.I" (dictateur de service informatique) n'autorisent pas le changement de configuration des postes utilisateurs (modules complémentaires, add-in, macro-externe à l'entreprise(certificat))

🙁
expérience vécue d'une grande entreprise "rhomboédrique" dans laquelle j'étais tenu d'appliquer et faire respecter cette décision.
 
- 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

Réponses
13
Affichages
253
Réponses
3
Affichages
158
Réponses
19
Affichages
621
Réponses
116
Affichages
6 K
Réponses
3
Affichages
736
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…