OVH Cloud OVH Cloud

debutante excel : erreur 424

9 réponses
Avatar
laurencemarseille
Bonjour,
je croyais avoir laissé un message sur le forum mais apparemment non car il n'est pas affiché.
Je réitère donc mon problème en espérant que je ne fasse pas de doublon.
Je débute "petit" avec excel 2010 en créant un carnet d'adresse. J'ai suivi un tutoriel pour excel 2007... je sais, c'est pas bien mais je n'en ai pas trouvé d'autres....
Donc, après avoir passé toutes les étapes avec brio, un message d'erreur apparait : 424 et la j'avoue être larguée!
Je ne parle pas du tout le langage informatique. J'ai tenté de trouver la solution par moi même mais y a rien à faire, ça n'imprime pas dans ma tête... Ca reste encore du chinois.
Je pensais qu'en vous montrant ce que j'ai écris certains pourraient m'aider à rectifier le tir...
Merci par avance...

PS je precise que lorsque j'efface la ligne surlignée jaune que me montre le "débogage" c'est une autre ligne qui se fait surligner etc etc...
J'ai peur...

Private Sub cmdAjouter_Click()
Dim numLigneVide As Integer
'on active la feuille "LISTE"
'worskheets : "LISTE" .Activate
'on trouve la dernière ligne vide du tableau et on enregistre le numéro de la ligne dans la variable numLigneVide
numLigneVide = ActiveSheet.Columns(1).Find("").Row
'on vérifie que les champs obligatoires sont correctements remplis numLigneVide = ActiveSheet.colums(1).Find("").Row
'on vérifie que les champs obligatoires sont correctement remplis
If txtNom.Text = "" Then
MsgBox "Veuillez remplir le nom", vbCritical, "champ manquant"
txtNom.SetFocus
ElseIf txtPrenom.Text = "" Then
MsgBox "Veuillez remplir le prénom", vbCritical, "champ manquant"
txtPrenom.SetFocus
ElseIf txtPortable.Text = "" Then
MsgBox "Merci de renseigner le numéro de téléphone", vbCritical, "champs manquant"
txtPortable.SetFocus
ElseIf txtMail1.Text = "" Then
MsgBox "Merci d'indiquer une adresse mail", vbCritical, "champs manquant"
txtMail1.SetFocus
ElseIf txtAnniversaire.Text = "" Then
MsgBox "Merci de noter la date de votre anniversaire", vbCritical, "champ manquant"
txtAnniversaire.SetFocus
Else
'on remplit les données dans notre tableau

ActiveSheet.Cells(numLigneVide, 1) = UCase(txtNom.Text)

ActiveSheet.Cells(numLigneVide, 2) = txtPrenom.Text
ActiveSheet.Cells(numLigneVide, 3) = txtAdresse.Text
ActiveSheet.Cells(numLigneVide, 4) = txtCP.Text
ActiveSheet.Cells(numLigneVide, 5) = txtVille.Text
ActiveSheet.Cells(numLigneVide, 6) = txtFixe.Text
ActiveSheet.Cells(numLigneVide, 7) = txtPortable.Text
ActiveSheet.Cells(numLigneVide, 8) = txtMail1.Text
ActiveSheet.Cells(numLigneVide, 9) = txtMail2.Text
ActiveSheet.Cells(numLigneVide, 10) = txtAnniversaire.Text
'on efface le formulaire et on replace le curseur sur le premier champs (Nom)
txtNom.Text = ""
txtPrenom.Text = ""
txtAdresse.Text = ""
txtCP.Text = ""
txtVille.Text = ""
txtFixe.Text = ""
txtPortable.Text = ""
txtMail1.Text = ""
txtMail2.Text = ""
txtAnniversaire.Text = ""
txtNom.SetFocus
End If

End Sub


Private Sub cmdFermer_Click()
frmNouveau.Hide
End Sub

Private Sub txtNom_Click()

End Sub

9 réponses

Avatar
isabelle
bonjour Laurence,

essaie en mettant les lignes ou il y a .SetFocus en commentaire

--
isabelle


Le 2012-09-30 14:36, laurencemarseille a écrit :
Bonjour,
je croyais avoir laissé un message sur le forum mais apparemment non car il
n'est pas affiché.
Je réitère donc mon problème en espérant que je ne fasse pas de doublon.
Je débute "petit" avec excel 2010 en créant un carnet d'adresse. J'ai suivi un
tutoriel pour excel 2007... je sais, c'est pas bien mais je n'en ai pas trouvé
d'autres....
Donc, après avoir passé toutes les étapes avec brio, un message d'erreur
apparait : 424 et la j'avoue être larguée!
Je ne parle pas du tout le langage informatique. J'ai tenté de trouver la
solution par moi même mais y a rien à faire, ça n'imprime pas dans ma tête... Ca
reste encore du chinois.
Je pensais qu'en vous montrant ce que j'ai écris certains pourraient m'aider à
rectifier le tir...
Merci par avance...

