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 :

mise en page de plusieurs valeurs numériques [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut mise en page de plusieurs valeurs numériques
    Bonjour,

    j'ai un code qui selon la tournure doit renvoyer plusieurs valeurs numériques dans une seule cellule. Le problème c'est que je n'ai que la première qui s'affiche exactement comme je le souhaite mais aucune trace des autres.

    Voici l'affichage que je devrais avoir (par exemple):
    lot n° 1 : 125.00 €
    lot n° 2: 1458.56 €
    ...

    voici le code pour qu'il y en ai au moins deux(c'est le même au terme prêt qui est répété 2 autres fois encore)
    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
    Private Sub TextBox_ht_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        'Si la valeur de textbox_ht est un nombre sans virgule alors on rajoute la virgule et deux 0
        Dim vResult_ht As Variant, montant As String
     
        If TextBox_ht.Value = "" Then
        Else
            'vResult_ht = Replace(TextBox_ht.Value, ".", ",")
            'vResult_ht = CDbl(vResult_ht)
            vResult_ht = CDbl(Val(TextBox_ht.Value)) 'passage d'une chaine string en une valeur de type double si un nombre est rentré dans la textbox
            TextBox_ht = IIf(IsNumeric(vResult_ht), Format(vResult_ht, "###0.00"), "")
            TextBox_ht = Replace(TextBox_ht, ",", ".")
        End If
     
        If (OptionButton_lot.Value = True) Then
            montant_ht = "lot 1 : " + TextBox_ht + "€"
        ElseIf (OptionButton_bon_commande.Value = True) Then
            montant_ht = "min : " + TextBox_ht + "€"
        Else
            montant_ht = TextBox_ht
        End If
     
    End Sub
     
    Private Sub TextBox_ht_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        'Seule une valeur numérique peut être entré
        If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
     
        'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant
        If Len(TextBox_ht) = 1 And TextBox_ht = "." Then TextBox_ht = "0."
     
        'Si un point est déjà dans la chaine on ne peut pas en taper un autre
        If InStr(TextBox_ht.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0
     
        'S'il existe un point dans le TextBox : InStr(TextBox_ht.Value, ".") <> 0
        'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_ht.Value)
        'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_ht.Value, ".") + 1
        'alors on annule la saisie : Then KeyAscii = 0
        If InStr(TextBox_ht.Value, ".") <> 0 And Len(TextBox_ht.Value) > InStr(TextBox_ht.Value, ".") + 1 Then KeyAscii = 0
     
    End Sub
     
    Private Sub TextBox_ht_max_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        'Si la valeur de textbox_ht est un nombre sans virgule alors on rajoute la virgule et deux 0
        Dim vResult_ht_max As Variant, montant_ht_max As String
     
        If TextBox_ht_max.Value = "" Then
        Else
            'vResult_ht_max = Replace(TextBox_ht_max.Value, ".", ",")
            'vResult_ht_max = CDbl(vResult_ht_max)
            vResult_ht_max = CDbl(Val(TextBox_ht_max.Value))
            TextBox_ht_max = IIf(IsNumeric(vResult_ht_max), Format(vResult_ht_max, "###0.00"), "")
            TextBox_ht_max = Replace(TextBox_ht_max, ",", ".")
        End If
     
        If (OptionButton_lot.Value = True) Then
            montant_ht_max = "lot 2 : " + TextBox_ht_max + "€"
        ElseIf (OptionButton_bon_commande.Value = True) Then
            montant_ht_max = "max : " + TextBox_ht_max + "€"
        End If
     
    End Sub
     
    Private Sub TextBox_ht_max_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        'Seule une valeur numérique peut être entré
        If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
     
        'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant
        If Len(TextBox_ht_max) = 1 And TextBox_ht_max = "." Then TextBox_ht_max = "0."
     
       'Si un point est déjà dans la chaine on ne peut pas en taper un autre
        If InStr(TextBox_ht_max.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0
     
        'S'il existe un point dans le TextBox : InStr(TextBox_ht.Value, ".") <> 0
        'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_ht.Value)
        'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_ht.Value, ".") + 1
        'alors on annule la saisie : Then KeyAscii = 0
        If InStr(TextBox_ht_max.Value, ".") <> 0 And Len(TextBox_ht_max.Value) > InStr(TextBox_ht_max.Value, ".") + 1 Then KeyAscii = 0
     
     
    End Sub
    ça c'est le remplissage des textbox et maintenant l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     montant = IIf(montant_ht <> vbNullString, montant_ht & Chr(10), vbNullString) & _
          IIf(montant_ht_max <> vbNullString, montant_ht_max & Chr(10), vbNullString) & _
          IIf(montant_lot_3 <> vbNullString, montant_lot_3 & Chr(10), vbNullString) & _
          IIf(montant_lot_4 <> vbNullString, montant_lot_4 & Chr(10), vbNullString)
     
    Sheets("liste des marchés").Cells(derli, "M") = montant

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    La solution a été trouvé dans ce topic. Lisez le entièrement pour la solution

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

Discussions similaires

  1. [ODS] [RTF] Mise en page de plusieurs boxplots : titre et taille figure
    Par joyeux_lapin13 dans le forum ODS et reporting
    Réponses: 6
    Dernier message: 28/10/2011, 11h20
  2. trier plusieurs valeurs numériques dans une cellule
    Par marty456 dans le forum Conception
    Réponses: 1
    Dernier message: 04/08/2010, 20h19
  3. Réponses: 6
    Dernier message: 23/03/2009, 10h31
  4. Recupere plusieurs valeur d'une page
    Par ponpon17430 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 02/09/2006, 21h11
  5. Réponses: 11
    Dernier message: 17/05/2006, 11h48

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