XL 2013 modification organisation code

grisan29

XLDnaute Accro
bonjour a tous
dans le cadre de réorganiser un code qui fait référence a la même feuille peut-on écrire comme ceci en haut des codes
Code:
Option Explicit
With Sheets("Feuil1")
Private Sub CommandButton12_Click()
pour éviter de mettre des with et end with a profusion

mais la question que je me pose est que le "end with" se mets en bas tout du code

je que j'ai fait me laisse perplexe

Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : modification organisation code

Bonjour.
Exécutez cette petite procédure :
VB:
Sub Info()
MsgBox Sheets("Feuil1").CodeName
End Sub
Elle vous affichera le nom de l'objet Worksheet qui représente la feuille Excel nommée "Feuil1".
Il se peut que ce soit Feuil1, d'ailleurs, mais pas forcément.
Vous pourrez partout utiliser ce nom à la place de l'expression 'Sheets("Feuil1")'
C'est à mon avis un nom suffisamment court pour ne plus nécessiter de With / End With.
Et Il ne nécessitera plus non plus, à chacune de ses spécifications, de recherche dans la collection Sheets du classeur.

Remarque: Ce n'est possible qu'avec les feuilles du classeur qui porte la macro. Si c'est une macro qui travaille avec un classeur actif différent de celui qui porte la macro, il faut, pour bénéficier en partie des mêmes avantages, utiliser une variable globale déclarée … As Worksheet et y faire un Set … = ActiveWorkbook.Sheets("Feuil1") à un moment stratégique. Peut être vaudrait il mieux un … As Range et faire Set … = ActiveWorkbook.Sheets("Feuil1").UsedRange
 
Dernière édition:

grisan29

XLDnaute Accro
Re : modification organisation code

bonjour dranreb
merci de ta réponse et des précisions en effet je ne l'ai pas préciser ce code est dans un userform donc il possible qu'il soit appeler par un autre module, je suis en cours de virer les .select et activesheets et je me heurte a ce module que je vais m’empresser de regarder s'il n'est pas appeler ailleurs

Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : modification organisation code

Si c'est ailleurs mais toujours pour accéder aux feuilles du classeur qui contient ce module, il n'y a pas de problème. Les noms d'objets Worksheet de la rubrique Microsoft Excel Objets sont seulement inutilisables depuis un module d'un autre projet VBA.
 

grisan29

XLDnaute Accro
Re : modification organisation code

bonjour dranreb
j'ai remis comme c'était avant car ça buggait de partout, donc je laisse avec tous les with et end with c'est toujours mieux que des .select
par contre il y a quelques lignes comme ceci
Code:
Sheets("Clients").Select
Worksheets("Clients").Range("BQ3:BS34").Select
Selection.ClearContents
Selection.Borders.LineStyle = 0

laquelle des 2 sheets("Clients") peut-on virée sans soucis

puis je faire comme ceci
Code:
With Sheets("Clients").Range("BQ3:BS34")
.ClearContents
.Borders.LineStyle = 0


Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : modification organisation code

Oui, vous pouvez faire comme ça.
Ça boguait de partout ? Vous n'avez pas essayer d'utiliser Clients comme un nom d'objet Worksheet au
moins ? Parce que c'est seulement le nom d'une feuille Excel, qui est une entité de l'application hôte et non un objet VBA, mais que cette entité est représentée dans VBA par un objet Worksheet portant un autre nom ?
 
Dernière édition:

grisan29

XLDnaute Accro
Re : modification organisation code

bonjour dranreb
je vais te joindre l'userform extrait de son contexte mais qui fonctionne tel que avec les feuilles l'accompagnant
c'est tout ce qu'il fait permettre la validation d'un BL qui lui reçois ses informations de la facture
 

Pièces jointes

  • test 1lignecommande.xls
    91.5 KB · Affichages: 18

grisan29

XLDnaute Accro
Re : modification organisation code

bonjour DRANREB

pourquoi changer le nom de la feuille car il y a déjà une "Feuil1" et aussi "Feuil3"
en tout il n'y a que les 3 1ères feuilles qui n'ont pas été renommée, les 3 autres le sont

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : modification organisation code

Personnellement je les renomme toujours, dans la fenêtre de propriété. C'est la 1ère propriété (Name), c'est celle du module de la feuille si vous préférez, qui fait aussi office de nom de l'objet Worksheet. Nom qui, encore une fois, n'a aucun rapport avec le nom de la feuille Excel qu'il représente, ce dernier n'ayant pas à obéir aux règles de syntaxe des noms de variables ou de constantes.
 

Dranreb

XLDnaute Barbatruc
Re : modification organisation code

Non, Il ne faut pas laisser la programmation que j'ai vue telle qu'elle est, avec partout des Sheets("BL"), c'est idiot.
Au pire, si on ne peux pas utiliser le nom renvoyé par la propriété CodeName, on peut quand même déclarer en tête F As Worksheet, dans l'UserForm_Initialize faire Set F = Sheets("BL"), et on peut ensuite partout utiliser F à la place de Sheets("BL").

Oui, c'est bien de proposer des solutions avec mon module ComboBoxLiées. Ce serait encore mieux de les élaborer, en veillant à reprendre la version des modules de service de mes classeurs joints lors de mes plus récentes discussions.
 

grisan29

XLDnaute Accro
Re : modification organisation code

bonsoir/bonjour
oui je sais que c'est mieux d'utiliser tes modules récents, mais ceux j'ai dans un dossier a ton nom ne sont pas récents et je n'ai pas pris le temps de les modifier
je réfléchis a ce que tu viens de dire mais demain(tout a l'heure) j'aurais les idées plus claires
 

Discussions similaires

Statistiques des forums

Discussions
314 221
Messages
2 107 464
Membres
109 835
dernier inscrit
Marie Bénédicte