Incompatibilité de type

Résolu
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -  
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je cherche à faire la somme de textbox et d'afficher cette somme dans un label :

Private Sub TextBox5_Change()

Label17 = CInt(TextBox4.Value) + CInt(TextBox5.Value) + CInt(TextBox6.Value) + CInt(TextBox7.Value) + CInt(TextBox8.Value) + CInt(TextBox10.Value) + CInt(TextBox11.Value) + CInt(TextBox12.Value) + CInt(TextBox13.Value)


End Sub


VBA m'affiche une incompatibilité de type que je ne sais résoudre...

Pouvez vous m'aider ?

Merci beaucoup,

DGVDR



2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Re-Bonjour,

Décidément on ne se quitte plus...

Aurais-tu, par le plus grand des hasards, des nombres décimaux à saisir dans tes textbox???

Si oui, remplace CInt par CDbl...
0
DGVDR
 
En effet, tu m'aides beaucoup :)

Et bien, oui ça peut arriver... Je vais donc remplacer par CDbl

Cependant lors de mes tests c'est au chargement de l'UF que ça pose problème, les textbox sont alors vides...

Après remplacement de CInt par CDbl, l'UF se charge mais lorsque je j'écris dans une textbox, on retrouve mon problème cité plus haut ...

Merci,

DGVDR
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > DGVDR
 
Tu nous as mis plus haut le code de l'événement Change() de ton textbox5.
Pourquoi faire le total à chaque caractère saisi dans ce textbox?
Est ce la même chose dans les événements Change() de tous tes textbox?
Pourquoi ne pas avoir mis un bouton de commande pour calculer ce total?
0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
Je saisi dans ces textbox des %ages, la somme de ces %ages devant atteindre 100%, calculer à chaque incrémentation de textbox me permet de vérifier ou j'en suis vis à vis du %age global.

Oui c'est la même chose dans toutes les textbox.

J'aurais en effet pu mettre un bouton, mais je trouvais ça plus simple avec l'événement ()Change, ceci évitant de recliquer sur un bouton...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
J'ai maintenant compris ce que tu voulais faire.

Regarde ce code :
Private Sub TextBox3_Change()
Label1 = SommeTextBox(3, 6)
End Sub
Private Sub TextBox4_Change()
Label1 = SommeTextBox(3, 6)
End Sub
Private Sub TextBox5_Change()
Label1 = SommeTextBox(3, 6)
End Sub
Private Sub TextBox6_Change()
Label1 = SommeTextBox(3, 6)
End Sub

Function SommeTextBox(IndicDeb As Integer, IndicFin As Integer) As Double
Dim i As Integer

For i = IndicDeb To IndicFin
    If Me.Controls("TextBox" & i) <> "" Then SommeTextBox = SommeTextBox + Val(Me.Controls("TextBox" & i))
Next i
End Function 


Nota : Ce code n'est fonctionnel que si les numéros des taxtbox que tu veux sommer se suivent. Dans mon exemple, du textbox3 au 6. Dans le cas contraire, dis le, il y a également une solution...
0
DGVDR
 
Mes Textbox vont de la 4 à la 13... sans Textbox9 (je ne sais pas pourquoi ni ou elle est...!)

Merci beaucoup pour ton aide !

DGVDR
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > DGVDR
 
Pour une seule, on ne va rien changer de fondamental, mais juste ajouter un test :
Function SommeTextBox(IndicDeb As Integer, IndicFin As Integer) As Double
Dim i As Integer

For i = IndicDeb To IndicFin
    If Me.Controls("TextBox" & i) <> "" And i <> 9 Then SommeTextBox = SommeTextBox + Val(Me.Controls("TextBox" & i))
Next i
End Function
0
DGVDR
 
Pijaku,

Il m'indique un "nom ambigu" pour ta fonction .

As tu une idée?

Merci,

DGVDR
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > DGVDR
 
Euh... Tu ne l'aurais pas copiée-collée deux fois par hasard?
0
DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
 
En effet...

Je passe donc aux essais :

- l'UF se charge
- Lorsque je veux incrémenter ma première textbox j'ai un message d'erreur :

Erreur d'éxecution '-2147024809(80070057)'
Objet spécifié introuvable

Ne devrait on pas définir IndicDeb et IndicFin ?
0