Eviter le select et le activate possible ?

Bonsoir forum,

Ma question est simple y a t'il une autre solution que d'utiliser ceci ?

Range("A1").Activate
Range("A1").Select

Merci a tous

Bonjour

Dans 99% des cas on peut agir sur une cellule sans l'activer ou la sélectionner.

et dans ce cas ci c'est quoi la formule de remplacement la mieux ? L'idée c'est d'éviter le select.

Range("A1").Select

Bonjour,

Oui à éviter absoluement sauf si c'est la dernière ligne de la macro pour rendre la main à l'utilisateur et qu'il ait une vue optimale sur ta feuille.

Dans le courant de la macro, il y a différentes méthodes... Tout dépend du contexte (ce qui précède et ce qui suit...)

A+

Je vais mettre un exemple concret est ce que ça peu être amélioré ?

If Sheets("Feuil1").Range("E4").Value = "" Then Range("E4").Select

Ce n'est pas suffisant : Si c'est la dernière ligne de ta macro et que tu souhaites rendre la main sur cette cellule pour faire compléter la cellule, ben tu n'as qu'à le laisser... Mais s'il y a d'autres instruction qui suivent, il faut les citer.

De manière générale une macro est toujours tributaire du contexte : Du module dans la quelle elle est implantée (parfois même des autres modules, d'un tas d'autres paramètres...) Ne pas hésiter à fournir toute la macro.

Pour ta macro il y a des dizaines de réponses différentes possibles selon ce que tu veux faire après.

Si on veux décrire une manière courante de contourner pour faire un copier /coller par exemple

Au lieu de dire

Range("A1").Activate
Range("A1").Select
Range("A1").Copy
Range("D1").Activate
Range("D1").Select
Range("D1").Paste

on écrira :

Range("A1").Copy Range("D1")

Mais encore une fois tout dépend de la finalité de ta macro.

Il ne faut pas avoir peur de fournir la totalité d'une macro voire même tout ton classeur c'est comme ça que tu progresseras !

En gros la philosophie générale, c'est comme pour une voiture : Tu ne dis jamais je prends mon trousseau de clef je sélectionne ma clef, je l'insère dans le trou, je tourne ma clef... J'ouvre la porte est bien suffisant ! L'enregistreur de macro fonctionne différemment lui il décrit et décompose toutes tes actions en opérations élémentaires, il te faut donc ensuite garder l'essentiel pour en optimiser le code.

A+

Ok merci pour la réponse

C''est juste pour une histoire de bouton (style activex) qui clignote a chaque fois que la macro est lancé, donc j'essai de déterminer si cela vient de là.

Tu dégaines trop vite j'ai un peu modifiée ma réponse mais l'essentiel était dit.

Là encore c'est un peu radin comme explication, il eut été bien plus rapide de joindre le classeur.

Non ça ne vient pas de là.

Le seul inconvénient des Activate et autres Select est d'alourdir le code et de générer des pertes de telmps dans le déroulement des macros.

Je pense plutôt qu'une instrucrtion

Application.ScreenUpdating = True 

... placé au début de ta macro résoudra le problème.

Ce type de bouton possède une propriété TakeFocsOnClicK par défaut = True Tu devrais la mettre à False.

Mais il ne faut pas que ça t'empêche de chercher à optimiser ton code !

A+

Rechercher des sujets similaires à "eviter select activate possible"