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 :

Convertir une valeur positive depuis Textbox vers une valeur négative dans Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef d'exploitation
    Inscrit en
    Juillet 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 57
    Par défaut Convertir une valeur positive depuis Textbox vers une valeur négative dans Excel
    Bonjour à tous,

    Je travaille sur un outil de pilotage de stock avec entrées et sorties et j'aimerai que la valeur saisie dans le Textbox du Userform soit transformée en valeur négative sous Excel. J'ai utilisé le format "$#,##,0.00" qui fonctionnait jusqu'à hier mais aujourd'hui il renseigne à nouveau des valeurs positive.

    Voici le code utilisé:

    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
    Private Sub comvalide_Click() 'Valider une sortie de matériel
    Dim LignTablo
    Sheets("Data saisies").Unprotect
     
    With Sheets("Data saisies").ListObjects("Data_saisies")
        If .ListRows.Count = 0 Then
            Range("Tableau1[[#Headers],[Nom]]").Offset(1, 0) = 1
            Range("Tableau1[[#Headers],[Nom]]").Offset(1, 0) = ""
        End If
     
        If .ListRows.Count = 1 And .ListRows(1).Range.Cells(1, 1) = "" Then
            Set LignTablo = Sheets("Data saisies").ListObjects("Data_saisies").ListRows(1)
        Else
            Set LignTablo = Range("Data_saisies").ListObject.ListRows.Add(AlwaysInsert:=True)
        End If
    End With
     
    With LignTablo.Range
        .Cells(1, 1) = CDbl(Me.Textcodearticle.Value)
        .Cells(1, 2) = Textdesignation
        .Cells(1, 3) = Textdate
        .Cells(1, 5) = CDbl(Me.Textquantite.Value)
        Textquantite.Value = Format(Textquantite.Value, "$#,##0,00")
    End With
     
    Unload sortie
     
    Sheets("Data saisies").Protect
    sortie.Show
    End Sub
    Est que quelqu'un a une idée.

    Par avance merci!
    Zi

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le titre de ta discussion "Convertir une valeur positive depuis Textbox vers une valeur positive Excel" est en contradiction avec ta demande me semble t'il
    j'aimerai que la valeur saisie dans le Textbox du Userform soit transformée en valeur négative sous Excel
    Un exemple de transformation d'une valeur positive entrée dans le contrôle nommé TextBox1 en valeur négative dans la cellule B2 avec mise en forme séparateur de milliers et 2 décimales
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
     With ThisWorkbook.Worksheets("Feuil1")
      With .Range("B2")
      .Value = -Val(Me.TextBox1)
      .NumberFormat = "#,##0.00"
      End With
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef d'exploitation
    Inscrit en
    Juillet 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 57
    Par défaut
    Effectivement la description faite était un non-sens!

    Merci pour l'information. Il y a t-il possibilité de le faire de manière dynamique sans citer "B2"?

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par zielite Voir le message
    Effectivement la description faite était un non-sens!
    ..
    Bonsoir,

    il faut donc la compléter ....!

    comment transfère-tu les données de tes textbox vers excel ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef d'exploitation
    Inscrit en
    Juillet 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 57
    Par défaut
    Je l'ai même modifié!

    J'utilise une méthode dynamique qui ajoute une ligne à chaque nouvelle entrée validée dans un tableau défini "Data_saisies" sur la feuille "Data saisies"

    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
    Private Sub comvalide_Click() 'Valider une sortie de matériel
    Dim LignTablo
    Sheets("Data saisies").Unprotect
     
    With Sheets("Data saisies").ListObjects("Data_saisies")
        If .ListRows.Count = 0 Then
            Range("Tableau1[[#Headers],[Nom]]").Offset(1, 0) = 1
            Range("Tableau1[[#Headers],[Nom]]").Offset(1, 0) = ""
        End If
     
        If .ListRows.Count = 1 And .ListRows(1).Range.Cells(1, 1) = "" Then
            Set LignTablo = Sheets("Data saisies").ListObjects("Data_saisies").ListRows(1)
        Else
            Set LignTablo = Range("Data_saisies").ListObject.ListRows.Add(AlwaysInsert:=True)
        End If
    End With
     
    With LignTablo.Range
        .Cells(1, 1) = CDbl(Me.Textcodearticle.Value)
        .Cells(1, 2) = Textdesignation
        .Cells(1, 3) = Textdate
        .Cells(1, 5) = CDbl(Me.Textquantite.Value)
        Textquantite.Value = Format(Textquantite.Value, "$#,##0,00")
    End With
     
    Unload sortie
     
    Sheets("Data saisies").Protect
    sortie.Show
    End Sub

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Ben,

    pourquoi n'applique tu pas la méthode à philippe ? suffit de rajoute le signe moins lors de ton affectation ...

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    et comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .Cells(1, 5) = -CDbl(Me.Textquantite.Value)
    Textquantite.Value = Format(Textquantite.Value, "$#,##0,00")
    chez moi, ça fonctionne
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Membre confirmé
    Homme Profil pro
    Chef d'exploitation
    Inscrit en
    Juillet 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 57
    Par défaut
    Merci poour vos deux réponses,

    bbil, si j'utilise le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Cells(1, 5) = -Val(Me.Textquantite)
    une valeur positive arrive sur Excel

    casefayere, idem pour ta solution.

    J'ai essayé de bidouiller la solution de Philippe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        .Cells(1, 5) = Textquantite.Value
    With ThisWorkbook.Worksheets("Data saisies")
      With .Cells(1, 5)
      .Value = -Val(Me.Textquantite)
      .NumberFormat = "#,##0.00"
      End With
     End With
    Mais il faudrait que la ligne
    soit dynamique.

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Qu'entends-tu par "soit dynamique." ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre confirmé
    Homme Profil pro
    Chef d'exploitation
    Inscrit en
    Juillet 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 57
    Par défaut
    En fait chaque entrée dans le userform ajoute une ligne dans le tableau cible.

    Si j'utilise l'option .Cells(1,5) la valeur du Textbox va toujours s'incrémenter dans en "E1" alors que je voudrais qu'elle s'incrémente dans la colonne E pour chaque nouvelle ligne créée.

    La méthode utilisée pour créer une ligne à chaque saisie est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Sheets("Data saisies").ListObjects("Data_saisies")
        If .ListRows.Count = 0 Then
            Range("Tableau1[[#Headers],[Nom]]").Offset(1, 0) = 1
            Range("Tableau1[[#Headers],[Nom]]").Offset(1, 0) = ""
        End If
     
        If .ListRows.Count = 1 And .ListRows(1).Range.Cells(1, 1) = "" Then
            Set LignTablo = Sheets("Data saisies").ListObjects("Data_saisies").ListRows(1)
        Else
            Set LignTablo = Range("Data_saisies").ListObject.ListRows.Add(AlwaysInsert:=True)
        End If
    End With

  11. #11
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour,


    Citation Envoyé par zielite Voir le message
    ....
    bbil, si j'utilise le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Cells(1, 5) = -Val(Me.Textquantite)
    une valeur positive arrive sur Excel
    ...
    oui mais il y as quoi dans ton textbox ? la même valeur que dans ta cellule ??

  12. #12
    Membre confirmé
    Homme Profil pro
    Chef d'exploitation
    Inscrit en
    Juillet 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 57
    Par défaut
    Oui la valeur est la même que celle entrée dans le Textbox

  13. #13
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Ben alors je comprends pas si la valeur dans la cellule devrait afficher la valeur saisie dans ton textbox précédée d'un moins ... , n'as tu pas changé le format d'affichage de ta cellule ? si tu saisie un nombre négatif dans cette cellule tu vois bien le moins ?

  14. #14
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    et si tu donnes le bon format à la cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cells(1, 5) = -CDbl(Me.Textquantite.Value)
    Textquantite.Value = Format(Textquantite.Value, "#,##0,00")
    Cells(1, 5).NumberFormat = "#,##0,00"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  15. #15
    Membre confirmé
    Homme Profil pro
    Chef d'exploitation
    Inscrit en
    Juillet 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 57
    Par défaut
    J'ai essayé en tapant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(1, 5) = -CDbl(Me.Textquantite.Value)
    Sans préciser le format ensuite.

    Cela fonctionne!!

    Merci à tous pour vos conseils.

    A+

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/04/2014, 15h25
  2. Réponses: 0
    Dernier message: 13/07/2011, 20h57
  3. Réponses: 1
    Dernier message: 08/10/2010, 23h09
  4. Pb copier une valeur d'une textbox vers une cellule
    Par whykiki dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2007, 11h49
  5. Alimenter la valeur d'un textbox avec une requete
    Par planetevoyage dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2005, 08h26

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