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 :

Cellule avec valeur numérique contenant un point initialisée dans une textbox


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 goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut Cellule avec valeur numérique contenant un point initialisée dans une textbox
    Bonjour,

    J'ai un montant en franc suisse dans une cellule.

    Lorsque j'initialise la valeur de cette cellule dans une Textbox le point est remplacé par une virgule.

    Lorsque je renvoie cette valeur dans la même cellule avec la virgule, la cellule ne reconnait plus le format numérique de la valeur, donc inutilisable pour des calculs ...

    Comment corriger ce problème ?
    Comment afficher les valeurs dans la Textbox avec 2 chiffres après le point (5.00) ?

    Merci pour votre aide et meilleures salutations
    Philippe

    Nom : 2019-12-03_12-26-24.png
Affichages : 438
Taille : 57,4 Ko

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par goninph Voir le message
    Lorsque j'initialise la valeur de cette cellule dans une Textbox le point est remplacé par une virgule.
    Lorsque je renvoie cette valeur dans la même cellule avec la virgule
    Comment est-ce que tu initialises ta Textbox ?
    Comment est-ce que tu renvoies la valeur dans ta cellule ?

    Je parles bien sûr de code.

  3. #3
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Hello,

    Voilà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Initialize()
        LigneCelluleActive = ActiveCell.Row
            Me.TextBox_Cout_provision = Cells(LigneCelluleActive, 7).Value
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Sub BT_OK_Click()
        LigneCelluleActive = ActiveCell.Row
                Cells(LigneCelluleActive, 7) = Me.TextBox_Cout_provision.Value
    End Sub

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    tu peux également t'amuser avec le séparateur décimal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.International(xlDecimalSeparator)
    https://jpcheck.developpez.com/tutor...ational/#LIV-7
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Si je comprends bien, les valeurs s'affichent avec un séparateur décimal "." dans ta feuille de calcul mais tu veux pouvoir les saisir avec un séparateur décimal "," dans ton TextBox puis que ça se transfert dans ta feuille avec un séparateur décimal "." ? C'est bien ça ?

  6. #6
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Si je comprends bien, les valeurs s'affichent avec un séparateur décimal "." dans ta feuille de calcul mais tu veux pouvoir les saisir avec un séparateur décimal "," dans ton TextBox puis que ça se transfert dans ta feuille avec un séparateur décimal "." ? C'est bien ça ?
    Hello,

    Je saisis dans la Textbox une somme avec un point
    La valeur descend dans la cellule avec un point
    Lorsque j'initialise la valeur de la cellule contenant un point dans la Textbox, le point est remplacé par une virgule dans la Textbox ????? et c'est au moment ou je veux descendre la valeur avec une virgule dans la cellule que tout plante

    Merci pour votre aide
    Philippe

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
        Me.TextBox_Cout_provision = Replace(CStr(Cells(ActiveCell.Row, 7).Value),",",".")
    End Sub

  8. #8
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Merci Menhir,

    Voici le code adapté pour effectuer des soustractions sans beug

    Merci et bonne soirée
    Philippe

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    Option Explicit
    Dim LigneCelluleActive As Long
    Private Sub UserForm_Initialize()
        LigneCelluleActive = ActiveCell.Row
        If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
        Me.Caption = "Modifier la ligne N° " & Cells(LigneCelluleActive, 1) & " du journal"
        Me.TextBox_Description = Cells(LigneCelluleActive, 4).Value
        If Cells(LigneCelluleActive, 7) = "" Then
            Me.TextBox_Cout_provision = 0
        Else
            Me.TextBox_Cout_provision = Replace(CStr(Cells(LigneCelluleActive, 7).Value), ",", ".")
        End If
        If Cells(LigneCelluleActive, 8) = "" Then
            Me.TextBox_Cout_reel = 0
        Else
            Me.TextBox_Cout_reel = Replace(CStr(Cells(LigneCelluleActive, 8).Value), ",", ".")
        End If
        If Cells(LigneCelluleActive, 9) = "" Then
            Me.Label_Cout_dif = 0
        Else
            Me.Label_Cout_dif = Replace(CStr(Cells(LigneCelluleActive, 9).Value), ",", ".")
        End If
        If Cells(LigneCelluleActive, 6) = "Info" Then
            Me.Option_Info = True
        End If
        If Cells(LigneCelluleActive, 6) = "En cours" Then
            Me.Option_En_cours = True
        End If
        If Cells(LigneCelluleActive, 6) = "En retard" Then
            Me.Option_En_retard = True
        End If
        If Cells(LigneCelluleActive, 6) = "Terminé" Then
            Me.Option_Terminé = True
        End If
        Me.TextBox_Description.SetFocus   'Place le curseur dans la textbox
    End Sub
    Sub BT_OK_Click()
    Dim Utilisateur As Variant
        Utilisateur = Application.UserName 'Environ("USERNAME")
        LigneCelluleActive = ActiveCell.Row
        If Me.TextBox_Description = "" Then
            MsgBox "Indiquer une description", vbExclamation, "! Oups ! Action interrompue"
            Me.TextBox_Description.SetFocus   'Place le curseur dans la textbox
            Exit Sub
        Else
            'Vérifier l'état si un des boutons d'options est sélectionné avec Function OptionSelected_Avancement
                If OptionSelected_Avancement Then
                'Info
                If Me.Option_Info = True Then 'Si coché ...
                    Cells(LigneCelluleActive, 6) = "Info"
                End If
                'En cours
                If Me.Option_En_cours = True Then 'Si coché ...
                    Cells(LigneCelluleActive, 6) = "En cours"
                End If
                'En retard
                If Me.Option_En_retard = True Then 'Si coché ...
                    Cells(LigneCelluleActive, 6) = "En retard"
                End If
                'Terminé
                If Me.Option_Terminé = True Then 'Si coché ...
                    Cells(LigneCelluleActive, 6) = "Terminé"
                End If
                Unload Me
            Else 'de OptionSelected_Avancement
                MsgBox "Préciser l'avancement.", vbExclamation, "! Oups ! Action interrompue"
                Exit Sub
            End If 'de OptionSelected_Avancement
            Cells(LigneCelluleActive, 2) = Utilisateur
            Cells(LigneCelluleActive, 3) = Now
            Cells(LigneCelluleActive, 4) = Me.TextBox_Description
            If Me.TextBox_Cout_provision = 0 Then
                Cells(LigneCelluleActive, 7) = ""
            Else
                Cells(LigneCelluleActive, 7) = Val(Me.TextBox_Cout_provision) 'CDbl(Me.TextBox_Cout_provision.Value) 'CDbl convertit la textbox en valeur numérique pour la cellule
            End If
            If Me.TextBox_Cout_reel = 0 Then
                Cells(LigneCelluleActive, 8) = ""
            Else
                Cells(LigneCelluleActive, 8) = Val(Me.TextBox_Cout_reel.Value)     'CDbl convertit la textbox en valeur numérique pour la cellule
            End If
            If Me.Label_Cout_dif = 0 Then
                Cells(LigneCelluleActive, 9) = ""
            Else
                Cells(LigneCelluleActive, 9) = Val(Me.Label_Cout_dif.Caption) 'CDbl convertit la textbox en valeur numérique pour la cellule
            End If
            'Lancer le correcteur orthographique
            Cells(LigneCelluleActive, 4).CheckSpelling SpellLang:=1036
        End If
    End Sub
    Private Sub TextBox_Cout_provision_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    'Pour sélectionner le 0 qui va s'effacer si l'on tape une valeur
        If TextBox_Cout_provision = 0 Then
            With TextBox_Cout_provision
                .SetFocus
                .SelStart = 0
                .SelLength = Len(.Text)
            End With
        End If
    End Sub
    Private Sub TextBox_Cout_reel_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    'Pour sélectionner le 0 qui va s'effacer si l'on tape une valeur
        If TextBox_Cout_reel = 0 Then
            With TextBox_Cout_reel
                .SetFocus
                .SelStart = 0
                .SelLength = Len(.Text)
            End With
        End If
    End Sub
    Private Sub TextBox_Cout_provision_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
                    Case 48 To 57   'Accepte de 0 à 9
                    Case 46   'Accepte le point
        Case Else
            KeyAscii = 0
    End Select
    End Sub
    Private Sub TextBox_Cout_reel_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
                    Case 48 To 57   'Accepte de 0 à 9
                    Case 46   'Accepte le point
        Case Else
            KeyAscii = 0
    End Select
    End Sub

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

Discussions similaires

  1. [XL-2013] Recherchev avec valeur de la plage de donnee dans une cellule
    Par jj4822 dans le forum Excel
    Réponses: 2
    Dernier message: 19/12/2015, 19h51
  2. Réponses: 6
    Dernier message: 29/12/2014, 15h43
  3. [DATA] Test sur valeur numérique contenant des missing
    Par clao260 dans le forum SAS Base
    Réponses: 2
    Dernier message: 05/12/2013, 13h20
  4. Problème de concaténation avec valeur numérique
    Par Freedolphin dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2011, 17h27
  5. Réponses: 16
    Dernier message: 12/05/2010, 22h28

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