Passer un code sur un autre classeur

Bonjour,

Petite question: est il possible de faire travailler mon code sur une seule feuille sans avoir à écrire le nom de ma feuille à chaque fois avant chaque cellule etc... ?

merci

Bonjour,

Voir ce lien ... descends jusqu'à WITH

https://www.excel-pratique.com/fr/vba/proprietes.php

laceline

Bonjour,

Le code ne travaille pas sur une feuille ou une autre, il travaille à partir de l'application (car VBA y est lié) et là où on lui dit de travailler ! Le plus souvent ce sera dans l'application, un classeur ou l'autre (si plusieurs sont ouverts), une feuille ou une autre ou un autre élément, ou aussi hors de l'application...

Utiliser un objet Range défini par des références de cellules, sans le référer explicitement à la feuille à laquelle cet objet appartient, c'est produire dans le code une expression non qualifiée (qui ne comporte pas de qualificateur d'objet). En pareil cas l'expression réfère à l'objet Application, et VBA va donc remonter à l'Application, y cherche le classeur actif, chercher dans le classeur actif la feuille active, et appliquer la référence à cette feuille pour renvoyer l'objet Range cherché...

On voit que cette façon de coder est imprécise (la feuille cherchée n'est peut -être pas ou plus la feuille active, la feuille active pourrait ne pas être une feuille de calcul...), aléatoire (l'objet renvoyé peut être erroné...) et plus lente (si on lui indique la feuille, VBA ira direct sans chercher !)

Je préconise donc de toujours qualifier ses expressions pour un code plus optimal (fiable et rapide), ce qui n'oblige pas pour autant à écrire à répétition le nom de la feuille, il y a quantité de méthodes et de situations pour l'éviter... Mais il serait préférable que tu précises ta question : où se trouve ton code, qu'est-ce qu'il fait, etc. de façon que l'on puisse répondre de façon circonstanciée.

Cordialement.

edit : Et quel rapport avec ton titre, au fait ?

Salut,

Je plussoie MFerrand, de base excel travail sur le classeur actif et la feuille active, du coup si tu fais un

sheet(X).select

au début de ta macro c'est bon pour le reste de tes lignes de code

ECG

Oui ! Mais c'est à mon sens un Select de trop ! Une action en plus ! Qui prend donc du temps en plus !

yes il faut éviter de faire un select en général ! tu as bien raison et il faut le rappeler, ça ne fait pas de mal

Mais pour répondre à sa question je trouve que c'est le plus simple à mettre en place surtout sans avoir des connaissances de ouf en vba ^^

Je pense vu sa question qu'il fait tout sur la même feuille et qu'il refait un

[b]Sheets("TOTO")[/b].cells(X,Y).value = "PLOP"

sur chacune de ses lignes de codes, c'est sur que ça peut être agaçant à force mais bon c'est la dur vie des lignes de code ^^

ECG

Si c'est c'est simplement pour éviter d'avoir à taper le nom de la feuille, avec un With on ne le met qu'une fois, et qui plus est , non seulement ça ne ralentit pas, mais ça accélère l'exécution !

Sur un module de feuille, la feuille c'est : Me (assez court je pense !)

On a aussi la ressource (surtout en cas de plusieurs feuilles) d'en affecter à des variables Worksheet, en prenant des noms de variables courts, sinon l'objectif est loupé !

Si on utilise des noms de plage, on peut se passer de la feuille, la plage étant définie dans une feuille...

On peut aussi affecter une plage à une variable Range et travailler avec...

A partir d'une plage, on peut atteindre sa feuille sans avoir à la chercher par son nom : Plg.Worksheet (ou Parent, mais Worksheet est plus parlant...)

J'en oublie sûrement, mais les possibilités de raccourcissement (et qui se combinent à plus de rapidité) ne manquent pas...

Cordialement.

Rechercher des sujets similaires à "passer code classeur"