Erreur 1004 [Résolu]

mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 8 janv. 2015 à 16:00 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 20 févr. 2015 à 18:56
Bonjour,
je suis de retour depuis que j'ai changé l onglet de mon fichier "gestionnaire de taches" par "gestionnaire_de_taches" une de mes macro ne marche plus... bien sur j'ai remplacé le nom avec les underscores :)

Private Sub enregistrer_Click()
If ligne.Value = "" Then
Exit Sub
If ligne.Value = "" Then
MsgBox ("Tu n'as pas donné le numero de ligne")
Exit Sub
End If
If ComboBox1.Value = "" Then
MsgBox ("Tu n'as pas renseigné le statut de la tache")
Exit Sub
End If
If commentaire.Value = "" Then
Exit Sub
End If


CellB = "E" & ligne.Value
CellC = "C" & ligne.Value
CellD = "F" & ligne.Value
CellE = "D" & ligne.Value
End If

Worksheets("gestionnaire_de_taches").Range(CellB) = Environ("username")
Worksheets("gestionnaire_de_taches").Range(CellC) = ComboBox1
Worksheets("gestionnaire_de_taches").Range(CellD) = Range(CellD) & Chr(10) & Environ("username") & ":" & commentaire
Worksheets("gestionnaire_de_taches").Range(CellE) = MonthView

Unload Me

End Sub

Quelqu'un aurait une idée d ou vient le bug
"erreur d'execution '1004':
Erreur definie par l'application ou par l'objet"

NB: je t assure Ucfoutu que j'ai cherché avant de poser ma question :)
Afficher la suite 

Votre réponse

18 réponses

cgandco 219 Messages postés mercredi 26 octobre 2011Date d'inscription 22 juin 2017 Dernière intervention - 8 janv. 2015 à 16:53
0
Utile
Bonjour,

Tes deux premieres condition sont les memes

If ligne.Value = "" Then

donc tu n'afficheras jamais :

MsgBox ("Tu n'as pas donné le numero de ligne")

en plus ton erreur est surement parce que le end if de ta premiere condition est apres :

CellB = "E" & ligne.Value
CellC = "C" & ligne.Value
CellD = "F" & ligne.Value
CellE = "D" & ligne.Value

ce qui empeche l'initialisation de CellB ....

test ceci



Private Sub enregistrer_Click()

If ligne.Value = "" Then
MsgBox ("Tu n'as pas donné le numero de ligne")
Exit Sub
End If
If ComboBox1.Value = "" Then
MsgBox ("Tu n'as pas renseigné le statut de la tache")
Exit Sub
End If
If commentaire.Value = "" Then
Exit Sub
End If


CellB = "E" & ligne.Value
CellC = "C" & ligne.Value
CellD = "F" & ligne.Value
CellE = "D" & ligne.Value


Worksheets("gestionnaire_de_taches").Range(CellB) = Environ("username")
Worksheets("gestionnaire_de_taches").Range(CellC) = ComboBox1
Worksheets("gestionnaire_de_taches").Range(CellD) = Range(CellD) & Chr(10) & Environ("username") & ":" & commentaire
Worksheets("gestionnaire_de_taches").Range(CellE) = MonthView

Unload Me

End Sub




bonne journée
Commenter la réponse de cgandco
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 9/01/2015 à 06:43
0
Utile
Bonjour, mikmak78,
Je doute assez que le code que tu nous as montré ait la moindre petite chance d'aboutir au message d'erreur que tu relates.
Pourquoi ? tout simplement parce qu'une erreur de compilation serait dénoncée bien avant toute autre chose (en amont, donc !!!).
Une simple observation de la discipline de l'indentation de ton code met en évidence un bloc If sans End If ! L'indeentation d'un code n'est pas du luxe.
Si, donc, tu as vraiment un autre message d'erreur, c'est avec un autre code et non celui que tu montres ici.
Rappel : il est important de montrer ici ton code par copier/coller de ce qu'il est

PS : erratum . L'absence de l'indentation a fait que je n'ai pas repéré un end if qui se promenait plus bas ! (d'où la nécessité de bien endenter un code).

