Textbox, comment en recuperer sa valeur numerique

Bonjour a tous,

premièrement, je trouve que ces forums sont vraiment la preuve d'une solidarité et heureusement qu'ils sont la.

Ensuite, je suis vraiment novice en la matière mais bon...

Ma difficulté: J'ai réalisé (suite à un tuto vidéo) un formulaire excel composé comme suit:

  • un textbox pour la date
  • un textbox avec un menu déroulant
  • un textbox pour rentrer une valeur numérique (textbox6)
  • un textbox pour une autre valeur numérique. (textbox7)

ce que je n'arrive pas a faire c'est que la valeur qui arrive dans ma feuil soit belle et bien une valeur numérique pour pouvoir par la suite additionner 2 cellules. Ce qui ne fonctionne pas sauf si manuellement je clique sur "convertir en nombre"

Je reconnais que j'ai un peu fais un copier coller du tuto, je n'ai aucune maîtrise en ce qui concerne les codes . Des lors quand je trouve des propositions (un code) et bien je ne sais pas ou le mettre.

Ci dessous l'ensemble de mon code qui compose mon userform:

Private Sub CommandButton1_Click()

Dim ctrl As Control

Dim r As Integer

Dim t As Integer

Dim derligne As Integer

With Worksheets("feuil1")

derligne = .Range("A65536").End(xlUp).Row + 1

For Each ctrl In UserForm1.Controls

r = Val(ctrl.Tag)

If r > 0 Then Feuil1.Cells(derligne, r) = ctrl

Next

End With

TextBox1 = ""

End

End Sub

Private Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0

If IsNumeric(Me.TextBox6) Then t = CDbl(Me.TextBox6)

End Sub

Private Sub TextBox7_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0

End Sub

je suppose que ca ne doit pas être très compliquer mais mes connaissances ne sont pas suffisantes.

Un grand merci à celui ou celle qui pourra m'aider.

Chris

ps: plus simple si je mets mon fichier en piece jointe je pense

428formulaire-compte.xlsm (189.24 Ko)

Bonjour,

If r > 0 Then Feuil1.Cells(derligne, r) = cdbl(ctrl)

eric

Salut Eric,

merci pour votre réponse. j'imagine que ça fonctionne quand on sait ou mettre ce code, mais dans mon cas....

J'ai essayé de le mettre ou ça me semblait logique mais rien... je dois toujours modifier ma cellule pour qu'elle devienne un nombre et donc pas d'addition automatique.

A la place de

If r > 0 Then Feuil1.Cells(derligne, r) = ctrl

mettre

If r > 0 Then Feuil1.Cells(derligne, r) = cdbl(ctrl) si c'est un nombre.

Mais comme tu as fait une usine à gaz pour boucler sur les contrôles et utiliser la même ligne de code il faudrait tester si c'est un texte (laisser tel que), si c'est une date (cdate()) si c'est un nombre (cdbl())

Enfin bref, enlève ton usine à gaz avec les .tag et vu que tu n'as que 4 contrôles avec des types tous différents traites les individuellement.

J'espère que c'est pour apprendre VBA que tu fais ça parce que là c'est plus intéressant de saisir directement sur la feuille.

eric

Merci eric,

Ca ne fonctionne malheureusement pas.

Mais en effet c'est pour m'exercer au VBA. Je pense que je vais repartir d'une base plus simple comme vous me le proposez.

Néanmoins, si dans une volonté de me soutenir vous pouvez me proposer le 4 codes nécessaires, je gagnerai du temps.

Si je n'ai pas de piste et bien je vais consulter la rubrique "cours VBA" et faire au mieux.

Encore un grand merci pour votre soutien.

Chris08

Bonsoir,

Un exemple...

Je t'ai mis un contrôle DateTimePicker que tu vois que ça existe. Je ne m'en suis pas servi car les contrôles calendriers disponibles différent selon les excel.

eric

638classeur3.xlsm (191.56 Ko)

Salut,

encore un GRAND GRAND MERCI Eric, j'avance grace a toi.

Je voulais m'excuser d'avoir ete un peu absent du forum mais j'ai eu d'autres choses sur le feu.

Je reviens a mon probleme. ca marche super mais quand je rentre par exemple un montant de 340,45€, il arrondi a 340€

et si le montant est de 340,56€ alors j'obtiens 341€.

Peux tu encore m'aider?

voici le code:

Private Sub CommandButton1_Click()

Dim lig As Long

If IsDate(TbxDate) And (IsNumeric(TbxDébit) Or IsNumeric(TbxCrédit)) Then

lig = Range("A65536").End(xlUp).Row + 1

Cells(lig, "A") = CDate(TbxDate)

Cells(lig, "B") = CbxCateg

If IsNumeric(TbxDébit) Then

Cells(lig, "C") = CLng(TbxDébit)

Cells(lig, "C").NumberFormat = "_-* #,##0.00 [$€-40C]_-;-* #,##0.00 [$€-40C]_-;_-* ""-""?? [$€-40C]_-;_-@_-"

Else

Cells(lig, "D") = CLng(TbxCrédit)

Cells(lig, "D").NumberFormat = "_-* #,##0.00 [$€-40C]_-;-* #,##0.00 [$€-40C]_-;_-* ""-""?? [$€-40C]_-;_-@_-"

End If

TbxDébit = ""

TbxCrédit = ""

Else

MsgBox "Saisie incomplète"

End If

End Sub

Private Sub TextBox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0

If IsNumeric(Me.TextBox6) Then t = CDbl(Me.TextBox6)

End Sub

Private Sub TextBox7_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0

End Sub

Private Sub UserForm_Click()

End Sub

ENCORE UN GRAND MERCI.

Chris

Bonjour,

clng() convertit en entier long, utilise cdbl() qui converti en décimal double.

eric

Re Eric,

voila SUPER ca fonctionne a merveille.

Un GRAND GRAND GRAND MERCI A TOI.

Chris

Rechercher des sujets similaires à "textbox comment recuperer valeur numerique"