Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 29/06/2009, 15h57   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2008
Messages : 80
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 80
Points : 14
Points : 14
Par défaut Format du texte dans une TextBox

Bonjour,

voilà, j'ai un outil de saisie grâce auquel on fait entrer des montants dans une feuille excel. Le problème est que dès que l'on met des montant de plusieurs chiffres ça devient illisible. Je veux alors mettre un format du texte dans la textbox pour qu'elle affiche 1 000 000 000 au lieu de 1000000000 par exemple. Peut quelqu'un m'indiquer comment faire ceci car je ne suis pas très familiarisé avec les GUI en VBA.

Merci d'avance et bonne journée

Dernière modification par ghosty04 ; 29/06/2009 à 16h28.
ghosty04 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 16h42   #2
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Clique droit sur ta cellule (ou sur la colonne que tu as selectionné) format de cellule, choisi nombre et coche le séparateur des milliers. Pas besoin de VBA. Si tu veux connaitre le code qui le fait lance l'enregistreur
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 16h59   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2008
Messages : 80
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 80
Points : 14
Points : 14
c'est gentil de ta part. En fait je parle de la même chose, mais affectée à une TextBox (dans une userform) et non pas à une cellule (dans une feuille de travail)
ghosty04 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 20h09   #4
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Désolé je suis allé un peu vite

J'ai fait ca
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim reste As Byte, l As Integer, c As String
If Len(TextBox1) > 3 Then
    c = TextBox1 'InStr(TextBox1, " ", "")
    TextBox1 = ""
    l = Len(c)
    reste = l - (l \ 3) * 3
    If reste <> 0 Then
        TextBox1 = Left(c, reste)
        For i = reste To l Step 3
        TextBox1 = TextBox1 & " " & Mid(c, i + 1, 3)
        Next i
    Else
        For i = 1 To l Step 3
        TextBox1 = TextBox1 & " " & Mid(c, i, 3)
        Next i
    End If
End If
End Sub
Par contre ca rajoute des espace dans tes valeur il faut les enlever quand tu utilise la valeur
Code :
1
2
 
valeur = CLng(Replace(textbox1, " ", ""))
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 23h23   #5
Membre habitué
 
Développeur informatique
Inscription : janvier 2009
Messages : 124
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2009
Messages : 124
Points : 139
Points : 139
Envoyer un message via MSN à Lynx92260
Par défaut plus simple

Il suffit d'utliser la fonction Format tres puissant !


Code :
1
2
3
4
5

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1) Then TextBox1.Text=Format(TextBox1.Text, "##,##0.00")
End Sub
Bon il faut bien sur adapter la chaine de formatage selon le besoin ""#,##0.00"
Lynx92260 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 07h44   #6
Membre confirmé
 
Inscription : octobre 2007
Messages : 232
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 232
Points : 235
Points : 235
Bonjour,

Affiche en temps réel avec le séparateur système de milliers

Code :
1
2
3
4
5
6
7
Private Sub TextBox1_Change()
Dim X As String
If Len(Me.TextBox1) < 4 Then Exit Sub
X = Application.Rept("### ", Application.RoundUp(Len(Me.TextBox1) / 3, 0))
X = Left(X, Len(X) - 1)
Me.TextBox1 = Format(Me.TextBox1, X)
End Sub
mapeh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 08h20   #7
Rédacteur/Modérateur
 
Avatar de Jeannot45
 
Homme Jean BALLAT
Inscription : octobre 2004
Messages : 2 753
Détails du profil
Informations personnelles :
Nom : Homme Jean BALLAT
Âge : 62
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : octobre 2004
Messages : 2 753
Points : 5 124
Points : 5 124


Pour compléter la maitrise des formats voici un petit tuto convernant ce sujet :

Formats personnalisés sous Excel

Bonne continuation
__________________
Jeannot

Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., [B]Sources VBA

Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
Jeannot45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 11h40.


 
 
 
 
Partenaires

Hébergement Web