Dépoussiérage d'un programme

  • Initiateur de la discussion Initiateur de la discussion pascal35135
  • 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 !

P

pascal35135

Guest
Bonjour à tous,
Devant la quantité et la qualité des ressources présentes sur ce forum, je me risque à vous proposer un fichier que j'ai développé pour une compétition scolaire.
Au regard de l'aide que vous m'avez apporté, je vous propose de jeter un œil sur mes macros qui sont, je me doute un peu tordues (voir des usines à gaz).
Le programme marche bien, mais .....
Je suis preneur de toutes vos remarques, conseils.
Merci.
Il pleut averse à Rennes.
Pascal
Fichier ici (il est gros)
 
Re : Dépoussiérage d'un programme

Bonjour pascal

J'ai dèja constaté que tu a copié 16 fois cette routine et autant pour la deprotection
'Protection du classeur
For Each f In Worksheets
f.Protect "unss"
Next

mais tu peux utiliser les routines en Module1

'**************************
'***protection feuilles***
'------------------------
Sub ProtecFeuilles1()
For Each f In Worksheets
f.Protect "unss"
Next
End Sub

'------------------------
'**************************
'***DEprotection feuilles***
'------------------------
Sub ProtecFeuilles0()
For Each f In Worksheets
f.Unprotect "unss"
Next
End Sub

A+
 
Re : Dépoussiérage d'un programme

Bonjour,

pour permettre au code de s'exécuter sur feuille protégées sans avoir à déprotéger / re protéger les feuilles, il faut que la protection soit faite par vba en utilisant l'argument "userinterfaceonly", code ci-dessous à utiliser dans le module "thisworkbook", se déclenche à l'ouverture du classeur... :
Code:
Option Explicit
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Worksheets
    ws.Protect "toto", userinterfaceonly:=True
Next ws
End Sub

bonne journée
@+
 
Re : Dépoussiérage d'un programme

Merci Pierrot pour ce premier dépoussiérage,

J'ai placé "Option Explicit" dans "thisworkbook"
et la macro dans module 1, cela marche très bien, par contre des que je place:
Private Sub Workbook_Open()
Worksheets("INDEX").Activate
End Sub
dans "thisworkbook"
Cela plante les macros comment faire pour obliger Excel à s'ouvrir sur une feuille donnée.

Tu peux continuer à massacrer mon code, je ne demande qu'à apprendre, je vois que j'ai un retard considérable.
Merci à tous
Robert, il pleut encore sur Rennes
 
Re : Dépoussiérage d'un programme

Bonjour Pascal,Pierrot,Robert



Sur ton code , j'ai un peu essayé de faire tourner au hasard, et je constate qu'à un moment tu as un appel de sheets("Index min") qui n'est pas présent sur la pièce que tu nous as produite.

'Début**********Macro de MISE_A_BLANC_SAISIES_MI
'Sélection zones
Range("A3:B1000").Select
Selection.ClearContents
Range("J3:K1000").Select
Range("K1000").Activate
Selection.ClearContents

'Sélection feuille INDEX
Sheets("INDEX_MI").Select *****ICI IL Y A UNE FEUILLE INDEX_MINIME***** ???????
Range("A1").Select
'
'Fin**********Macro de MISE_A_BLANC_SAISIES


J'ai aussi remarqué que tu n'utilises pas beaucoup les sous programmes car tu répètes 9 ou dix fois les mêmes routines en changeant le nom de la feuille appelée .
Les modules 4 et 7 répètes pratiquement les même instructions en changeant le nom de feuille.
exemple

Sheets("RES_LANCERS_BENJ").Select
'
'
'
Sheets("RES_COURSES_BENJ").Select


Tu peux placer en module 4 et module 7:
Public nom as String
Puis au début de tes routines:
Nom =RES_LANCERS_BENJ
appel de la routine
Nom =RES_COURSES_BENJ
appel de la routine



Sub routine
Sheets(Nom).Select

ETC
ETC

end sub


A+
 
Dernière édition:
Re : Dépoussiérage d'un programme

Bonsoir Néné06,
Je vois que tu as pris mon cas au sérieux.
Merci pour l'erreur de la mise à blanc des minimes.
Pour le corps des différentes routines, il est vrai que je répète x fois la même chose car je ne sais pas poser des variables tel que tu viens de me le montrer.
La différence entre benjamins et minimes n'est que le nom de la feuille de données à travailler et le nom des différents feuilles de recueil tout le reste ce sont les mêmes calculs.
Je suppose même que l'on doit pouvoir rechercher une variable en concaténant d'autres variables.
Je vais déjà essayer de reprendre les modules 4&7.
Merci
Sur Rennes la tempête s’installe
A+
 
Re : Dépoussiérage d'un programme

Excuse moi, mais je me suis mal exprimé au post #6
Tu peux placer en module 4 et module 7:
Public nom as String
Puis au début de chaque sous progamme des modules 4 et 7
par exemple
Sub TRI_LANCERS_EQ_BENJ
Nom =RES_LANCERS_BENJ
routine **appel de sub routine ***
*
*
*
*
end sub

Sub routine
Sheets(Nom).Select
ETC
ETC
end sub

Bon... je ne te dis pas qu'à Nice il fait beau..

A+
 
Re : Dépoussiérage d'un programme

Bonjour Bebere ,bonjour à tous

J'ai crée le module 8 "dépoussiéré" qui comporte les info des modules de 1 à 7.
nous pouvons donc supprimer les modules de 1 à 7 et placer le module 8 à la place.

Module 8 pas trop testé , à voir et à modifier si nécessaire .

A+
 
Re : Dépoussiérage d'un programme

Bonsoir à tous,
Merci à tous, mon silence était du à un déplacement à l'étranger.
Je prends toutes vos remarques sous forme de cahier de vacances et je vais essayer de me dépatouiller avec votre travail d'expert. J’espère que je serais à la hauteur. Rendez vous dans un mois.
Encore un grand merci.
Bonnes vacances.
Pascal
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour