Te citer ne veut pas nécessairement dire que je suis en désaccord avec toi. D'ailleurs je pourrais tout aussi bien ne pas te citer et être en désaccord tout de même ou bien être d'accord sans pour autant te citer. Là il se trouve que je suis d'accord sur le fait qu'il faut préciser dès qu'une confusion est possible le classeur sur lequel on travaille si plusieurs classeurs sont ouverts ou même si l'on travaille sur plusieurs classeurs
Vu que l'utilisateur est souverain et ouvre autant de classeur qu'il veut sans que la macro ne le sache, autant préciser tout le temps.
Cependant j'ajoute une nuance : ActiveWorkbook ou ActiveSheet peuvent être utilisés sans problème si l'on travaille sur un seul classeur sous réserve de s'assurer qu'un seul classeur soit ouvert et permettent d'utiliser la macro sur plusieurs classeurs. En effet, si je souhaite utiliser ma macro sur plusieurs classeurs (non ouverts en même temps) sur des classeurs dont je ne connais pas forcément le nom à l'avance et qui même n'existent pas encore l'utilisation de ActiveWorkbook est très pratique. Jusque là je n'ai pas rencontré de problème en l'utilisant et pourvu qu'on prenne des précautions en programmant de manière systématique il ne va pas se produire n'importe quoi en lançant une macro.
Le jour ou tu feras une macro avec un traitement de plusieurs 10ène de secondes ou que ta session d'excel va se mettre à ramer pour une raison x. L'utilisateur va vouloir cliquer un peu partout, ouvrir un autre classeur pour continuer à bosser pendant que ça "tourne" et bim.
La plupart des gens qui viennent demander de l'aide ici sont débutant donc autant qu'ils prennent les bonne habitude de suite et mettent en place des automatismes . Préciser Classeur Feuille range en est à mon avis un TRES important. Tu sembles visiblement très aguerrie en programmation et tu arrives donc à prendre en compte au file de l'eau les problèmes mais met toi à la place de ceux qui débutent et plutôt que de les inciter à prendre des habitudes les obligeant par la suite à contrôler tous un tas de paramètres qu'il est de plus très difficile à maitriser (nombre de classeur ouvert par exemple, à quel moment faire le test? En début de macro? mais si le traitement est plus long que prévu, qu'est ce qui empêche d'ouvrir d'autres classeurs?).
Il m'arrive de les utiliser mais il faut vraiment que j'y sois contraint et forcé. Le seul cas qui me vient en tête c'est lors de la copie d'une feuille vers un autre classeur. Copy ne renvoi pas l'objet worksheet de destination et oblige donc à utiliser activeworksheet. Mais je le fait à contre coeur à chaque fois.
Pour éviter tout problème, on peut fermer les autres classeurs que le classeur à modifier en demandant à l'utilisateur s'il veut les sauvegarder par exemple. On peut également demander à l'utilisateur de sélectionner le classeur ou la feuille à modifier ou de renseigner leurs noms.
Ça n'est pas ma politique. L'utilisateur est souverain, c'est le programmeur qui doit faire en sorte de parer à des "écarts" d'utilisations. En ce qui me concerne, je pense que bien programmer c'est ça. Faire un programme qui suit l'utilisateur et pas un programme qui le cantonne dans un couloir. Mais chacun sa vision des choses.
Ce ne sont que des propositions. Il y a d'autres manières de faire. Par exemple ne modifier que les classeurs dont le nom comporte telle chaîne, portion de chaîne ou extension.
Ça revient bien à préciser sur quel(s) classeur(s) on travailles. Non?
Je répète donc que je ne cite pas pour te corriger, mais pour dire qu'il y a d'autres manières de faire. Utiliser les codenames ou les noms des feuilles (si on les connaît à l'avance) est une bonne idée (et je le fais moi-même) mais encore une fois il y a plusieurs manières de faire et il est important de le dire.
Il y a plusieurs manière de faire en effet dont certaines mènent, à mon avis, à des problèmes un jour ou l'autre.
Tu sais je ne dis pas ça pour t'agresser, je dis ça parce que ça fait maintenant un paquet d'année que je fais du code sur Excel et des soucis, j'en ai eu.
Des macros que j'ai mal écrites et qui m'ont bouffées des données sur d'autre classeurs j'ai déjà fait et si je peux l'éviter à d'autre en leur expliquant qu'on précise toujours sur quel classeur on travailles,je le répèterais autant de fois qu'il le faut. Et je serais vent debout contre les personne qui tiennent un discours disant qu'il suffit de tester "si y'a plusieurs classeurs", "si la macro est trop rapide pour qu'on puisse changer de classeur", "si...."
Autant faire simple, préciser le classeur ça coute 2 lignes de code avec un with ou avec une variable worksheet, pourquoi s'en priver.
++
Qwaz
Partager