Excel VBA Erreure 1004 Protection de feuille

Résolu/Fermé
Tomtom - Modifié par Tomtom le 16/11/2010 à 15:46
 Tomtom - 17 nov. 2010 à 15:40
Bonjour a tous,
C'est mon premier message sur le forum, d habitude j arrive a resoudre mes problemes, mais la je suis vraiment perdu.
J ai un fichier Excel (nomme Rapport) dans lequel je recupere des donnees d Access. Apres la recuperation je fais un bon paquet de calcul, tri le tout, arrange ma feuille et finallement la protege. Il est possible apres tout cela de changer quelques variables dans certaines cellules ce qui donne l ordre a Excel d inserer des ligne, il a donc fallut que j enleve la protection pour ces actions et que je la remette a la fin. Pour finir avant de fermer mon fichier, je veux qu' Excel supprime toutes les donnees qui ont ete inserees pour retrouver ma forme de base, donc avant la suppression je dois enlever la protection a nouveau.
D un autre cote avec access, j ai la possibilite de creer un Fichier qui va pecher des donnees dans plusieurs de ces Rapports. La creation marche dans ce sens : creer un rapport X (il fait donc toutes les operations enumerees auparavant dont changer les variables automatiquement), copier les donnees voulues, fermer le rapport X, Creer un rapport Y .... et ainsi de suite
Voici mon probleme (on y arrive) lorsque je creer un rapport unique que je le ferme tout va bien Excel supprime toutes les donnees... youpi je suis content...
lorsque je demande a Access le second cas ou je vais copier les donnees, a chaques fois qu il ferme un Rapport, avant la suppression, J ai une erreure 1004 : l application ou l objet est mal definit. En fait cela vient du fait que j essai de modifier une cellule protegee... Or une ligne de code avant je demande a Excel d enlever la protection... J ai fait un test pour savoir si la protection est enleve, et magie! Excel me dit que oui, alors que je sais tres bien que non.

Private Sub EndFile() 
Module1.UnProt 
Workbooks("Report").Worksheets("Report").Cells(1, 35).Value = 1 
Application.Calculation = xlCalculationManual 

    If SheetTrue(ThisWorkbook, "DataReport") Then 
        Application.DisplayAlerts = False 
        Workbooks("Report").Worksheets("DataReport").Delete 
    End If 
    If SheetTrue(ThisWorkbook, "Calendar") Then 
        Application.DisplayAlerts = False 
        Worksheets("Calendar").Unprotect Password = "password" 
        Workbooks("Report").Worksheets("Calendar").Delete 
    End If 
         
    Do While Workbooks("Report").Worksheets("Report").Cells(7, 2) <> "" Or Workbooks("Report").Worksheets("Report").Cells(7, 9) <> "" 
        Workbooks("Report").Worksheets("Report").Rows(7).Delete 
    Loop 
     
    Workbooks("Report").Worksheets("Report").Rows(7).Delete 
    Workbooks("Report").Worksheets("Report").Cells(3, 1).Value = "" 
    Workbooks("Report").Worksheets("Report").Cells(3, 3).Value = "" 
    Workbooks("Report").Worksheets("Report").Cells(3, 5).Value = "" 
    Workbooks("Report").Worksheets("Report").Cells(3, 7).Value = "" 
    Workbooks("Report").Worksheets("Report").Cells(3, 13).Value = "" 
    Workbooks("Report").Worksheets("Report").Cells(3, 13).Interior.ColorIndex = 3 
Application.Calculation = xlCalculationAutomatic 
AddIns("Analysis ToolPak").Installed = False 
Workbooks("Report").Worksheets("Report").Cells(1, 35).Value = "" 
Module1.Prot 
End Sub


Voici la macro qui se lance avant la fermeture, les sub Prot et Unprot, sont respectivement pour proteger et virer la protection. A vrai dire cette macro se lance derriere une userform pour que l utilisateur patiente durant la suppression...
Voila une bonne petite colle pour vous =D ! Merci d avance
A voir également:

1 réponse

Bon du coup si jamais qq un tombe sur le meme genre de probleme, j ai resolu le mien. Le probleme en fait ete lors de la fermeture il y avait trop de macros qui se lancaient en meme temps. J ai vu cela en virant toute les protections de mes feuilles, le probleme revenait sur la macro suivante... Au lieu d appeler des macros dans des macros, je les ai appelees une a une dans access...
En esperant que ca puisse servir a qq un...
0