IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplacer le . par une , dans un userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut Remplacer le . par une , dans un userform
    Bonjour,

    j'ai d'abord cherché sur gougueul des solutions pour mon problème, mais en vain, ne sachant pas exactement où placer mon code :/

    Voila mon problème : j'ai un userform dans mon vba, où l'utilisateur rentre des nombres dans des textbox du genre 9.6 ou 8.7 par exemple.

    Sur ces textbox, je fais un contrôle de valeurs : si c'est infèrieur à 0 ou supérieur à 10, ce n'est pas bon.
    Or, si je mets un "." dans mes valeurs, ça ne marche pas, alors que si je mets une "," ça marche. Le truc c'est que l'utilisateur ne met pas forcément une virgule mais il peut mettre un point.

    Donc comment faire pour que ce point soit changé automatiquement en virgule quand on rentre un nombre ? ou du moins que ça soit détecté comme une virgule même si on a un point ?

    J'avais testé ceci mais je ne sais pas où je dois le mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Donc si quelqu'un peut m'aider ... =)

  2. #2
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(".") Then KeyAscii = Asc(",")
    End Sub
    cordialement

  3. #3
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Merci pour le code, il marche !

    Par contre, est-ce que je dois faire à chaque fois le même code pour chaque textbox existante ?

    Ou normalement un seul suffit pour toutes les textbox ?

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    une autre façon de faire,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    'Solution 1: à mettre dans chaque textbox (Si peu de textbox)
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 13 Then
           text1Box1.Text = Virgule(TextBox1.Text)
        End If
    End Sub
    '
    'Solition 2: Si bouton appliquer.. Action...
    Private Sub CommandButton1_Click()
        ValideTxt
    End Sub
     
    Sub ValideTxt()
    Dim Cont As Control
        For Each Cont In Me.Controls
            If TypeOf Cont Is MSForms.TextBox Then
                Cont.Object.Text = Virgule(Cont.Object.Text)
            End If
        Next
    End Sub
     
    Function Virgule(Str As String) As String
        Virgule = Replace(Str, ".", ",")
    End Function
    J'ai testé, les 2 solutions fonctionnent
    A toi de faire ton choix.
    A+

  5. #5
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    En fait, j'ai toujours un problème. J'ai donc mis le code actif pour toutes mes textbox et ça marche sauf à la fin quand je calcule mon résultat.

    Les valeurs de mes textbox sont mises dans des cellules d'une feuille excel, mais là j'ai l'erreur comme quoi le nombre est stocké sous forme de texte. Du coup, ma formule de somme ne prend pas en compte les valeurs avec une ",".

    Quelqu'un peut-il m'aider ?

    [edit] je vais tester aussi cette seconde solution, mais je pense avoir le même problème après, dans ma feuille Excel :/ [/edit]

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Comment tu incorpore les textes dans les cellules ?
    Essaye déjà avec... cellule = Val(TextBox.Text)
    Sinon, met ta formule dans un poste.

  7. #7
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.Cells(3, 1).Value = Me.TextBox1.Value
    Voila mon code général pour toutes mes textbox.
    La "," est bien prise en compte dans les textbox, mais après sous excel quand je fais "=SOMME(...)" ben ça me reconnait pas les valeurs.
    Donc je vais tester ta solution pour voir ce que ça donne.

    [Edit] solution testée : excel me vire ce qu'il y a après la virgule ! [/edit]

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Quel est le séparateur de décimal dans ton panneau de configuration ?

    Et essayes après l'affectation de ta cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    feuille.Cells(3, 1).Value = Me.TextBox1.Value
    feuille.Cells(3,1).NumberFormat = "#,##0.00"
    Le point dans la mesure ou le séparateur décimal est le point dans les options régionales de ton panneau de configuration windows.

  9. #9
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Le séparateur de décimales est la "," .

    Sinon j'ai testé les solutions proposées (celle de l'autre topic également) et rien à faire :

    - Soit c'est reconnu comme du texte qu'il faut convertir en nombre si je veux que ça marche
    - Soit ça reconnait que c'est un nombre, mais ça ne le prend pas en compte dans le calcul de la somme ...

  10. #10
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Hum sinon, connaissez-vous un autre moyen de dire :

    le nombre doit être compris entre 0 et 10 autre que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Me.textbox1.value<0 or me.textbox1.value>10 then
    msgbox("ceci est foireux")
    end if
    avec des nombres du type "9.5" ou "7.3" ou des entiers du genre "9" par exemple.

    (je ne désespère pas encore pour mon problème ^^)

  11. #11
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour

    essaie ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Val(TextBox1) < 0 Or Val(TextBox1) > 10 Then MsgBox ("ceci est foireux")
    cordialement

  12. #12
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    J'ai une incompatibilité de type cette fois-ci ...

    [EDIT] Ah l'incompatibilité vient d'un autre endroit, je vais retester la formule[/EDIT]

    [EDIT 2] Une incompatibilité de type sur un form.show peut venir d'où ? [/EDIT 2]

    [EDIT 3] Bon ayé j'ai trouvé pour l'incompatibilité, j'ai testé la formule, et excel me la stocke toujours sous forme de texte à convertir en nombre ... [/EDIT 3]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/07/2018, 13h18
  2. Réponses: 2
    Dernier message: 19/11/2011, 13h21
  3. [RegEx] remplacer AND par WHERE dans une requête SQL
    Par Kyaan dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 14h42
  4. Remplacer les " par des \" dans une chaine
    Par jojodu31 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 18/04/2008, 14h14
  5. [VBA-E]Remplacement virgules par tabulation dans un fichier texte
    Par Mlezen dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/05/2006, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo