Erreur 400 excel vba

Fermé
lylyne - 23 juin 2009 à 10:17
 Zizou - 1 avril 2015 à 16:59
Bonjour,

alors je vous explique mon problème:
j'ai fais une application excel qui comporte des liens avec plusieurs autres classeurs excel. J'ai un message d'erreur 400 quand je clique sur mon bouton "Quitter" qui ouvre puis remplit une feuille excel d'un autre classeur et ferme le classeur principal.
Quand j'ouvre le classeur principal (sans faire aucune manip) et que je clique sur le bouton "Quitter" ça marche sans problème, par contre quand j'ouvre le classeur principal et que j'utilise l'application, après quand je clique sur "Quitter", j'ai "erreur 400".

ça m'ennerve parce que je passe mes journées à trouver ce qu'il ne va pas et quand j'arrive à le faire marcher, le lendemain ça ne marche plus et re-erreur 400!!!

Voici la macro qui est derrière le bouton "Quitter":
les variables visa, unit et colis sont des variables globales. visa as string, colis et unit as integer

Sub cmd_quitter_click()
'cette procédure vide entièrement les cellules de la feuille et enregistre puis ferme les classeurs excel puis ouvre et rempli celui des activités

'on enlève la protection de la feuille
Unprotect Password:="retours"

visa = Workbooks("TraiterRetours.xls").Worksheets(1).Cells(28, 10)


Call activite

'vide la feuille pour une saisie ultérieure
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(4, 9) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(8, 9) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(10, 9) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(22, 10) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(24, 10) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(10, 2) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(9, 2) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Range("A14:F300") = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(26, 10) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(28, 10) = ""
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(13, 8) = FAUX
Workbooks("TraiterRetours.xls").Worksheets(1).Cells(13, 9) = FAUX

'ferme les classeurs en cours
Workbooks("Classeur1.xls").Close (True)
Workbooks("TraiterRetours.xls").Close SaveChanges:=True

'on remet la protection de la feuille
Protect Password:="retours"

End Sub


J'espère que je me suis fais comprendre ! Je vous remercie d'avance pour vos réponses !!!!
A voir également:

4 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 juin 2009 à 12:13
Bonjour,

Ce qui serait intéressant c'est d'avoir la ligne où se produit l'erreur et le libellé de l'erreur.

;o)
0
Déjà, merci de m'avoir lu!

Quand j'enlève "call activite" ça marche et quand je mets que la procédure "activite" dans la macro ça bug.
Donc le problème viendrait de la procédure "activite"... Mais où est-il????
J'ai pensé que l'erreur pouvait venir des variables colis, unit, et visa mais non puisque j'ai fais une macro test genre 'activeworkbook.activesheet.cells(1,1)=unit' et ça marche.


Concernant le message d'erreur:
en titre : Microsoft Visual Basic
le logo: une croix blanche sur fond rouge
le message: 400
puis 2 boutons OK et Aide
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
23 juin 2009 à 14:31
As-tu déroulé le code en mode pas à pas (débogage) ? Activite est peut être un mot réservé, change le nom de ta procédure en "toto" et relance la macro.

0
yo!
0
Si ça vous interesse la procédure activite est la suivante:

Sub activite()

Workbooks.Open ("Activites.xls")

If Workbooks("Activites.xls").ActiveSheet.Cells(15, 3) = "" Then
Workbooks("Activites.xls").ActiveSheet.Cells(15, 3) = colis
Workbooks("Activites.xls").ActiveSheet.Cells(15, 1) = Workbooks("TraiterRetours.xls").Worksheets(1).Cells(26, 10)
Workbooks("Activites.xls").ActiveSheet.Cells(15, 4) = unit
Workbooks("Activites.xls").ActiveSheet.Cells(11, 6) = visa

ElseIf Workbooks("Activites.xls").ActiveSheet.Cells(15, 3) <> "" Then
Workbooks("Activites.xls").ActiveSheet.Cells(16, 3) = colis
Workbooks("Activites.xls").ActiveSheet.Cells(16, 1) = Workbooks("TraiterRetours.xls").Worksheets(1).Cells(26, 10)
Workbooks("Activites.xls").ActiveSheet.Cells(16, 4) = unit
Workbooks("Activites.xls").ActiveSheet.Cells(11, 6) = visa

ElseIf Workbooks("Activites.xls").ActiveSheet.Cells(16, 3) <> "" Then
Workbooks("Activites.xls").ActiveSheet.Cells(17, 3) = colis
Workbooks("Activites.xls").ActiveSheet.Cells(17, 1) = Workbooks("TraiterRetours.xls").Worksheets(1).Cells(26, 10)
Workbooks("Activites.xls").ActiveSheet.Cells(17, 4) = unit
Workbooks("Activites.xls").ActiveSheet.Cells(11, 6) = visa

end if

end sub

Voila
-1