Erreur 1004 : VBA excel
Résolu
dohko1110
Messages postés
16
Statut
Membre
-
dohko1110 Messages postés 16 Statut Membre -
dohko1110 Messages postés 16 Statut Membre -
Bonjour,
J'ai réalisé un programme mais à chaque fois que j'envoi une valeur dans une textbox ("W.text= Y), j'obtiens une erreur 1004 : Erreur définie par l'application ou par l'objet.
voici mon programme repertorier par des boutons, je l'ai mis dans l'ordre chronologique :
Private Sub Demarrer_Click()
i = 2
Lots.Text = Worksheets("Recap").Range("A" & i)
Risque.Text = Worksheets("Recap").Range("B" & i)
End Sub
Private Sub LierAmen_Click()
Lier2.Visible = False
End Sub
Private Sub LierContrat_Click()
Lier2.Visible = True
End Sub
Private Sub ValidNiveaux_Click()
'Adapte la valeur de l'esperance du risque en fonction du niveau et risque selectionné'
If Niveaux = "Niveau faible" Then
y = 3
Else
If Niveaux = "Niveau moyen" Then
y = 4
Else
y = 5
End If
End If
'Ecriture de la valeur d'espérance'
Esp.Text = Worksheets("Risques").Cells(i, y)
End Sub
Private Sub Valid_Click()
'Changement de risque'
i = i + 1
Lots.Text = Worksheets("Recap").Range("A" & i)
Risque.Text = Worksheets("Recap").Range("B" & i)
'Modifie la valeur du bouton "lié par contrat" depuis une valeur à une expression'
If Range("E2") = True Then
Range("E2") = "Amenageur"
Else
Range("E2") = "Collectivité (contrat)"
End If
If EspLier.Text = " " Then
Esp.Text = Esp.Text
Else
Esp.Text = EspLier.Text
End If
End Sub
Private Sub Précédent_Click()
i = i - 1
If i < 2 Then
i = 2
Else
i = i
End If
End Sub
Private Sub Suivant_Click()
i = i - 1
If i > 14 Then
i = 14
Else
i = i
End If
End Sub
La deuxième erreur que j'ai c'est que mes valeurs de texte dqui dépendent de i dans les boutons "suivant","précendent" ou "valid" ne sont pas réinitialiser.
merci de votre aide
J'ai réalisé un programme mais à chaque fois que j'envoi une valeur dans une textbox ("W.text= Y), j'obtiens une erreur 1004 : Erreur définie par l'application ou par l'objet.
voici mon programme repertorier par des boutons, je l'ai mis dans l'ordre chronologique :
Private Sub Demarrer_Click()
i = 2
Lots.Text = Worksheets("Recap").Range("A" & i)
Risque.Text = Worksheets("Recap").Range("B" & i)
End Sub
Private Sub LierAmen_Click()
Lier2.Visible = False
End Sub
Private Sub LierContrat_Click()
Lier2.Visible = True
End Sub
Private Sub ValidNiveaux_Click()
'Adapte la valeur de l'esperance du risque en fonction du niveau et risque selectionné'
If Niveaux = "Niveau faible" Then
y = 3
Else
If Niveaux = "Niveau moyen" Then
y = 4
Else
y = 5
End If
End If
'Ecriture de la valeur d'espérance'
Esp.Text = Worksheets("Risques").Cells(i, y)
End Sub
Private Sub Valid_Click()
'Changement de risque'
i = i + 1
Lots.Text = Worksheets("Recap").Range("A" & i)
Risque.Text = Worksheets("Recap").Range("B" & i)
'Modifie la valeur du bouton "lié par contrat" depuis une valeur à une expression'
If Range("E2") = True Then
Range("E2") = "Amenageur"
Else
Range("E2") = "Collectivité (contrat)"
End If
If EspLier.Text = " " Then
Esp.Text = Esp.Text
Else
Esp.Text = EspLier.Text
End If
End Sub
Private Sub Précédent_Click()
i = i - 1
If i < 2 Then
i = 2
Else
i = i
End If
End Sub
Private Sub Suivant_Click()
i = i - 1
If i > 14 Then
i = 14
Else
i = i
End If
End Sub
La deuxième erreur que j'ai c'est que mes valeurs de texte dqui dépendent de i dans les boutons "suivant","précendent" ou "valid" ne sont pas réinitialiser.
merci de votre aide
A voir également:
- Erreur 1004 vba
- Erreur 0x80070643 - Accueil - Windows
- Iptv erreur de lecture - Forum TV & Vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
5 réponses
Bonjour,
Dans : Private Sub ValidNiveaux_Click()
Tu as : Esp.Text = Worksheets("Risques").Cells(i, y) , mais i n'est pas initialisé, sa valeur est donc 0. La ligne ou colonne 0 n'existe pas dans Excel.
;o)
Dans : Private Sub ValidNiveaux_Click()
Tu as : Esp.Text = Worksheets("Risques").Cells(i, y) , mais i n'est pas initialisé, sa valeur est donc 0. La ligne ou colonne 0 n'existe pas dans Excel.
;o)
Mais si je l'initialise dans Demarrer.click.
Sauf si il ne le considère pas durant tout le programme.
Si c'est le cas, comment le faire apparaitra dans chaque action en gardant sa valeur?
merci
Sauf si il ne le considère pas durant tout le programme.
Si c'est le cas, comment le faire apparaitra dans chaque action en gardant sa valeur?
merci
Re,
Pour compléter ce que dit Albert, une variable à l'intérieur d'une procédure ou d'une fonction ne vit que pour la durée de cette procédure ou fonction. C'est à dire qu'elle n'est plus initialisée en sortant de la procédure ou de la fonction.
Une variable déclarée en entête de module (variable globale) peut être utilsée par toutes les procédures et les fonctions du module et uniquement du module si elle est déclarée en privé (private). Pour qu'une variable puisse être vue et utilisée par des fonctions ou procédures d'autres modules, elle doit être déclarée en public.
Exemple:
En sortant de la procédure procVar n'est plus initialisé.
priVar garde "Toto" comme valeur et peut être utilisé uniquement dans ce module.
pubVar garde "Titi" comme valeur et peut être utilisé dans tous les autres modules du programme.
Bon courage
;o)
Pour compléter ce que dit Albert, une variable à l'intérieur d'une procédure ou d'une fonction ne vit que pour la durée de cette procédure ou fonction. C'est à dire qu'elle n'est plus initialisée en sortant de la procédure ou de la fonction.
Une variable déclarée en entête de module (variable globale) peut être utilsée par toutes les procédures et les fonctions du module et uniquement du module si elle est déclarée en privé (private). Pour qu'une variable puisse être vue et utilisée par des fonctions ou procédures d'autres modules, elle doit être déclarée en public.
Exemple:
Option Explicit Private priVar As String ' Variable uniquement visible par ce module Public pubVar As String ' Varaible visible par tous les modules du programme Sub maProc() Dim procVar As Integer ' Variable spécifique de la procédure maProc, sa valeur est égale à 0. 'initialisation des variables procVar = 1 priVar = "Toto" pubVar = "Titi" ... End Sub
En sortant de la procédure procVar n'est plus initialisé.
priVar garde "Toto" comme valeur et peut être utilisé uniquement dans ce module.
pubVar garde "Titi" comme valeur et peut être utilisé dans tous les autres modules du programme.
Bon courage
;o)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question