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 :

addition dans une inputbox


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 bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut addition dans une inputbox
    Bonjour à tous

    je but sur un truc bête...
    selon un choix dans une combobox, le montant que j'inscrit dans une inputbox doit lorsqu'il s'inscrit dans la cellule ajouté la valeur 22
    si je met à mon chiffre un point au lieu d'une virgule, aucune valeur ne s'inscrit

    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Dim i As Byte, Indice As Byte, derlig As Integer
    Dim pv As Byte
    Dim numdl As Integer
    pv = Controls("txt_pv" & Format(i, "00"))
     
     If .Range("c" & Indice + derlig).Value = "Leger Garantie" _
                 Then .Range("f" & Indice + derlig) = Controls("txt_pv" & Format(i, "00")) + 22 _
                   Else .Range("f" & Indice + derlig) = Controls("txt_pv" & Format(i, "00"))
    Merci pour votre aide

  2. #2
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Peut-être que ta variante ne correspond pas au chiffre à virgule

    La variante Byte est utilisée pour des montants entre [0;255]
    La variante Single est utilisée pour les nombres à virgule

  3. #3
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    Merci
    je viens de tester mais single ne donne rien

    effectivement je me pose la question sur la déclaration de la box mais j'ai testé byte, variant, integer, single, double, string

    ça ne fonctionne pas

    au début j’étais en variant car je pensais aussi que le problème venais de la mais je ne trouve pas

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Commence s'il te plait par montrer (un copié/collé rigoureux de ton code) le code réellement écrit.
    Tel n'est manifestement pas le cas (et pour cause) de celui montré ici.

  5. #5
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    je voulais juste mettre l'essentiel
    merci de venir m'aider

    voici le code complet du formulaire ce matin avant quelque test qui non rien donné

    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
     
     
     
    Private Sub UserForm_Initialize()
    Dim LastLig As Long
    Dim i As Byte
    Dim u As Integer
     
    With Worksheets("Source")
     LastLig = .Cells(.Rows.Count, 15).End(xlUp).Row
        For i = 1 To 14 '10 nombre de tes commbo cmb_ref01...cmb_ref21
            Me.Controls("cmb_nom" & i).RowSource = .Name & "!" & .Range("n2:n" & LastLig).Address
            Me.Controls("cmb_type" & Format(i, "00")).RowSource = .Name & "!" & .Range("e2:e" & LastLig).Address
            Me.Controls("cmb_produit" & Format(i, "00")).RowSource = .Name & "!" & .Range("l2:l" & LastLig).Address
            Me.Controls("cmb_marque" & Format(i, "00")).RowSource = .Name & "!" & .Range("k2:k" & LastLig).Address
        Next i
    End With
     
    For u = 1 To 14
       With Me.Controls("commande" & u)
           Me.Controls("commande" & u).Value = Sheets("n°commande").Range("e65536").End(xlUp).Offset(u, -1).Value
       End With
    Next u
     
    End Sub
     
    Private Sub cmd_validez_Click()
    Dim cmb_nom01, cmb_nom02, cmb_nom03, cmb_nom04, cmb_nom05, cmb_nom06, cmb_nom07, cmb_nom08, cmb_nom09, cmb_nom10, _
    cmb_nom11, cmb_nom12, cmb_nom13, cmb_nom14 As String
     
    Dim Commande As Excel.Worksheet
        Set Commande = Application.ThisWorkbook.Worksheets("n°commande")
    Dim u As Integer
     
    On Error Resume Next
     
    'inscrire les noms en feuille n°de commande
    For u = 1 To 14
        With Me.Controls("cmb_nom" & u)
            If Me.Controls("cmb_nom" & u).Value <> "" Then Commande.Range("e65536").End(xlUp).Offset(1, 0) = Me.Controls("cmb_nom" & u).Value
        End With
    Next u
     
     
    Dim i As Byte, Indice As Byte, derlig As Integer
    Dim pv As Variant
    Dim numdl As Integer
    pv = Controls("txt_pv" & Format(i, "00"))
     
     
     
    With Worksheets("prepafact")
      derlig = .Range("A" & .Rows.Count).End(xlUp).Row
        For i = 1 To 14
           If Controls("cmb_nom" & i) <> "" Then
              Indice = Indice + 1
                .Range("A" & Indice + derlig) = Controls("commande" & i)
                .Range("b" & Indice + derlig) = Controls("cmb_nom" & i)
                .Range("c" & Indice + derlig) = Controls("cmb_type" & Format(i, "00"))
                .Range("d" & Indice + derlig) = Controls("cmb_marque" & Format(i, "00"))
                .Range("e" & Indice + derlig) = Controls("txt_ref" & Format(i, "00"))
                .Range("g" & Indice + derlig) = Controls("txt_eco" & Format(i, "00")) + Controls("txt_sacem" & Format(i, "00"))
                .Range("h" & Indice + derlig) = Controls("cmb_produit" & Format(i, "00"))
                .Range("J" & Indice + derlig) = txtsemaine.Value
     
           If .Range("c" & Indice + derlig).Value = "Leger Garantie" _
                 Then .Range("f" & Indice + derlig) = Controls("txt_pv" & Format(i, "00")) + Controls("txt_sacem" & Format(i, "00")) + 22 _
                   Else .Range("f" & Indice + derlig) = Controls("txt_pv" & Format(i, "00")) + Controls("txt_sacem" & Format(i, "00"))
           End If
                .Range("i" & Indice + derlig).FormulaR1C1 = (.Range("f" & Indice + derlig).Value + .Range("g" & Indice + derlig).Value) * 1.2
     
     
            If .Range("g" & Indice + derlig).Value = "" _
                Then .Range("g" & Indice + derlig).Value = 0
        Next
    End With
     
    With Worksheets("prepafact")
    numdl = Range("a65536").End(xlUp).Row 'recuper le numero de la dernière ligne du tableau
        For i = 1 To numdl
            If Range("g" & i).Value = "" Then Range("g" & i).Value = "0"
        Next i
    End With
     
    Columns("I:I").Selection.NumberFormat = "#,##0.00"
     
     
    Unload Me
    ActiveWorkbook.Save
     
    End Sub
     
    Private Sub cmd_annuler_Click()
    Unload leger 'ferme le formulaire
    End Sub

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    C'est vraiment beaucoup de décontractiooooonnnnn y compris dans l'exposé.
    Pour mémoire
    l
    e montant que j'inscrit dans une inputbox
    Je ne vois AUCUNE inputbox

  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
    Citation Envoyé par bosk1000 Voir le message
    selon un choix dans une combobox, le montant que j'inscrit dans une inputbox doit lorsqu'il s'inscrit dans la cellule ajouté la valeur 22 si je met à mon chiffre un point au lieu d'une virgule, aucune valeur ne s'inscrit
    J'ai relu plusieurs fois cette phrase et je ne parviens toujours pas à la comprendre.

    J'ai l'impression que tu as un problème de valeur numérique dans une TextBox.
    Cet élément, comme son nom l'indique, renvoie du texte et non une valeur.
    Donc, si tu veux le conserver en tant que valeur pour faire des opérations dessus, il faut commencer par le transformer en valeur numérique (Double ou Single).

    Un des problèmes du couple Excel francophone / VBA, c'est que pour Excel francophone, le séparateur décimal est la virgule alors que pour VBA (anglophone pur et dur), c'est le point.
    Donc, si tu mets 22. provenant d'une variable texte dans une cellule Excel, il considèrera que c'est du texte (donc pas de calcul).
    Alors que si tu mets une virgule, c'est VBA qui considèrera que c'est du texte (ou un séparateur de milliers).

    Bref, quand tu récupères le résultat de ton TextBox, commence par le transformer en valeur dans VBA (par exemple avec un CDbl).

Discussions similaires

  1. annulation dans une inputbox
    Par sharpeye dans le forum Access
    Réponses: 20
    Dernier message: 29/01/2009, 20h31
  2. Une addition dans une requete
    Par Space Cowboy dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/01/2007, 14h52
  3. Réponses: 2
    Dernier message: 24/10/2006, 17h51
  4. [VB.Net 05] Addition dans une colonne d'un DataGridView
    Par collaud_vb dans le forum Windows Forms
    Réponses: 13
    Dernier message: 26/09/2006, 16h53
  5. Addition dans une zone de txte
    Par u3gmi dans le forum Access
    Réponses: 4
    Dernier message: 29/06/2006, 16h16

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