Réduction nbre de macros identiques

F

Francis38

Guest
Bonsoir le FORUM,

Quelqu'un pourrait-il maider à simplifier mon fichier qui contient beaucoup de macros identiques et qui commence à être gros en taille 4.3 Mo.

J'ai 40 feuilles identiques dans la mise en forme qui servent à suivre des opérations sur des équipements, et les macros qui y sont rattachées (du type Private Sub Worksheet_Change(ByVal Target As Range)) sont les mêmes pour ces 40 feuilles, il y a aussi d'autres feuilles qui ont d'autres macros.

Comment puis-je faire pour éviter de recopier chaque macro dans ces 40 feuilles sans que celà agisse sur les feuilles non concernées.
Faut-il les créer dans 'this workbook' et de quelle manière ?

Merci pour vos réponses.
Francis38.
 

Dan

XLDnaute Barbatruc
Bonsoir,

Une manière simple est de subdiviser ta macro comme suit :

1. Création d'un module pour le classeur

- Donne un nom à ta macro (par ex : Sub Test)
- Place les instructions à exécuter venant de 'Private Sub Worksheet_Change(ByVal Target As Range)'

2. Private Sub Worksheet_Change(ByVal Target As Range)

Dans cette macro actuelle après avoir déplacé les instructions vers la macro Test, fais appel à ta macro TEST. Ce qui donne :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Call Test
End sub

Ceci est juste une proposition sans avoir connaissance du code actuel que comporte ta macro Private sub.

Si pb n'hésite pas

;)

Message édité par: Dan, à: 29/10/2005 22:18
 
F

Francis38

Guest
Bonsoir Dan, et MERCI,

C'est parfait, ca marche comme je le souhaitais.
Par contre il me reste un petit souci.
Dans la dernière instruction, le nom de chaque feuille est normalement repris, donc comme la procédure fait appelle à 'Sub Test' il n'y a que la feuille 'CLA C4' qui est concernée.(voir procédure ci après.)
Comment dois-je procéder, STP ?

With Worksheets('CLA C4').Range('C6:C100').Characters(Start:=1, Length:=1).Font
.Name = 'Comic Sans MS'
.FontStyle = 'Gras'
.Size = 10
End With


Encore merci, à Dan, au FORUM.
 
F

Francis38

Guest
Bonsoir ya__vka

Faut-il écrire comme celà, car si c'est le cas ça ne fonctionne pas, le message suivant s'affiche 'Objet requis' en surlignant la première phrase
With ActiveSheets.Range('C6:C100').Characters(Start:=1, Length:=1).Font
.Name = 'Comic Sans MS'
.FontStyle = 'Gras'
.Size = 10
End With


Francis38
 
F

Francis38

Guest
C'est bien la faute du S de ActiveSheets qui empêchait la macro d'aboutir.
Donc la solution de ya_v_ka était parfaite.
Comme quoi une erreur de frappe !!!!!

Encore un grand MERCI à :
ya_v_ka,
Dan,
Le FORUM.

Francis38.
 

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 603
Membres
104 224
dernier inscrit
Brilma