Convertir une donnée textbox

bonjour,

j'ai une une textbox dans laquelle je rentre des prix.

Ces prix sont ensuite transférés dans un tableau avec d'autres données.

Par la suite je dois faire des sommes en fonction des intitulés en utilisant la fonction "somme.si.ens" Le problème que je rencontre c'est que les cellules dans les lesquelles sont transférées les données de ma textbox ne sont pas pris en format monétaire et ma formule ne fonctionne pas .

comment faut il faire pour convertir les données de la textbox en valeur monetaire ?

Je vous remercie par avance

Bonjour,

Un essai

range("A1") = Cdbl(Textbox1)

ric

Bonjour,

Petit complément d'information, dans la classe conversion, on dispose aussi de cette fonction : CCur qui permet de convertir en format monétaire.

Différence entre Cdbl et Ccur :

Cdbl: Type de données stockant sur 64 bits les nombres à virgule flottante en double précision compris entre -1,79769313486231E308 et -4,94065645841247E-324 pour les valeurs négatives, et entre 4,94065645841247E-324 et 1,79769313486232E308 pour les valeurs positives. Dans Visual Basic, le signe dièse (#) est le caractère de déclaration du type Double.

Ccur: Type de données dont la plage de valeurs s'étend de -922 337 203 685 477,5808 à 922 337 203 685 477,5807. Ce type de données est utilisé dans les calculs monétaires ou dans les calculs à virgule fixe pour lesquels une grande précision est requise. Dans Visual Basic, le signe @ est le caractère de déclaration du type Currency.

Bonjour

et moi je préfère comme ca

A+

Maurice

    Range("A1").Value = Val(Replace(TextBox1.Value, ",", "."))

Bonjour à tous,

Merci Ausecour ... je ne connaissais pas Ccur.

ric

Bonjour ric,

De rien

Tu peux retrouver toutes les fonctions de conversion en tapant conversion dans l'explorateur d'objet de visual basic si ça t'intéresse

Salut archer

On peut même aller encore plus loin pour les ordinateurs anglophones!

If DecimalSeparator = "," then
    ARemplacer = "."
elseif DecimalSeparator = "." then
    Aremplacer = ","
end if

Range("A1").Value = Val(Replace(TextBox1.Value, ARemplacer, DecimalSeparator))

je vous envoie mon fichier, car je ne comprends pas tout Merci encore pour votre aide

19essai3.xlsm (105.19 Ko)

Bonjour,

Là c'est moi qui ne comprends pas et qui prends peur... 26 Modules dont des vides, même pas renomés, 7 formulaires pas renomés non plus...

Guide nous dans ton superbe labyrinthe s'il te plait

Bonjour, Salut à tous !

Ce qu'il faut savoir pour répondre à coup sûr, c'est ce qui apparaît dans la TextBox.

Si le symbole monétaire est placé après, la conversion préconisée par Archer est la plus simple, donc à priori la meilleure !

S'il est placé avant, Val sera inopérant... Il faudra d'abord éliminer le symbole.

La conversion en format Currency ne présente un intérêt que si des calculs sont à effectuer en VBA.

Le format monétaire dans la feuille sera lui toujours fourni par le format de cellule, mais la valeur affectée doit être numérique.

Cordialement.

Bonjour, Salut à tous !

Ce qu'il faut savoir pour répondre à coup sûr, c'est ce qui apparaît dans la TextBox.

Si le symbole monétaire est placé après, la conversion préconisée par Archer est la plus simple, donc à priori la meilleure !

S'il est placé avant, Val sera inopérant... Il faudra d'abord éliminer le symbole.

La conversion en format Currency ne présente un intérêt que si des calculs sont à effectuer en VBA.

Le format monétaire dans la feuille sera lui toujours fourni par le format de cellule, mais la valeur affectée doit être numérique.

Cordialement.

Amen

BonjourMFerrand et merci pour le complément d'informations

Salut Ausecour !

Je partage ton sentiment au vu du fichier !

Une épuration à faire : comment s'y retrouver avec 26 modules Standard ? Il y a sans doute justification pour 2, je n'en vois pas plus.

Et des Userforms distincts pour ajouter, rechercher, modifier, supprimer, alors que ces actions peuvent généralement être réalisées à partir d'un même userform !

En effet... Moi j'aime bien avoir plusieurs modules mais là il y en a un peu trop...

Quand aux formulaires... Le 1,2,4,5 sont similaires...

1: ajout article

2: recherche info article

4: supprimer un article, d'ailleurs grosse erreur, on ne met pas un bouton option pour valider si on supprime, on fait un message qui s'affiche de type msgbox vbyesno qui demande si on veut vraiment supprimer, tu imagines si après tu oublies de remettre non et que tu supprimes un article... ou encore que tu dois à chaque fois appuyer sur ton bouton pour valider la suppression, non non non, pas besoin de contrôle pour ça...

5: modifier le prix d'un article

Ces 4 formulaires on peut les rassembler en un seul... recherche info article et modification c'est pareil, faut bien afficher les informations pour les modifier, supprimer un article, faut bien avoir une liste avec les articles comme celle de la modification, au lieu de modifier les infos qui te sont affichées tu les supprimes, l'ajout, la seule différence c'est que tu ne vas pas chercher tes informations dans la liste, tu la crées, pas besoin d'un nouveau formulaire pour ça

voila j'ai fait un peu de nettoyage comme vous avez pu vous en apercevoir je suis plus que novice en la matière c'est pour cette raison que je fais appel a vos services

comment peut remplir mon tableau synthèse ?

merci encore

14essai3.xlsm (67.58 Ko)

Bonjour,

Remplace ton code pour le bouton valider par ça :

Private Sub CommandButton1_Click()
Dim ctrl As Control
Dim colonne As Integer
Dim derligne As Double

'derligne devient la ligne qui suit la derniere valeur du tableau
derligne = Sheets("remise_en_banque").Range("A" & Rows.Count).End(xlUp).Row + 1

'balaye les control un par un avnt le for .... next
For Each ctrl In UserForm7.Controls
    ' la valeur de "colonne" est egale a la valeur du tag de controle
    colonne = Val(ctrl.Tag)

    'si la valeur du tag>0 l'intersection N) de derligne et N° de colonne
    ' est une cellule qui contiendra la valeur "ctrl" cad celle contenu dans le controle
    If colonne = 6 Then
        Sheets("remise_en_banque").Cells(derligne, colonne) = CDbl(ctrl)
    ElseIf colonne > 0 Then
        Sheets("remise_en_banque").Cells(derligne, colonne) = ctrl
    End If
    ' next ---> on passe au controle suivant
