Worksheet_selectionchange dans une macro "normale"?

Bonjour à tous ,

J'ai cherché un peu partout et j'ai rien trouvé.

Ce que je cherche à faire :

1. Créer une macro (pour mettre en surbrillance les lignes et colonnes)

2. L'insérer dans mon ruban personnalisé (je suis déjà capable)

Où j'en suis :

1. J'ai le code de la macro, la voici :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Application.ScreenUpdating = False
'Clear all cell colours
Cells.Interior.ColorIndex = 0
With Target
'Row and column highlightingfor the active cell
.EntireRow.Interior.ColorIndex = 19
.EntireColumn.Interior.ColorIndex = 19
End With
Application.ScreenUpdating = True
End Sub

Ce code fonctionne à merveille lorsque on l'insère dans la worksheet. Le problème, c'est que j'aimerais l'enregistrer dans un module. Je pourrais ainsi l'enregistrer comme une macro standard. Cela me permetterait de mettre la macro dans mon ruban et l'utiliser sur différents classeurs.

Avez-vous une idée ?!

Merci à tous !

Bonjour Pinardalec le forum

voilà il faudra que dans tes feuilles tu modifies de la sorte les trois première lignes et dans un module standard tu mets la macro perso

à tester

a+

Papou

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call perso
End Sub

Sub perso()
    Cells.Interior.ColorIndex = 0
    With ActiveCell
        .EntireRow.Interior.ColorIndex = 19
        .EntireColumn.Interior.ColorIndex = 19
    End With
    Application.ScreenUpdating = True
End Sub

Bonjour à tous,

Tu pourrais utiliser la méthode d'application App_SheetSelectionChange

L'avantage c'est qu'elles réagissent sur n'importe que classeur (ouvert ou créé), sans lui ajouter de macro. Non accessibles par défaut, je t'ai préparé un classeur.

Si tu fais une modif il faut relancer le Sub Workbook_Open pour réactiver les méthodes d'application.

Par contre aucune idée de comment ça réagit en xlam.

eric

Bonjour Eriiic le forum

je pense que c'est plutôt cela qu'il souhaite, pour avoir une croix ligne colonne.

a+

Papou

Option Explicit
Private WithEvents App As Application

Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ActiveSheet.Cells.Interior.ColorIndex = xlNone   
        ActiveSheet.Rows(Target.Row).Interior.ColorIndex = 19
        ActiveSheet.Columns(Target.Column).Interior.ColorIndex = 19    
End Sub

Private Sub Workbook_Open()
    'récupérer l'application Excel à l'ouverture
    Set App = Application
End Sub

Je sais bien, j'ai eu la flemme d'adapter pensant qu'il saurait le faire .

J'ai juste mis ce que j'avais déjà réalisé pour une demande (presque) similaire, la partie intéressante étant les événements d'application.

eric

Re erriiic le forum

Ce n'était pas une critique du tout, bonne journée.

Papou

T'inquiète, je ne l'ai pas pris ainsi. J'apprécie toujours tes interventions

C'était pour justifier ma fainéantise...

Rebonjour,

Merci pour vos réponses, c'est très apprécié !!

Donc paritec :

J'ai testé et c'est intéressant, par contre, je dois aller mettre les lignes pour appeler le sous-programme dans chaque nouveau classeur !

eriiic : intéressant aussi ! je constate qu'une fois le classeur ouvert, tout les autres "subissent" le code. Par contre, je dois absolument ouvrir ce classeur en premier.

Voici un exemple :

etat 1

J'ai donc un bouton pour ma macro, accessible au démarrage d'Excel.

etat 2

Quand je clique dessus, ma macro s'effectue (mais ici, j'aimerais que ça soit pour mettre en surbrillance les lignes et colonnes). Faudrais qu'avec le bouton, ça soit comme un on/off.

Avez-vous des suggestions ?!

Gros merci !!

eriiic : intéressant aussi ! je constate qu'une fois le classeur ouvert, tout les autres "subissent" le code. Par contre, je dois absolument ouvrir ce classeur en premier.

Je pensais que tu l'enregistrerais en macro complémentaires *.xlam qu'il soit disponible à l'ouverture.

Comme je ne suis pas un adepte des xlam je n'ai pas testé.

Tu as aussi des répertoires dédiés dont les fichiers s'ouvrent à l'ouverture comme C:\Program Files (x86)\Microsoft Office\Office14\XLSTART

Quand je clique dessus, ma macro s'effectue (mais ici, j'aimerais que ça soit pour mettre en surbrillance les lignes et colonnes).

Tu n'as pas tout lu, Paritec t'a mâché le boulot en dessous.

Faudrais qu'avec le bouton, ça soit comme un on/off.

Il faut donc prévoir 2 macros.

  • une pour basculer une variable en True/False. Mais un fichier xlam n'est pas visible même ouvert, prévoit un raccourci clavier peu utilisé (éviter C, V, X et S au minimum) pour cette bascule.
  • et celle que je t'ai mise à laquelle tu ajoutes une ligne de test de cette variable pour faire ou non le boulot.
Je te laisse chercher un peu, je dois partir...

eric

Re,

le ON/OFF se fait par double-clic sur une cellule quelconque. Tu peux restreindre à une cellule bien précise indiquant ON/OFF si tu préfères.

Désactivé à l'ouverture.

Je préfère conserver l'affichage par une MFC (contrairement à la proposition de paritec) qui présente l'avantage de laisser intactes les mises en forme existantes.

eric

WOW ! Exactement ce que j'avais besoin, et ça fonctionne quand je le met en .xlam !!

Merci x1000000000

Un bonsoir à tous !

Je note avec intérêt que l'on peut disposer en permancence des évènements Application avec une xlam...

Comme Eric je n'utilise pas de xlam (ni même de classeur Perso, je n'ai pas de macros que je voudrais avoir dans tous mes classeurs...)

Bonne soirée.

Rechercher des sujets similaires à "worksheet selectionchange macro normale"