Incompatibilité d'objet VBA
ThibautTib
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous
Je me permets de me présenter comme je suis nouveau sur ce forum. Je m'appelle Thibaut et suis étudiant en Finance à l'Edhec. Je me suis mis il n'y a pas longtemps à la programmation sous VBA.
J'ai créer un programme qui consiste à insérer le prix et la quantité d'une action côtée dans ma feuille excel depuis un userform.
Néanmoins, lorsque je lance ma macro il y a toujours un message d'erreur du type "incompatibilité de type", erreur 13.
Celle-ci se produit lorsque je donne un nom à une textbox.
De plus, lorsque je veux mettre cette valeur dans une cellule, il ya une autre erreur du type "Erreur définie par l'application ou par l'objet.
Je ne sais pas comment éradiquer ces erreurs, pourriez-vous m'aider?
Voici le code (je n'aimerais pas complètement le modifier pour résoudre mes problèmes):
/VBA
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 = .TextBox1.Value -------> erreur 113
price = .TextBox2.Value
title = .ComboBox1.Value
End With
Dim line As Integer
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 ----------> erreur 1004
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
/VBA
Je me permets de me présenter comme je suis nouveau sur ce forum. Je m'appelle Thibaut et suis étudiant en Finance à l'Edhec. Je me suis mis il n'y a pas longtemps à la programmation sous VBA.
J'ai créer un programme qui consiste à insérer le prix et la quantité d'une action côtée dans ma feuille excel depuis un userform.
Néanmoins, lorsque je lance ma macro il y a toujours un message d'erreur du type "incompatibilité de type", erreur 13.
Celle-ci se produit lorsque je donne un nom à une textbox.
De plus, lorsque je veux mettre cette valeur dans une cellule, il ya une autre erreur du type "Erreur définie par l'application ou par l'objet.
Je ne sais pas comment éradiquer ces erreurs, pourriez-vous m'aider?
Voici le code (je n'aimerais pas complètement le modifier pour résoudre mes problèmes):
/VBA
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 = .TextBox1.Value -------> erreur 113
price = .TextBox2.Value
title = .ComboBox1.Value
End With
Dim line As Integer
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 ----------> erreur 1004
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
/VBA
A voir également:
- Incompatibilité d'objet VBA
- Vente objet occasion entre particulier - Guide
- Objet interdit en cabine ryanair - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Identifier un objet à partir d'une photo - Guide
5 réponses
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.
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
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
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