erreur d'execution 1004 avec macro

  • Initiateur de la discussion Initiateur de la discussion mjulien
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mjulien

XLDnaute Nouveau
Bonjour,

J'ai besoin d'une aide suite à une erreur de macro sur Excel 07
Sur une feuille excel, j'ai crée une macro qui consiste à cacher certaine ligne et colonne quand on appuie dessus. Elle fonctionnait très bien.
Ensuite, j'ai Voulu proteger certaine cellule de ma feuille excel où j'avais des formules que je ne voulais pas qu'on ne touche. Le verrouillage fonctionne par contre les macros ne marche plus et j'ai le signal d'erreur suivant:

Erreur d'execution "1004"
Impossible de définir la propriété Hidden de la classe Range

Je ne comprends pas cette erreur. J'aimerais faire cohabiter une macro et le verrouillage de cellule.

Merci d'avance à ceux qui peuvent m'aider.
 
Re : erreur d'execution 1004 avec macro

Merci de me répondre mais je ne vois pas ce que tu me dis dans le code. Le voula:


vendangebis16 Macro
'

'
Rows("3:396").Select
Selection.EntireRow.Hidden = False
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 14
Range("26:26,26:42").Select
Range("D26").Activate
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 24
ActiveWindow.ScrollRow = 25
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 27
ActiveWindow.ScrollRow = 28
ActiveWindow.ScrollRow = 29
ActiveWindow.ScrollRow = 30
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 33
ActiveWindow.ScrollRow = 34
ActiveWindow.ScrollRow = 35
ActiveWindow.ScrollRow = 36
ActiveWindow.ScrollRow = 37
ActiveWindow.ScrollRow = 38
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 40
ActiveWindow.ScrollRow = 41
ActiveWindow.ScrollRow = 42
ActiveWindow.ScrollRow = 43
ActiveWindow.ScrollRow = 44
ActiveWindow.ScrollRow = 45
ActiveWindow.ScrollRow = 46
ActiveWindow.ScrollRow = 47
ActiveWindow.ScrollRow = 48
ActiveWindow.ScrollRow = 49
ActiveWindow.ScrollRow = 50
ActiveWindow.ScrollRow = 51
ActiveWindow.ScrollRow = 52
ActiveWindow.ScrollRow = 53
ActiveWindow.ScrollRow = 54
ActiveWindow.ScrollRow = 55
ActiveWindow.ScrollRow = 56
ActiveWindow.ScrollRow = 57
ActiveWindow.ScrollRow = 58
ActiveWindow.ScrollRow = 59
ActiveWindow.ScrollRow = 60
ActiveWindow.ScrollRow = 61
ActiveWindow.ScrollRow = 62
ActiveWindow.ScrollRow = 63
Range("26:26,26:42,68:84").Select
Range("D68").Activate
ActiveWindow.ScrollRow = 64
ActiveWindow.ScrollRow = 65
ActiveWindow.ScrollRow = 66
ActiveWindow.ScrollRow = 68
ActiveWindow.ScrollRow = 69
ActiveWindow.ScrollRow = 72
ActiveWindow.ScrollRow = 74
ActiveWindow.ScrollRow = 75
ActiveWindow.ScrollRow = 78
ActiveWindow.ScrollRow = 79
ActiveWindow.ScrollRow = 81
ActiveWindow.ScrollRow = 83
ActiveWindow.ScrollRow = 84
ActiveWindow.ScrollRow = 85
ActiveWindow.ScrollRow = 86
Range("26:26,26:42,68:84,95:95").Select
Range("A95").Activate
Selection.EntireRow.Hidden = True
ActiveWindow.ScrollRow = 85
ActiveWindow.ScrollRow = 67
ActiveWindow.ScrollRow = 66
ActiveWindow.ScrollRow = 65
ActiveWindow.ScrollRow = 62
ActiveWindow.ScrollRow = 61
ActiveWindow.ScrollRow = 58
ActiveWindow.ScrollRow = 56
ActiveWindow.ScrollRow = 55
ActiveWindow.ScrollRow = 54
ActiveWindow.ScrollRow = 53
ActiveWindow.ScrollRow = 51
ActiveWindow.ScrollRow = 50
ActiveWindow.ScrollRow = 48
ActiveWindow.ScrollRow = 47
ActiveWindow.ScrollRow = 46
ActiveWindow.ScrollRow = 44
ActiveWindow.ScrollRow = 43
ActiveWindow.ScrollRow = 25
ActiveWindow.ScrollRow = 24
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 22
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
Range("A3").Select
End Sub
 
Re : erreur d'execution 1004 avec macro

Bonjour mjulien Jean-Marcel,

Essaie avec, arpès avoir supprimé tous les ActiveWindow.ScrollRow inutiles :


ActiveSheet.Unprotect ' et ("ton mot de passe s'il y en a un")
Rows("3:396").Select
Selection.EntireRow.Hidden = False
Range("26:26,26:42").Select
Range("D26").Activate
Range("26:26,26:42,68:84").Select
Range("D68").Activate
Range("26:26,26:42,68:84,95:95").Select
Range("A95").Activate
Selection.EntireRow.Hidden = True
Range("A3").Select
ActiveSheet.Protect
End Sub

Par contre, j'ai du mal à comprendre tes diverses selections.