Next ctrl
End Sub

Attention tu avais commis l'erreur de déclarer ta variable de dernière ligne comme integer, ça aurait planté si tu avais dépassé la valeur 32 767

Mieux vaut déclarer ça comme un double qui peut aller jusqu'à 1,79769313486232E308 , 10^308, tu ne risques pas de la dépasser celle là...

Petit truc sympa que tu pourrais faire aussi comme tu ne fermes pas ton formulaire après saisie :

  • Informer que l'ajout a bien été fait en fin de programme
  • Vider les contrôles pour la prochaine saisie

Autre chose:

Désactive la textbox qui contient la date de saisie et préremplie la avec la fonction datetime.date

merci pour votre aide ,mais ça n'alimente pas la feuille "synthèse "

C'est étrange, car moi ça me mettait 100 après avoir fait le test dans la fameuse feuille Synthèse...

J'avais testé pour la buvette, toi aussi?

tout fonctionne encore merci pour ton aide

décidément je ne comprends pas grand chose je vous demande encore une fois de me venir en aide . je voudrais que les textbox qui sont coloriees dans mon userform soient dans un format monetaires ainsi que dans la feuille BDD_licencies

il ne fait pas bon vieillir je vous remercie encore par avance de votre aide

8essai.xlsm (117.84 Ko)

Bonjour,

Voici ton fichier en retour.

Dans ton formulaire > bouton Valider > j'ai ajouté des exceptions que j'ai traitées différemment.

N'oublie pas de t'assurer des bons formats des cellules de toutes les colonnes selon le type d'info saisi dans chacune > pour les 3 concernées en format monétaire, j'ai mis le format jusqu'à la ligne 100.

Mais au lieu d'alourdir ton fichier > il faudrait penser à l'éventualité ... lors de l'ajout d'une ligne > de copier les formats de la ligne précédente. Si j'ai le temps aujourd'hui, je vais te tricoter cela > à moins que tu sois en mesure de le faire toi même.

ric

. c'est tres sympa de ta part .je suis un pur débutant si tu veux bien faire cela je suis preneur

encore merci

Rechercher des sujets similaires à "convertir donnee textbox"