Calcul avec textbox

Laisse moi rire

XLDnaute Occasionnel
Salut

Volia, j'ai ce code, pour lancer la modification d'une donnée :

Private Sub cmdModifier_Click()
Dim CtrlModifier As Control, Mois, TheNum As Byte
TheNum = CByte(Month(Date))
txtSemainesProgrammées.SetFocus
For Each CtrlModifier In Me.Controls
If TypeOf CtrlModifier Is MSForms.TextBox Then CtrlModifier.Value = ''
Next CtrlModifier
lblEssaie = (Worksheets(TheNum).Range('AX33') * txtSemainesProgrammées.Value) / 12

txtSemainesProgrammées.Locked = False
txtSemainesProgrammées.BackColor = &HC0C0FF
PositionModifier
Préposition
End Sub

Le souci viient de là :

lblEssaie = (Worksheets(TheNum).Range('AX33') * txtSemainesProgrammées.Value) / 12

Avec une incompatibilité de type

Qu'est-ce qu'il ne va pas?

Merci, trés beaucoup, G'Claire
 

salim

XLDnaute Occasionnel
Bonsoir

GClaire l'incompatibilité de type vient du fait qu'une des données utilisées n'est pas du bon Type pour affectuer des opération numerique il faudrait peut être mettre ton fichier pour mieux voir. Mais à vu de pif je peux te dire que Month() renvoi un Integer et pas un Byte surtout si ensuite il est divisé et donnes un chiffre à virgule, ensuite le TextBox comme son nom l'indique contient du texte donc pas spécialement conçu pour des opérations, je te propose d'utilisé la fonction Val(String) pour le mettre en numérique. voilà y'a certainement autre chôses mais bon comme ça je serai pas te dire. j'espère que ça pourra déjà te donner un coup de pouce :)

salim
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir GClaire, Abel, salim, le forum,

Une petite question : C'est quoi ce lblEssaie ?

Si c'est objet Label, tu devrais essayer :

lblEssaie.Caption = (Worksheets(TheNum).Range('AX33') * txtSemainesProgrammées.Value) / 12

si tu veux modifier le 'label'...

Amicalement
Charly
 

Laisse moi rire

XLDnaute Occasionnel
Salut a toutes et tous

Merci pour vos infos.

Ce Label me sert a afficher le résulat du calcul :

Donc pour faire le calcul, j'ai mis ce code .

En tête de module

Dim Mensualisation

et dans le bouton valider

Private Sub cmdValider_Click()
Dim Mois, TheNum As Byte, Mensualisation
TheNum = CByte(Month(Date))
Mensualisation = (Worksheets(TheNum).Range('AX33') * CDbl(txtSemainesProgrammees)) / 12

If txtSemainesProgrammees = '' Then
MsgBox 'Veuillez entrer le nombre de semaines programmées !!!', vbCritical, 'Erreur à la validation'
txtSemainesProgrammees.SetFocus
Exit Sub
End If
Call Msg4
For Mois = TheNum To 12
With Worksheets(Mois)
.Range('AH17') = Mensualisation
End With
Next Mois
Call Msg2
Unload Me
End Sub

Pour l'envoie dans la feuille, c'est Ok.

Mais ce que je voulais faire c'est faire apparaitre dans ce label, cette valeur quand je modifié la valeur du TextBox.

Donc dans le change du TextBox j'ai mis :

lblValeursMensualisation.Caption = 'La valeur de la mensualisation sera de ' & Mensualisation


Et cela me met un résulat qui n'a rien a voir.

Si valeur dans TextBox = 52

J'ai 174,771666666666661

Alors que je devrais avoit 95,333333

Voila et encore merci, G'Claire
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour G'Claire, Abel, salim, le forum,

Surprenant ! Pourrais-tu nous envoyer ton fichier, après avoir supprimé les données confidentielles, afin que nous puissions t'aider ?

Il y a forcément une explication, donc une solution ;)

Amicalement
Charly
 

Statistiques des forums

Discussions
312 493
Messages
2 088 945
Membres
103 989
dernier inscrit
jralonso