Erreur 1004

Résolu
mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017 - 8 janv. 2015 à 16:00
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 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 :)

11 réponses

cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
8 janv. 2015 à 16:53
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 9/01/2015 à 06:43
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 9/01/2015 à 07:08
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
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
9 janv. 2015 à 16:43
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 janv. 2015 à 18:51
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é.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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é.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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é.
0
mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211 > mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017
Modifié par ucfoutu le 13/02/2015 à 15:00
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
?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/02/2015 à 13:33
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
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
16 févr. 2015 à 13:36
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
0
mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017
16 févr. 2015 à 14:52
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2015 à 16:19
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.
0
mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017
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...
0
mikmak78 Messages postés 59 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 6 mars 2017
20 févr. 2015 à 10:09
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 21/02/2015 à 05:55
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 18/02/2015 à 18:43
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
-1
Rejoignez-nous