PS je precise que lorsque j'efface la ligne surlignée jaune que me montre le
"débogage" c'est une autre ligne qui se fait surligner etc etc...
Avatar
Gloops
laurencemarseille a écrit, le 30/09/2012 20:36 :
Bonjour,
je croyais avoir laissé un message sur le forum mais apparemment non car il
n'est pas affiché.
Je réitère donc mon problème en espérant que je ne fasse pas de doublon.
Je débute "petit" avec excel 2010 en créant un carnet d'adresse. J' ai suivi un
tutoriel pour excel 2007... je sais, c'est pas bien mais je n'en ai pas trouvé
d'autres....
Donc, après avoir passé toutes les étapes avec brio, un message d 'erreur
apparait : 424 et la j'avoue être larguée!
Je ne parle pas du tout le langage informatique. J'ai tenté de trouve r la
solution par moi même mais y a rien à faire, ça n'imprime pas dan s ma tête... Ca
reste encore du chinois.
Je pensais qu'en vous montrant ce que j'ai écris certains pourraient m'aider à
rectifier le tir...
Merci par avance...

PS je precise que lorsque j'efface la ligne surlignée jaune que me mo ntre le
"débogage" c'est une autre ligne qui se fait surligner etc etc...
J'ai peur...





Bonjour Laurence,

Ah oui les numéros d'erreur, ce n'est pas toujours très explicite.
Alors j'ai demandé à Google "Excel erreur 424", et il m'envoie là :

http://www.commentcamarche.net/forum/affich-10087649-vba-excel-erreur-424 -objet-requis

Donc, objet requis : tu utilises un objet qui n'est pas initialisé.

Dans la page de commentcamarche, on donne l'exemple de
Worksheets(NomFeuille), avec dans NomFeuille un nom qui n'est porté par
aucune feuille du classeur.

Ah oui alors quand tu te retrouves dans le code avec une ligne en jaune,
c'est le mode débogage : la ligne en jaune, c'est la ligne en cours
d'exécution.

A partir du code, avec Ctrl G tu te retrouves dans la fenêtre
d'exécution. Là, tu peux taper un point d'interrogation suivi du nom
d'une variable, pour savoir ce qu'il y a dedans. Passe en revue toutes
les variables citées sur la ligne jaune, ça te permettra de bien fair e
avancer le schmilblick.

Pour passer à la ligne suivante il y a F8, et surtout tu t'abstiens
d'effacer la ligne avant d'avoir compris l'erreur.
Une fois que l'erreur est corrigée et que tout semble baigner, tu
poursuis l'exécution normale avec F5.


Ah je sais, le schmilblick n'existe plus ...
Cela étant, je ne sais pas si on a une expression plus récente à la place.
Mettre sur la voie, mais ... ça perd en poésie.
Avatar
Gloops
Gloops a écrit, le 01/10/2012 01:24 :
Bonjour Laurence,

Ah oui les numéros d'erreur, ce n'est pas toujours très explicite.
Alors j'ai demandé à Google "Excel erreur 424", et il m'envoie là :

http://www.commentcamarche.net/forum/affich-10087649-vba-excel-erreur-4 24-objet-requis


Donc, objet requis : tu utilises un objet qui n'est pas initialisé.

Dans la page de commentcamarche, on donne l'exemple de
Worksheets(NomFeuille), avec dans NomFeuille un nom qui n'est porté p ar
aucune feuille du classeur.



Je parierais bien que MichD aura quelque chose de passionnant à dire su r
la comparaison entre l'erreur 424 et l'erreur 91.
Avatar
MichD
Bonjour,

Essaie comme ceci :

A ) Erreur 438 sur cette ligne. Cela signifie dans ce cas
que la propriété "Colums(1) n'existe pas. Il te manque un N :
Columns(1)
NumLigneVide = ActiveSheet.colums(1).Find("").Row '<<<====
B ) Quand tu obtiens une erreur 424, cela veut dire qu'il manque une
référence à un objet. Exemple tu j'essaie d'exécuter le code de la
procédure
en la copiant un module standard, Excel ne trouve pas à quel objet
appartient les textbox. Les objets en plus d'avoir des propriétés et
des
méthodes, il y a aussi une hiérarchie entre les objets et dans un
certain
nombre de circonstances, on doit s'assurer qu'Excel (vba) est capable
de
retrouver ses petits.
À cet effet, j'ai modifié un peu la procédure et en utilisant le :
With frmNouveau .... End With
j'ai ajouté un "point" (.) devant tes textbox afin que VBA comprenne
que
les textbox appartiennent au formulaire.
Écrit de cette manière, tu peux placer le code dans le module du
formulaire,
ou module standard ou module d'une feuille, et il sera toujours valide.
La
seule place où tu ne peux le mettre est dans un module de classe que tu
ajoutes à ton projet VBA.

