> Tous les forumsBureautique

 Copier CollerSujet résolu
Statut du sujet : RESOLU Imprimer
 quillet
  Posté le 01/05/2008 @ 11:11  
 Petit astucien

94 Messages

Bonjour à tous,

Je voudrais figer les valeurs d'un tableau comportant des formules, par copier-coller puis protéger la feuille, mais pas manuellement.

Je voudrais que cette opération s'effectue automatiquement en changeant de feuille.

J'ai fait les macro ci-dessous mais celà ne fonctionne pas.

Dans un module

Sub Macro1()
Range("S62:AD73").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Dans la feille J1

Private Sub Worksheet_Deactivate()
Macro1
End Sub

Pourrais-je savoir ce qui cloche dans ces macros. Comment faire pour que celà fonctionne?

Merci poue votre aide

 Afficher le profil de quilletEnvoyer un message privé à quillet
 
 
Publicité
 galopin01  Posté le 01/05/2008 à 11:28  
Astucien

4321 Messages

bonjour,

Quand la macro déactivate s'exécute la feuille n'est déjà plus la feuille active puisqu'elle a été lancée par l'activation de la feuille 2... Ta macro 1 s'applique alors à la nouvelle feuille active...

C'est l'inconvénient de tous les Select, ActiveCell, ActiveSheet et autres ActiveQuelqueChose... Toujours préférer l'adressage absolu. (sans select)

Remplacer les 2 macros par cette macro unique :

Private Sub Worksheet_Deactivate()
With Worksheets("J1").Range("S62:AD73")
.Copy
.PasteSpecial Paste:=xlPasteValues
.Protect DrawingObjects:=True
End With
Application.CutCopyMode = False
End Sub

A+



Modifié par galopin01 le 01/05/2008 17:18
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 quillet  Posté le 01/05/2008 à 12:06  
Petit astucien

94 Messages

MERCI Galopin pour ta réponse ultra rapide.

J'ai supprimé les 2 macros et installé la tienne dans la feuille J1; hélas celà ne marche pas.

Lorsque je passe à la feuille J2 une fenêtre indique "Erreur de compilation; Sub ou Function non définie" Clic sur OK montre la maco avec le Worksheet de la 2ème ligne surligné en bleu.

Afficher le profil de quilletEnvoyer un message privé à quillet
 Revenir en haut de la page
 galopin01  Posté le 01/05/2008 à 12:33  
Astucien

4321 Messages

Euh... Cela est du à une modif de dernière minute.

Mettre un s à Worksheet !

With Worksheets("J1")...

A+



Modifié par galopin01 le 01/05/2008 12:35
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 quillet  Posté le 01/05/2008 à 15:10  
Petit astucien

94 Messages

Celà ne fonctionne toujours pas.

La fenêtre qui apparait indique "Erreur d'execution '9':L'indice n'appartient pas à la selection" et la 2ème ligne de la macro est surlignée en jaune.

Que faut-il faire SVP?

Afficher le profil de quilletEnvoyer un message privé à quillet
 Revenir en haut de la page
 galopin01  Posté le 01/05/2008 à 15:44  
Astucien

4321 Messages

Est-tu sur que que ta feuille est bien nommée "J1" et qu'il n'y a pas un espace indésirable : par exemple "J1 " ?



Modifié par galopin01 le 01/05/2008 15:45
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 quillet  Posté le 01/05/2008 à 15:55  
Petit astucien

94 Messages

Bien vu Galopin. J'ai supprimé l'espace entre J et 1.

Mais à présent, s'ouvrent sans arrêt et alternativement les feuilles J2 et J1.

Que faire?

Afficher le profil de quilletEnvoyer un message privé à quillet
 Revenir en haut de la page
 galopin01  Posté le 01/05/2008 à 17:21  
Astucien

4321 Messages

Ben... Faut dire que c'est un peu tiré par les cheveux ta règle de sortie...

Remplacer la macro comme suit :

Private Sub Worksheet_Deactivate()
On Error Resume Next
Application.ScreenUpdating = True
Application.EnableEvents = False

With Worksheets("J1").Range("S62:AD73")
.Copy
.PasteSpecial Paste:=xlPasteValues
.Protect DrawingObjects:=True
End With
Application.CutCopyMode = False
Application.EnableEvents = True
End Sub

A+



Modifié par galopin01 le 01/05/2008 17:22
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 quillet  Posté le 01/05/2008 à 17:42  
Petit astucien

94 Messages

Merci beaucoup Galopin. Ça marche

J'admire ta maîtrise, car pour moi ta macro, c'est de l'hébreu et, j'en suis désolé mais je crois que je n'y comprendrai jamais rien.

Heureusement que vous êtes là pour aider les ignares

A+

Afficher le profil de quilletEnvoyer un message privé à quillet
 Revenir en haut de la page
 galopin01  Posté le 01/05/2008 à 21:41  
Astucien

4321 Messages

Les macros évènementielles sont parfois difficiles à manier car elles entraînent des évènements en chaine si l'on n'y prend pas garde.

Si tu réactives ta feuille (pour faire des modifications) à chaque fois que tu la désactives, tu vas pas arrêter de faire des modifications puisque à chaque fois que tu vas la quitter, tu vas aussitot la réactiver pour faire tes modifications. Et comme après tu vas la désactiver pour la réactiver pour faire tes modifications, ça fait un peu comme pour les shadocks à force de la désactiver pour la réactiver évidement ça fatigue... C'est là que j'interviens : mine de rien et sans en avoir l'air, je fais les modifications sans avoir l'air d'y toucher pour pas qu'il se rende compte que j'ai réactivé la feuille que tu viens de réactiver...

A+



Modifié par galopin01 le 01/05/2008 21:46
Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 quillet  Posté le 02/05/2008 à 00:11  
Petit astucien

94 Messages

Bravo Galopin, ton explication est amusante et beaucoup plus claire pour moi que le langage VBA.

Effectivement de toujours pomper, celà fatigue. Mais si je voulais cette macro, c'est justement pour ne plus toucher à la feuille par la suite.

Merci, A +

Afficher le profil de quilletEnvoyer un message privé à quillet
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte




Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsBureautique

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page