Du coup : je ne vois plus, à l'aide du code montré, ce qui peut provoquer l'erreur 1004.
Peux-tu nous préciser ce qu'est la variable ligne et où et comment elle a été déclarée et initialisée ?



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 9/01/2015 à 07:08
0
Utile
J'ai en attendant ta réponse correctement indenté le code que tu as montré ===>>
If ligne.Value = "" Then
Exit Sub
If ligne.Value = "" Then
MsgBox ("Tu n'as pas donné le numero de ligne")
Exit Sub
End If
If ComboBox1.Value = "" Then
MsgBox ("Tu n'as pas renseigné le statut de la tache")
Exit Sub
End If
If commentaire.Value = "" Then
Exit Sub
End If
CellB = "E" & ligne.Value
CellC = "C" & ligne.Value
CellD = "F" & ligne.Value
CellE = "D" & ligne.Value
End If


On voit alors immédiatement et très clairement que les quatre dernières lignes de ce code dépendent du premier bloc If (ii ..... ligne.value = "" ) or, si = "", tu as un exit sub !!!!!!!
ceci n'explique toutefois pas ton message d'erreur (répondre à ma question plus haut)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
cgandco 219 Messages postés mercredi 26 octobre 2011Date d'inscription 22 juin 2017 Dernière intervention - 9 janv. 2015 à 16:43
0
Utile
Bonjour ucfoutu,mikmak78

le message d'erreur 1004 est généré parce que CellB est toujours vide a cause du exit sub.

je pense que le code que j'ai donné avant devait fonctionner.

bonne journée
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 9 janv. 2015 à 18:53
Bonjour, cgandco,
1) je te plussoie à 100 %
2) Je pense surtout que l'on ne peut rien "coder" sans logique et/ou sans savoir la signification de ce que l'on écrit. C'est ici très manifestement une carence de logique (pure ... avant même de parler de développement-) qui conduit au "désastre" constaté.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 9 janv. 2015 à 18:53
Bonjour, cgandco,
1) je te plussoie à 100 %
2) Je pense surtout que l'on ne peut rien "coder" sans logique et/ou sans savoir la signification de ce que l'on écrit. C'est ici très manifestement une carence de logique (pure ... avant même de parler de développement-) qui conduit au "désastre" constaté.
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 13 févr. 2015 à 13:24
Bonjour,
J'avoue que je ne suis pas tres serieux en revue de code....
Neanmoins meme apres avoir copier/coller le code cgando, j'obtiens la pop up d'erreur 1004
Private Sub enregistrer_Click()

If ligne.Value = "" Then
MsgBox ("Tu n'as pas donné le numero de ligne")
Exit Sub
End If
If ComboBox1.Value = "" Then
MsgBox ("Tu n'as pas renseigné le statut de la tache")
Exit Sub
End If
If commentaire.Value = "" Then
Exit Sub
End If

CellB = "E" & ligne.Value
CellC = "C" & ligne.Value
CellD = "F" & ligne.Value
CellE = "D" & ligne.Value


Worksheets("gestionnaire_de_taches").Range(CellB) = Environ("username")
Worksheets("gestionnaire_de_taches").Range(CellC) = ComboBox1
Worksheets("gestionnaire_de_taches").Range(CellD) = Range(CellD) & Chr(10) & Environ("username") & ":" & commentaire
Worksheets("gestionnaire_de_taches").Range(CellE) = MonthView
Unload Me

End Sub
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention > mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 13 févr. 2015 à 14:57
1) sur quelle ligne, l'erreur ?
2) et que retourne à ce moment-là (celui de l'erreur) :
msgbox ligne.value
?
3) et que retourne à ce moment-là (celui de l'erreur) :
msgbox combobox1.value
?
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention > ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 févr. 2015 à 09:29
Sur la ligne 21, le message de la pop up est "erreur definie par l'application ou par l'objet".
Commenter la réponse de cgandco
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 16/02/2015 à 13:33
0
Utile
Il ne te semble pas que tu as laissé sans réponse 2 quetions ? (la 2) et la 3)) ?????
Et pourtant ! cette réponse est très très très importante ! (car si ligne contient autre chose qu'un numérique, ma foi ...) ===>>>> erreur (devine quel numéro !)!!!!!!
Bref ... Si tu veux VRAIMENT de l'aide : fais ce que l'on te dit et réponds avec précision aux questions (pourtant simples) qui te sont posées !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
cgandco 219 Messages postés mercredi 26 octobre 2011Date d'inscription 22 juin 2017 Dernière intervention - 16 févr. 2015 à 13:36
0
Utile
Bonjour,

si tu mets en remarque les ligne 21 à 24 et que tu place un point d'arrêt en ligne 25 que vaut ligne.Value et CellB à CellE ?

A mon avis, Ligne.Value est null ou vide donc .Range(CellB) n'existe pas.

pour voir les valeurs soit tu les sélectionnes et tu fais F9 puis inspecter ou Ctrl G pour avoir la fenetre d'exécution et et fais ? lavariable + return pour avoir sa valeur.

si CellB est OK fais la même chose avec Environ("username")

Bonne Journée
Commenter la réponse de cgandco
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 16 févr. 2015 à 14:52
0
Utile
Salut Ucfoutu
J'ai limpression que tu en as marre avec moi lol, avec tous ces points d'interrogations et d 'exclamations, cool :)
En effet je n ai pas repondu je m en excuse
2) c est une textbox qui me permet de connaitre la ligne que l utilisateur veux changer
3) non
Commenter la réponse de mikmak78
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 févr. 2015 à 16:19
0
Utile
C'est une plaisanterie, ou quoi ?
Je ne t'ai pas demandé ce qu'est ligne, mais ce que te retournent les deux msgbox suivants, quand tu as une erreur :
msgbox ligne.value

