Espacer les lettres d'un mot avec une contrainte liée à des chiffres

poulie

XLDnaute Impliqué
Bonjour à tous (il y a longtemps...),

Je souhaiterais insérer des espaces entre chaque lettre d'un code. J'ai bien repris une macro de M Boisgontier mais ne peux pas l'appliquer à cause de chiffres.
Lorsqu'il y a un chiffre, je souhaite qu'il n'y ait pas d'espace entre ce chiffre et la lettre précédente

J'ai inséré un classeur avec un exemple de ce que je souhaite.

Merci de bien vouloir m'aider
 

Pièces jointes

  • Essai.xlsm
    16.4 KB · Affichages: 44
  • Essai.xlsm
    16.4 KB · Affichages: 44
  • Essai.xlsm
    16.4 KB · Affichages: 54

gilbert_RGI

XLDnaute Barbatruc
Re : Espacer les lettres d'un mot avec une contrainte liée à des chiffres

Bonjour,

a tester

VB:
Function espace1(mot)
    For i = 1 To Len(mot)
        On Error Resume Next
        If Asc(Mid(mot, i + 1, 1)) >= "48" And Asc(Mid(mot, i + 1, 1)) <= "57" Then
            temp = temp & Mid(mot, i, 1) & Mid(mot, i + 1, 1) & " "
            i = i + 1
        Else
            temp = temp & Mid(mot, i, 1) & " "
        End If
    Next
    espace1 = temp
End Function
 

poulie

XLDnaute Impliqué
Re : Espacer les lettres d'un mot avec une contrainte liée à des chiffres

Bonsoir gilbert_RGI,

Je viens de tester ta proposition et cela fonctionne très bien. Tu vas me faire gagner un temps plus que notable.

Je te remercie bien
 

ERIC S

XLDnaute Barbatruc
Re : Espacer les lettres d'un mot avec une contrainte liée à des chiffres

Bonjour à vous 2

j'ai un doute sur la fonction d'origine : Est-ce qu'elle n'ajoute pas un espace en fin de mot?

Code:
Function espace(mot)
  For i = 1 To Len(mot) - 1
    temp = temp & Mid(mot, i, 1)
    If Not IsNumeric(Mid(mot, i + 1, 1)) Then temp = temp & " "
Next i
  espace = temp + Mid(mot, i, 1)
End Function
 

gilbert_RGI

XLDnaute Barbatruc
Re : Espacer les lettres d'un mot avec une contrainte liée à des chiffres

pour remédier au vide terminal

VB:
Function espace1(mot)
    For i = 1 To Len(mot)
        On Error Resume Next
        If Asc(Mid(mot, i + 1, 1)) >= "48" And Asc(Mid(mot, i + 1, 1)) <= "57" Then
            temp = temp & Mid(mot, i, 1) & Mid(mot, i + 1, 1) & " "
            i = i + 1
        Else
            temp = temp & Mid(mot, i, 1) & " "
        End If
    Next
    espace1 = Left(temp, Len(temp) - 1)
End Function
 

poulie

XLDnaute Impliqué
Re : Espacer les lettres d'un mot avec une contrainte liée à des chiffres

Bonjour gilbert_RGI, ERIC S, Bonjour à tous,

Quel impact aurait eu cette "non remarque d'ERIC S et modification"?. Sans user de votre temps avez-vous la possibilité de m'expliquer cette macro même de façon succincte (car je suis novice ++).

Merci encore de m'avoir aidé.

Edit:

J'aurais du le préciser mais lorsqu'il y a des cellules vides j'ai un message d'erreur (#VALEUR). Du fait que je travaille ces extractions, ces valeurs d'erreur sont gênantes à moins que je les élimine manuellement ou une formule. Est-ce qu'il y a possibilité d'avoir une cellule vide après l'extraction si la cellule initiale n'est pas renseignée? L'exemple est sur la feuille essai2

Merci
 

Pièces jointes

  • Essai.xlsm
    17.7 KB · Affichages: 38
  • Essai.xlsm
    17.7 KB · Affichages: 38
  • Essai.xlsm
    17.7 KB · Affichages: 45
Dernière édition:

ERIC S

XLDnaute Barbatruc
Re : Espacer les lettres d'un mot avec une contrainte liée à des chiffres

Bonjour

j'ai mis quelques annotations sur les macros
j'ai fait une petite comparaison des méthodes
 

Pièces jointes

  • espaceravec-une-contrainte-chiffres.xlsm
    20.6 KB · Affichages: 45

gilbert_RGI

XLDnaute Barbatruc
Re : Espacer les lettres d'un mot avec une contrainte liée à des chiffres

J'aurais du le préciser mais lorsqu'il y a des cellules vides j'ai un message d'erreur (#VALEUR). Du fait que je travaille ces extractions, ces valeurs d'erreur sont gênantes à moins que je les élimine manuellement ou une formule. Est-ce qu'il y a possibilité d'avoir une cellule vide après l'extraction si la cellule initiale n'est pas renseignée? L'exemple est sur la feuille essai2

Merci

En retard mais le comparatif d'ERIC S semble bon

@ plus
 

job75

XLDnaute Barbatruc
Re : Espacer les lettres d'un mot avec une contrainte liée à des chiffres

Bonjour à tous,

Pourquoi ne pas tout simplement modifier légèrement la fonction de Boisgontier :

Code:
Function espace(mot)
For i = 1 To Len(mot)
  temp = temp & Mid(mot, i, 1) & IIf(IsNumeric(Mid(mot, i + 1, 1)), "", " ")
Next i
espace = RTrim(temp)
End Function
A+
 

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch