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

Conversion de nombres écrits en chiffres vers écriture en texte

Toine45

XLDnaute Junior
Bonjour à tous
Je sollicite votre aide pour finir une macro Excel 2003 (mon niveau étant assez faible)
Je cale sur la conversion de nombres écrits en chiffres vers écriture en texte, lorsque les cellules contiennent également du texte.
Je joins mon fichier où vous trouverez la macro de conversion (trouvée sur le net), ainsi que la macro de lancement (la mienne) toute 2 situées dans le module 2

Voir l'onglet "Procédure" de mon fichier pour la piste que j'envisage (mais ne sais pour l'instant pas faire)
(je fais les tests dans la colonne B de l'onglet Travail)

Exemples :
123 => cent vingt trois (OK : fonctionne)

45,87 => quarante cinq virgule quatre vingt sept (OK : fonctionne)

Chose => N'est pas à convertir (OK, pas de problème)


Toto 45 => Impossible à convertir
(désiré : Toto quarante cinq)

64,52 Machin 5684 => Impossible à convertir
(désiré : soixante quatre virgule Machin cinq mille six cent quatre vingt quatre

Truc958,23Titi456toto6.38 => Impossible à convertir
(désiré : Truc neuf cent cinquante huit virgule vingt trois Titi quatre cent cinquante six toto six virgule trente huit
En pièce jointe: mon fichier d'essai (la macro est dans le module 2) (celle du module 1 ignore les 0 des décimales)

Pour ceux que ça intéresse, cette macro est tout à fait fonctionnelle, dès l'instant où il n'y a pas de texte
(Ne conserver que le module 2.)

2 ème chalange : je désirerais, si c'est possible inclure Toute la macro, uniquement dans un userform, sans se servir de module.

Merci d'avance pour votre aide et bon week-end
 

Pièces jointes

  • Chiffres_Vers_Lettres19.xls
    110 KB · Affichages: 54
Dernière édition:

job75

XLDnaute Barbatruc
Re : Conversion de nombres écrits en chiffres vers écriture en texte

Re,

Avec ce nouveau fichier il suffit de sélectionner la plage à traiter et de cliquer sur le bouton.

Cela peut se faire même quand l'USF est affiché (mode non modal).

Cette macro dans l'USF traite les cellules une par une :

Code:
Private Sub CheckBox1_Click()
Dim r As Range, t$
Set r = Intersect(Selection, Range("A3:C" & Rows.Count), ActiveSheet.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each r In r
  r.Copy r(1, 5)
  t = Espaces(r)
  If CheckBox1 Then t = ConvNumberLetterWithText(t, Val(ComboBox1))
  t = IIf(OptionButton1, UCase(t), IIf(OptionButton2, LCase(t), t))
  If OptionButton3 Then t = UCase(Left(t, 1)) & Mid(t, 2)
  If OptionButton4 Then t = Application.Proper(t)
  If IsNumeric(t) Then r(1, 5) = CDbl(t) Else r(1, 5) = t
Next
[E:G].Columns.AutoFit 'ajustement automatique
Application.ScreenUpdating = True
End Sub
Edit : code du bouton 'Traitement de texte' :

Code:
Private Sub CommandButton1_Click()
Unload UserForm1
UserForm1.Show 0 'non modal
End Sub
A+
 

Pièces jointes

  • Chiffres_Vers_Lettres par sélection(1).xls
    163.5 KB · Affichages: 25
Dernière édition:

job75

XLDnaute Barbatruc
Re : Conversion de nombres écrits en chiffres vers écriture en texte

Re,

Ceci est mieux, l'USF étant affiché, pour conserver les choix faits :

Code:
Private Sub CommandButton1_Click()
UserForm1.Hide
UserForm1.Show 0 'non modal
End Sub
Et dans l'USF :

Code:
Private Sub UserForm_Activate()
If ComboBox1.ListCount Then CheckBox1_Click: Exit Sub
Dim i&
ComboBox1.AddItem "-"
For i = 1 To 10
  ComboBox1.AddItem i
Next
ComboBox1 = "-"
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Chiffres_Vers_Lettres par sélection(2).xls
    163.5 KB · Affichages: 25

Toine45

XLDnaute Junior
Re : Conversion de nombres écrits en chiffres vers écriture en texte

Bonjour à tous
Merci à Job75 pour son fichier

J'ai regardé le dernier fichier reçu et je l'ai modifié pour avoir le fonctionnement que je désire (Conversion en lieu et place des chiffres de départ)
ça a l'air de fonctionner correctement (que ce soit en simple sélection ou multi sélection de plages ou juste une seule cellule.)

Il ne me manque plus que le choix du séparateur "virgule" (si possible par InputBox)
Mes compétences étant très limitées, Si quelqu'un a une idée à me proposer...
Après, il ne me restera plus qu'à tout intégrer dans l'UserForm (comme mon précédent fichier)

Merci d'avance
Bonne nuit (il parait que ça porte conseil)
 

Pièces jointes

  • Chiffres_Vers_Lettres par sélection(2)-2.xls
    108.5 KB · Affichages: 28
Dernière édition:

job75

XLDnaute Barbatruc
Re : Conversion de nombres écrits en chiffres vers écriture en texte

Bonjour Toine45, le forum,

Une autre manière de faire avec cette macro pour le bouton :

Code:
Private Sub CommandButton1_Click() 'bouton Traitement de texte
With UserForm1.ComboBox1
  If .ListCount Then Traitement: Exit Sub
  Dim i&
  .AddItem "-"
  For i = 1 To 10
    .AddItem i
  Next
  .Value = "-"
  .Parent.Show 0 'non modal
End With
End Sub
Et dans un module standard (Module6) :

Code:
Sub Traitement()
Dim r As Range, t$
Set r = Intersect(Selection, Range("A3:C" & Rows.Count), ActiveSheet.UsedRange)
If r Is Nothing Then Exit Sub
Application.ScreenUpdating = False
With UserForm1
  For Each r In r
    r.Copy r(1, 5) 'pour les formats, facultatif
    t = Espaces(r)
    If .CheckBox1 Then t = ConvNumberLetterWithText(t, Val(.ComboBox1))
    t = IIf(.OptionButton1, UCase(t), IIf(.OptionButton2, LCase(t), t))
    If .OptionButton3 Then t = UCase(Left(t, 1)) & Mid(t, 2)
    If .OptionButton4 Then t = Application.Proper(t)
    If IsNumeric(t) Then r(1, 5) = CDbl(t) Else r(1, 5) = t
  Next
End With
[E:G].Columns.AutoFit 'ajustement automatique
Application.ScreenUpdating = True
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Chiffres_Vers_Lettres par sélection(3).xls
    166.5 KB · Affichages: 22

job75

XLDnaute Barbatruc
Re : Conversion de nombres écrits en chiffres vers écriture en texte

Re,

Bizarre, vous n'avez pas compris que si l'on modifie les données sources il n'y a plus moyen de modifier ensuite le traitement de texte

Pour ce qui est du séparateur décimal on peut le paramétrer avec un 3ème argument de la fonction :

Function ConvNumberLetterWithText$(ByVal t, Ndec As Byte, sep$)

Fichier (4).

A+
 

Pièces jointes

  • Chiffres_Vers_Lettres par sélection(4).xls
    168 KB · Affichages: 19

job75

XLDnaute Barbatruc
Re : Conversion de nombres écrits en chiffres vers écriture en texte

Re,

Le traitement de texte peut se faire sur une autre feuille, fichier (5).

Edit : valeur "-" par défaut de ComboBox1 pour éviter 2 exécutions de la macro à l'ouverture de l'USF.

A+
 

Pièces jointes

  • Chiffres_Vers_Lettres par sélection(5).xls
    172 KB · Affichages: 13
Dernière édition:

Toine45

XLDnaute Junior
Re : Conversion de nombres écrits en chiffres vers écriture en texte

Bonjour Job75 et le Forum
Grâce à l'avant dernier fichier reçu, j'ai enfin réussi à contourner mon problème de choix du séparateur par inputbox
Je m'en suis tiré en utilisant des boutons d'option sur un userform et, sur un deuxième, j'ai utilisé une combobox, ce qui est plus pratique. (en attendant de réussir à faire fonctionner une inputbox pour le choix du séparateur car la combobox m'oblige à utiliser un module, ce que j'essai d'éviter.)
J'arrive maintenant à faire fonctionner le tout comme je le désirais.
Par contre, je suis limité à sélectionner une seule plage à la fois sur une seule colonne.

J'ai légerment modifié le fichier (4) de Job75 afin que la conversion s'inscrive en lieu et place des cellules de départ, ça me conviens pas mal pour ce que je veux en faire (l'avantage c'est que c'est multi plages).


J'ai regardé vite fait le dernier fichier (5) envoyé par Job75, qui me parait très intéressant (L'atout majeure est qu'il est multi plages, autre point intéressant: il utilise une combobox pour le choix du séparateur décimal). je m'en suis inspiré pour modifier mon userform.
Je vais essayer de le modifier un peu pour l'adapter à mes besoins spécifiques, mais est déja très bien tel quel.
L'utilisation d'une feuille suplémentaire peut aussi être intéressant pour certaines utilisations.(Pour l'instant, je n'en ai pas l'utilité, car pour mon utilisation actuelle, je recopie à la place de départ des chiffres.

Je joins mes fichiers modifiés si ça intéresse quelqu'un
Bonne soirée à tous
 

Pièces jointes

  • Chiffres_Vers_Lettres30.xls
    98.5 KB · Affichages: 14
  • Chiffres_Vers_Lettres32.xls
    105 KB · Affichages: 15
  • Chiffres_Vers_Lettres par sélection(4)-2.xls
    145.5 KB · Affichages: 13
  • Chiffres_Vers_Lettres par sélection(5)-2.xls
    125.5 KB · Affichages: 19
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…