et
msgbox combobox1.value

Et oui : je vais finir par "en avoir marre avec toi" si tu continues ainsi à ne pas répondre à ces questions ultra-simples. Cà, c'est on ne peut plus clair.
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 18 févr. 2015 à 09:11
Salut Ucfoutu,
N'oublie pas que je ne suis pas un pro de VBA, et j'avoue je comprends ce que tu veux dire par "ce que te retournent les deux msgbox"...
pour moi msgbox ligne je rentre des chiffres qui corresponde aux lignes
et combobox1 c est des textes.
désolé si ce n est pas assez claire...
Commenter la réponse de ucfoutu
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 20 févr. 2015 à 10:09
0
Utile
Salut Ucfoutu

je t assure que je n y mets pas de mauvais volonté, mais je ne comprends pas ce que tu veux dire par "ce que te retournent les deux msgbox"
J'ai cherché sur des tutos sur msgbox (argument, titre, boutons, texte) et je ne trouve rien.
En tout cas merci de ton aide passé.
Je vais essayer de me debrouiller
Commenter la réponse de mikmak78
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 21/02/2015 à 05:55
0
Utile
Je vais essayer de me debrouiller

Ah oui ?
Dur dur, hein ??? Vraiment si dur ?
Regarde ;
soit une variable toto

toto = "que c'est pourtant simple de savoir ce que contient la variable toto"
msgbox toto


alors ? que contiennent donc (avec une msgbox)
- la variable ligne.value
et
-la variable combobox1.value
Quand "ça plante"
ne viens surtout pas me dire comment le savoir ! (je te l'ai dit plus haut)
si tu ne sais toujours pas te "débrouiller" avec ce "plus qu'élémentaire", ma foi ... Tu ferais mieux d'aller cueillir des fraises au printemps prochain ! Tu auras assez de temps plus tard pour t'intéresser plus sérieusement au développement (qui n'est surtout pas un simple copier/coller d'un "tout cuit" totalement incompris).


PS : Ah oui ===>>
Pour ce qui est de la cueillette des fraises : laisse-moi t'expliquer ===>>
Les fraises poussent sur une plante qui s'appelle un fraisier. Ce plant est généralement (sauf pour les fraisiers grimpants) assez bas (environ un peu moins de 20 cms de hauteur). Ce plant donne d'abord des fleurs, qui se transforment ensuite en fruits, d'abord verts, puis rouges (à maturité). C'est lorsque les fruits sont rouges, qu'il faut les cueillir.
C'est presque pareil en ce qui concerne ce "grand/gros mot" qu'est l' "informatique". Je te recevrai à nouveau ici avec plaisir lorsque tu auras commencé à être un "jardinier".
A bientôt, peut-être.







________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 18/02/2015 à 18:43
-1
Utile
Il ne faut pas, très loin s'en faut, être un "pro" de VBA pour savoir ce qu'est la fonction Msgbox !
Même le plus débutant de chez débutant le sait.
Je t'abandonne net là.

PS : essaye donc d'imaginer que quelqu'un aille sur un forum de médecins (tu sais ? un forum sur lequel échangent des MEDECINS ...) et pose la question suivante : "c'est quoi, le pouls ?" ... Il serait le bienvenu, tiens ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.