Rapport de message :*
 

Re: Rajout de lignes

Titre du sujet : Re: Rajout de lignes
par Guy le 21/09/2009 14:36:57

Bonjour,

Le classeur uht2.xls ne roule pas.
Feuille lundi A69:R71 = #VALEUR
Feuille Feuil20 une vingtaine de #REF

Dans le code
Bouton de la feuille lundi GRAPH -> Module1, fonction trier() "Variable non définie" : xlSortValues. AutoFilter n'a pas de méthode Sort. Et ActiveWorkbook.Worksheets("jeudi") donne évidemment des maux de tête au compilateur; pas de feuille "jeudi", néant, zéro, aucune.
Et pourquoi ActiveWorkBook, as-tu l'intention de travailler sur un autre classeur ailleurs dans le code?

Bouton de la feuille lundi RETOUR -> Module3, fonction RETOUR4() Sheets("ACCUEIL").Select "L'indice n'appartient pas à la sélection". Normal, pas de feuille "ACCUEIL".

Aussi, pourquoi écrire
    Range("C4").Select
    Selection.ClearContents
au lieu de Range("C4").Clearcontents

C'est une (mauvaise) habitude très répendue de cibler des plages en les activant et en les sélectionnant.
Au lieu d'écrire
Worksheets("toto").Activate
Worksheets("toto").Range("A1:IV35").Select
Selection.ClearContents

ne vaut-il pas mieux écrire, avec le nom de code de la feuille "toto" que nous supposerons être Machin :
Machin.Range("A1:IV35").ClearContents

De même
    Sheets("ACCUEIL").Select dans RETOUR4, Module3
sélectionne une feuille en vue d'un  traitement avec des Range("...").Quelquechose
Ce qui rend le code très difficile à suivre.
Alors que travailler directement avec le nom de code des feuilles simplifie grandement le débroussaillage du code et l'intention du codeur.

Machin.Range("A1:IV35").ClearContents cible directement la feuille au nom de code Machin alors que Range("A1:IV35").ClearContents rencontré ici ou là dans le code ne donne aucune information sur la feuille actuellement visée et entraine un effort considérable et bien inutile pour le réviseur de code.

Cordialement,

Guy