C ) Et pour Gloops, une erreur de type 91 est générée par exemple lorsque la
méthode "Find" ne trouve pas ce qu'elle trouve.

'-------------------------------------------------
Private Sub cmdAjouter_Click()
Dim NumLigneVide As Long

'Cette ligne provoque une erreur 438 :
'"Propriété ou méthode non gérée par cet objet
'Colums(1) s'écrit plutôt .Columns(1) 'à corriger
NumLigneVide = ActiveSheet.Columns(1).Find("").Row '<<<====
'on vérifie que les champs obligatoires sont correctement remplis

'En supposant que la propriété "Name" de ton formulaire est frmNouveau
With frmNouveau
If .txtNom.Text = "" Then
MsgBox "Veuillez remplir le nom", _
vbCritical, "champ manquant"
.txtNom.SetFocus
ElseIf .txtPrenom.Text = "" Then
MsgBox "Veuillez remplir le prénom", _
vbCritical, "champ manquant"
.txtPrenom.SetFocus
ElseIf .txtPortable.Text = "" Then
MsgBox "Merci de renseigner le numéro de téléphone", _
vbCritical, "champs manquant"
.txtPortable.SetFocus
ElseIf .txtMail1.Text = "" Then
MsgBox "Merci d'indiquer une adresse mail", _
vbCritical, "champs manquant """
.txtMail1.SetFocus
ElseIf .txtAnniversaire.Text = "" Then
MsgBox "Merci de noter la date de votre anniversaire", _
vbCritical, "champ manquant"
.txtAnniversaire.SetFocus
Else
'on remplit les données dans notre tableau
ActiveSheet.Cells(NumLigneVide, 1) = UCase(.txtNom.Text)
ActiveSheet.Cells(NumLigneVide, 2) = .txtPrenom.Text
ActiveSheet.Cells(NumLigneVide, 3) = .txtAdresse.Text
ActiveSheet.Cells(NumLigneVide, 4) = .txtCP.Text
ActiveSheet.Cells(NumLigneVide, 5) = .txtVille.Text
ActiveSheet.Cells(NumLigneVide, 6) = .txtFixe.Text
ActiveSheet.Cells(NumLigneVide, 7) = .txtPortable.Text
ActiveSheet.Cells(NumLigneVide, 8) = .txtMail1.Text
ActiveSheet.Cells(NumLigneVide, 9) = .txtMail2.Text
ActiveSheet.Cells(NumLigneVide, 10) = .txtAnniversaire.Text

'on efface le formulaire et on replace le curseur
'sur le premier champs (Nom)
.txtNom.Text = ""
.txtPrenom.Text = ""
.txtAdresse.Text = ""
.txtCP.Text = ""
.txtVille.Text = ""
.txtFixe.Text = ""
.txtPortable.Text = ""
.txtMail1.Text = ""
.txtMail2.Text = ""
.txtAnniversaire.Text = ""
.txtNom.SetFocus
End If
End With
End Sub
'-------------------------------------------------




MichD
---------------------------------------------------------------
"laurencemarseille" a écrit dans le message de groupe de discussion :


Bonjour,
je croyais avoir laissé un message sur le forum mais apparemment non car il
n'est pas affiché.
Je réitère donc mon problème en espérant que je ne fasse pas de doublon.
Je débute "petit" avec excel 2010 en créant un carnet d'adresse. J'ai suivi
un
tutoriel pour excel 2007... je sais, c'est pas bien mais je n'en ai pas
trouvé
d'autres....
Donc, après avoir passé toutes les étapes avec brio, un message d'erreur
apparait : 424 et la j'avoue être larguée!
Je ne parle pas du tout le langage informatique. J'ai tenté de trouver la
solution par moi même mais y a rien à faire, ça n'imprime pas dans ma
tête... Ca
reste encore du chinois.
Je pensais qu'en vous montrant ce que j'ai écris certains pourraient m'aider
à
rectifier le tir...
Merci par avance...

PS je precise que lorsque j'efface la ligne surlignée jaune que me montre le
"débogage" c'est une autre ligne qui se fait surligner etc etc...
J'ai peur...

