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

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    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 éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    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 actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    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
    Points : 2 416
    Points
    2 416
    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 actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    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
    Points : 2 416
    Points
    2 416
    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 actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    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
    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
    Points : 2 416
    Points
    2 416
    Par défaut
    Bon, c'est le contraire qu'il faut faire, mettre un point à la place d'une virgule.
    J'ai aussi eu quelques petits problèmes pour résoudre..
    Enfin voilà une solution qui je chez moi fonctionne.
    J'ai ajouter l'insertion directe des textes dans les cellules, mais elles doivent êtres contigues.
    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
    'Solition 2: Si bouton appliquer.. Action...
    Private Sub CommandButton1_Click()
        ValideTxt2
    End Sub
     
    'ATTENTION, fonction modifiée
    Function Virgule(Str As String) As String
        Virgule = Replace(Str, ",", ".")
    End Function
    Sub ValideTxt2()
    Dim Cont As Control
    Dim i As Integer
        Workbooks("TonClasseur.xls").Activate
     
        Sheets("LaFeuille").Select
        i = 1
        For Each Cont In Me.Controls
            If TypeOf Cont Is MSForms.TextBox Then
                Cont.Object.Text = Virgule(Cont.Object.Text)
                Cells(i, 2).Value = Cont.Object.Value
                i = i + 1
            End If
        Next
    End Sub
    A+

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Bon ben j'ai testé, et de nouveau ça me fait comme au début, le contrôle de valeurs ne reconnait pas que le nombre est entre 0 et 10.

    J'ai mis 9.6 dans la textbox mais il ne le reconnait pas ...

  10. #10
    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
    Points : 2 416
    Points
    2 416
    Par défaut
    Tu a fait un copier coller des dernières modifs ? car cette fois, chez moi ca fonctionne impec. Donc FAIRE UNE COPIER/COLLER.
    Je te fait remarquer que j'ai marquer au dessus Fonction Modifiée.
    A+

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    J'ai bien fait exactement comme tu l'a donné, j'ai copié/collé et tout mais rien à faire ça ne marche pas.

    C'est fort possible que ça vienne du fait que dans mon bouton_click il n'y a pas qu'une seule chose, non ?

  12. #12
    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
    Points : 2 416
    Points
    2 416
    Par défaut
    Alors met le code qu'il y a dans l'événement clic du bouton.
    A+

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    En fait dans l'évènement click du bouton, il y a déja d'autres trucs. Si je rajoute ça, et que je copie/colle comme tu as mis ben ça ne marche pas!

    Sinon y'a pas moyen de forcer le type sous excel pour qu'il reconnaisse des valeurs avec "," ou "." ?

  14. #14
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour
    Alors met le code qu'il y a dans l'événement clic du bouton.
    @+

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Désolée, j'avais mal compris le sens de la phrase

    Bon le code est pas très très court mais bon ...


    [EDIT] Bon en fait maintenant ça marche, il faut que je copie le même code pour toutes mes textbox, mais ça marche !
    Voila ce que j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 46 Then KeyAscii = 44
    End Sub
    [/EDIT]

    [EDIT 2] j'ai parlé trop vite, Excel ne me reconnait toujours pas les valeurs comme il faut, vous connaissez pas un moyen de forcer le type d'une cellule excel en type nombre ? [/EDIT 2]

    (car il me le reconnait en type texte)

  16. #16
    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
    Points : 2 416
    Points
    2 416
    Par défaut
    Salut............................................j'abandonne

  17. #17
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir,

    Garde le moral LeForestier


  18. #18
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  19. #19
    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.

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    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 ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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