Vois si cela te fait avancer.

Bonne fin de journée.

Jean-Pierre
 
Re : erreur d'execution 1004 avec macro

Bonsoir mjulien, Jean-Marcel, jeanpierre,

Je crois (j'en suis presque sur) qu'il y a des sélections inutiles
Moi, je pense que toutes les sélections sont inutiles avec VBA (c'est en tout cas à 99,9% vrai !).

Ainsi, tout le code de l'ami mjulien devrait certainement pouvoir être réduit à ça :
Code:
    Rows("3:396").EntireRow.Hidden = [COLOR=NAVY]False[/COLOR]
    Range("26:42,68:84,95:95").EntireRow.Hidden = [COLOR=NAVY]True[/COLOR]
Pour régler le problème de protection, on peut effectivement envisager comme ça :
Code:
    ActiveSheet.Unprotect [COLOR=GREEN]' et ("ton mot de passe s'il y en a un")[/COLOR]
    Rows("3:396").EntireRow.Hidden = [COLOR=NAVY]False[/COLOR]
    Range("26:42,68:84,95:95").EntireRow.Hidden = [COLOR=NAVY]True[/COLOR]
    ActiveSheet.Protect

Mais il y a d'autres solutions :


Protection qui autorise de masquer ou afficher des lignes
Comme tu possèdes visiblement une version Excel supérieure à XL2000, tu as la possibilité de protéger ta feuille en laissant certaines options possibles :
Pour verrouiller la feuille tout en laissant la possibilité de masquer / afficher les lignes, il suffit manuellement de cocher l'option "Format de ligne" dans la boîte de dialogue de protection (celle qui te demande l'éventuel mot de passe).
Et si tu veux le faire par VBA, ça donnera quelque chose comme ça :
Code:
ActiveSheet.Protect Password:="MotDePasse", AllowFormattingRows:=[COLOR=NAVY]True[/COLOR]
Comme ça, plus besoin de déprotéger ta feuille pour laisser ton traitement VBA agir sur les lignes.

Argument UserInterfaceOnly
Il est normalement tout à fait possible de verrouiller des cellules pour empêcher toute modification de l'utilisateur tout en permettant aux macros VBA d'agir sur ces dernières, grâce au paramètre UserInterfaceOnly = True de la méthode Protect.

Pour ce faire, il faut placer la procédure suivante dans l'objet ThisWorkbook :
Code:
[SIZE=2][COLOR=navy]Private Sub[/COLOR] Workbook_[COLOR=navy]Open[/COLOR]() 
         Sheets("Feuil1").Protect Password:="MotDePasse", [COLOR=Red]UserInterfaceOnly:=[/COLOR][COLOR=Red]True [/COLOR]
[COLOR=navy]End Sub[/COLOR][/SIZE]
Cette procédure étant lancée à l'ouverture du Classeur, et si tu ne redéfinies pas la protection de la feuille autre part dans ton code, tu devrais normalement pouvoir te passer des UnProtect / Protect au début et à la fin des divers traitement VBA...

Cordialement,
 
Dernière édition:
Re : erreur d'execution 1004 avec macro

Bonsoir mjulien, Jean-Marcel, jeanpierre,MDF,
Didier à la lecture de ta réponse ci -dessous, je me rend compte que ce que je t'ai dit hier n'est pas exagéré du tout!!! Même si ça fait trés plaisir à lire, c'est tout de même vrai
trés amicalement
papou
 
Re : erreur d'execution 1004 avec macro

bonjour,
Je voudrais d'abord remercier tout ceux qui m'ont aidé à corriger mon erreur pour ma macro
Je suis désolé mais j'ai de nouveau un problème suite à la correction apporté au code.
Lorsque je paramètre le verrouillage de ma feuille, je coche les cases permettant de modifier le format des cellules ou de colonne ou ligne.
Après avoir activé ma macro, je ne peux plus modifier le format alors qu'avant de l'activer cela était possible.

Merci encore de me venir en aide
 
Re : erreur d'execution 1004 avec macro

Bonjour M julien le forum,
cela me parrait normal, tu as utilisé la macro de MDF? si oui à la fin tu protège la feuille donc tu ne peux plus la modifier, si tu veux la modifier tu dévérouille ta feuille et tu modifies
enfin si je ne suis pas hors sujet
a+
Papou
 
Re : erreur d'execution 1004 avec macro

Bonsoir mjulien, Jean-Marcel, jeanpierre, Paritec, le Forum,

Lorsque je paramètre le verrouillage de ma feuille, je coche les cases permettant de modifier le format des cellules ou de colonne ou ligne.
Après avoir activé ma macro, je ne peux plus modifier le format alors qu'avant de l'activer cela était possible.
Si tu protèges manuellement ta feuille en cochant les options de format de cellules, colonnes ou lignes alors il te faut supprimer toute notion de protection ou déprotection de feuille dans ta macro, tu n'en as plus besoin.

Ton code réduit comme ci-dessous devrait amplement suffire :
Code:
    Rows("3:396").EntireRow.Hidden = [COLOR=NAVY]False[/COLOR]
    Range("26:42,68:84,95:95").EntireRow.Hidden = [COLOR=NAVY]True[/COLOR]
Cordialement,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
730
Réponses
1
Affichages
768
Réponses
3
Affichages
541
Retour