Private Sub cmdAjouter_Click()
Dim numLigneVide As Integer
'on active la feuille "LISTE"
'worskheets : "LISTE" .Activate
'on trouve la dernière ligne vide du tableau et on enregistre le numéro
de
la ligne dans la variable numLigneVide
numLigneVide = ActiveSheet.Columns(1).Find("").Row
'on vérifie que les champs obligatoires sont correctements remplis
numLigneVide = ActiveSheet.colums(1).Find("").Row
'on vérifie que les champs obligatoires sont correctement remplis
If txtNom.Text = "" Then
MsgBox "Veuillez remplir le nom", vbCritical, "champ manquant"
txtNom.SetFocus
ElseIf txtPrenom.Text = "" Then
MsgBox "Veuillez remplir le prénom", vbCritical, "champ manquant"
txtPrenom.SetFocus
ElseIf txtPortable.Text = "" Then
MsgBox "Merci de renseigner le numéro de téléphone", vbCritical,
"champs
manquant"
txtPortable.SetFocus
ElseIf txtMail1.Text = "" Then
MsgBox "Merci d'indiquer une adresse mail", vbCritical, "champs
manquant"
txtMail1.SetFocus
ElseIf txtAnniversaire.Text = "" Then
MsgBox "Merci de noter la date de votre anniversaire", vbCritical,
"champ manquant"
txtAnniversaire.SetFocus
Else
'on remplit les données dans notre tableau

ActiveSheet.Cells(numLigneVide, 1) = UCase(txtNom.Text)

ActiveSheet.Cells(numLigneVide, 2) = txtPrenom.Text
ActiveSheet.Cells(numLigneVide, 3) = txtAdresse.Text
ActiveSheet.Cells(numLigneVide, 4) = txtCP.Text
ActiveSheet.Cells(numLigneVide, 5) = txtVille.Text
ActiveSheet.Cells(numLigneVide, 6) = txtFixe.Text
ActiveSheet.Cells(numLigneVide, 7) = txtPortable.Text
ActiveSheet.Cells(numLigneVide, 8) = txtMail1.Text
ActiveSheet.Cells(numLigneVide, 9) = txtMail2.Text
ActiveSheet.Cells(numLigneVide, 10) = txtAnniversaire.Text
'on efface le formulaire et on replace le curseur sur le premier
champs
(Nom)
txtNom.Text = ""
txtPrenom.Text = ""
txtAdresse.Text = ""
txtCP.Text = ""
txtVille.Text = ""
txtFixe.Text = ""
txtPortable.Text = ""
txtMail1.Text = ""
txtMail2.Text = ""
txtAnniversaire.Text = ""
txtNom.SetFocus
End If

End Sub


Private Sub cmdFermer_Click()
frmNouveau.Hide
End Sub

Private Sub txtNom_Click()

End Sub
Avatar
isabelle
salut Denis,

j'ai fais l'achat d'un nouveau pc cette semaine, win7 - office 2010,
je commence tous juste à tester mes fichiers et la premiere erreur que je rencontre est les .SetFocus
des textbox, as-tu eu le meme probleme ?

--
isabelle
Avatar
isabelle
oups fait......e

--
isabelle

Le 2012-10-01 01:44, isabelle a écrit :
salut Denis,

j'ai fais l'achat d'un nouveau pc cette semaine, win7 - office 2010,
je commence tous juste à tester mes fichiers et la premiere erreur que je rencontre est les .SetFocus
des textbox, as-tu eu le meme probleme ?

Avatar
MichD
Bonjour Isabelle,

Non, je n'ai pas rencontré de problème particulier avec cette méthode :
SetFocus.
Je viens de faire un petit test dans un formulaire.

Es-tu certaine de ne pas avoir une bibliothèque marquée "manquante" dans
la fenêtre des "Références" du projetVBA dudit classeur?

Sinon peux-tu donner un exemple?

MichD
---------------------------------------------------------------
Avatar
isabelle
il y en avait 2 et je les ai décochés

voici l'exemple

Private Sub TextBox1_Change()
Application.EnableEvents = False
If Not IsNumeric(TextBox1) Then
TextBox1 = ""
TextBox1.SetFocus
End If
Application.EnableEvents = True
End Sub

--
isabelle


Le 2012-10-01 06:53, MichD a écrit :
Bonjour Isabelle,

Non, je n'ai pas rencontré de problème particulier avec cette méthode : SetFocus.
Je viens de faire un petit test dans un formulaire.

Es-tu certaine de ne pas avoir une bibliothèque marquée "manquante" dans
la fenêtre des "Références" du projetVBA dudit classeur?

Sinon peux-tu donner un exemple?

MichD
---------------------------------------------------------------

Avatar
MichD
| il y en avait 2 et je les ai décochés

*** Si tu fais à 2 références marquées "Manquantes" c'était suffisant pour
rendre l'exécution de tout code en VBA non opérationnel.

| Application.EnableEvents = False

*** Cette ligne de code est applicable seulement aux événements d'Excel
Elle n'a aucun effet pour les événements que l'on retrouve dans un
formulaire.

Ton code ne devrait plus générer d'erreur après avoir décoché les 2
références.

Si tu veux obliger à inscrire seulement des chiffres de 0 à 9, il me semble
que
cet événement serait plus simple...
'---------------------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 47 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub
'---------------------------------------

MichD
---------------------------------------------------------------