Incompatibilité d'objet VBA
Fermé
ThibautTib
Messages postés
3
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
13 juin 2014
-
13 juin 2014 à 10:48
f894009 Messages postés 17231 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 28 janvier 2025 - 13 juin 2014 à 14:53
f894009 Messages postés 17231 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 28 janvier 2025 - 13 juin 2014 à 14:53
A voir également:
- Incompatibilité d'objet VBA
- Vente objet occasion entre particulier - Guide
- Dans la messagerie ci-dessous, envoyez un nouveau message à manon (manon@pixmail.org) en mettant en copie nina (nina@pixmail.org) : objet : colis bonjour, votre colis est arrivé. que répond manon ? ✓ - Forum Loisirs / Divertissements
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
- Identifier un objet à partir d'une photo - Guide
5 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
13 juin 2014 à 13:39
13 juin 2014 à 13:39
Bonjour,
Tu as défini des variables avec un type (ex
Attention de bien taper un point et non une virgule pour la décimale.
Pour l'erreur erreur 1004, la variable line n'est pas initialisée dans la procédure. La ligne 0 n'existe pas et provoque une erreur.
Voir ici pour la portée des variables dans un code.
Tu as défini des variables avec un type (ex
Dim quantity As Double). Les saisies dans un TextBox sont considérées comme des chaîne de caractères. Il faut donc convertir ce qui est saisie dans le TextBox dans le type de la variable qui reçoit son contenu.
quantity = CDbl(.TextBox1.Value)
Attention de bien taper un point et non une virgule pour la décimale.
Pour l'erreur erreur 1004, la variable line n'est pas initialisée dans la procédure. La ligne 0 n'existe pas et provoque une erreur.
Voir ici pour la portée des variables dans un code.
ThibautTib
Messages postés
3
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
13 juin 2014
13 juin 2014 à 14:08
13 juin 2014 à 14:08
Merci Polux31 pour ta réponse
Je comprends bien le fait qu'il faille passer du texte à des nombres dans la textbox et je comprends aussi la fonction cdbl mais impossible, même après avoir ajouté cette fonction j'ai toujours la même erreur.
De plus, j'ai bien ajouté line=0 mais j'ai également l'autre erreur. Mais je me demande si le problème ne vient pas aussi du fait que la ligne line=1 n'existe pas également
Je fais pas mal de recherches sur internet mais je n'arrive pas à en trouver qui sont liés à ce problème de textbox.
Je mets le code modifié au cas où:
Dim securities(5) As String
Dim quantity As Double
Dim price As Double
Dim title As String
Sub actions()
For i = 1 To 5
securities(i) = Cells(1 + i, 1)
Next i
End Sub
Sub fill_form()
With UserForm1
.ComboBox1.Clear
For i = 1 To 5
.ComboBox1.AddItem securities(i)
Next i
End With
End Sub
Sub compter()
With UserForm1
quantity = CDbl(.TextBox1.Value)
price = CDbl(.TextBox2.Value)
title = .ComboBox1.Value
End With
Dim line As Integer
line = 0
For i = 1 To 5
If securities(i) = title Then
line = i + 1
End If
Next i
End Sub
Sub remettre()
Cells(line, 2) = quantity
Cells(line, 3) = price
End Sub
Sub display()
actions
fill_form
UserForm1.Show
If UserForm1.Tag = "UserForm1_Cancel" Then
Exit Sub
End If
compter
remettre
End Sub
Je comprends bien le fait qu'il faille passer du texte à des nombres dans la textbox et je comprends aussi la fonction cdbl mais impossible, même après avoir ajouté cette fonction j'ai toujours la même erreur.
De plus, j'ai bien ajouté line=0 mais j'ai également l'autre erreur. Mais je me demande si le problème ne vient pas aussi du fait que la ligne line=1 n'existe pas également
Je fais pas mal de recherches sur internet mais je n'arrive pas à en trouver qui sont liés à ce problème de textbox.
Je mets le code modifié au cas où:
Dim securities(5) As String
Dim quantity As Double
Dim price As Double
Dim title As String
Sub actions()
For i = 1 To 5
securities(i) = Cells(1 + i, 1)
Next i
End Sub
Sub fill_form()
With UserForm1
.ComboBox1.Clear
For i = 1 To 5
.ComboBox1.AddItem securities(i)
Next i
End With
End Sub
Sub compter()
With UserForm1
quantity = CDbl(.TextBox1.Value)
price = CDbl(.TextBox2.Value)
title = .ComboBox1.Value
End With
Dim line As Integer
line = 0
For i = 1 To 5
If securities(i) = title Then
line = i + 1
End If
Next i
End Sub
Sub remettre()
Cells(line, 2) = quantity
Cells(line, 3) = price
End Sub
Sub display()
actions
fill_form
UserForm1.Show
If UserForm1.Tag = "UserForm1_Cancel" Then
Exit Sub
End If
compter
remettre
End Sub
f894009
Messages postés
17231
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2025
1 712
Modifié par f894009 le 13/06/2014 à 14:44
Modifié par f894009 le 13/06/2014 à 14:44
Bonjour,
une fois l'UF fermee, la valeur des objets n'est plus accessible elles sont egal a "": chaine vide
une fois l'UF fermee, la valeur des objets n'est plus accessible elles sont egal a "": chaine vide
ThibautTib
Messages postés
3
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
13 juin 2014
13 juin 2014 à 14:49
13 juin 2014 à 14:49
Je ne comprends pas car mon programme marche si:
- Dim line as integer est défini tout en haut avec toutes les variables et non dans une de mes procédures
(Est-ce que cela veut dire que lors de mes premiers essais, la variable ligne n'était reconnue que dans la procédure "compter"?)
De plus, malgré tes conseils et après avoir ajouté la fonction cdbl, j'ai toujours un message d'erreur d'incompatibilité, même si mon programme marche quand même.
D'ailleurs j'ai encore le message '1004' d'erreur aussi mais lorsque je clique sur fin et que je lance mon programme, il marche.
Quelqu'un peut il m'aider à comprendre pourquoi ces erreurs sont toujours là?
- Dim line as integer est défini tout en haut avec toutes les variables et non dans une de mes procédures
(Est-ce que cela veut dire que lors de mes premiers essais, la variable ligne n'était reconnue que dans la procédure "compter"?)
De plus, malgré tes conseils et après avoir ajouté la fonction cdbl, j'ai toujours un message d'erreur d'incompatibilité, même si mon programme marche quand même.
D'ailleurs j'ai encore le message '1004' d'erreur aussi mais lorsque je clique sur fin et que je lance mon programme, il marche.
Quelqu'un peut il m'aider à comprendre pourquoi ces erreurs sont toujours là?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
f894009
Messages postés
17231
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2025
1 712
13 juin 2014 à 14:53
13 juin 2014 à 14:53
Re,
lancez votre programme, des qu'il y a une erreur, clic sur debugage, si le programme s'arret sur
passez le curseur de la souris sur TextBox1 et vous aurez le contenu de la textbox, le cas present ce sera ""
lancez votre programme, des qu'il y a une erreur, clic sur debugage, si le programme s'arret sur
quantity = CDbl(.TextBox1.Value)
passez le curseur de la souris sur TextBox1 et vous aurez le contenu de la textbox, le cas present ce sera ""