Surbrillance Ligne et Colonne de la Cellule active

Bonjour,
Je souhaite lancer à partir d'un bouton une macro qui me colorie en jaune la ligne et la colonne de la cellule sélectionnée et une fois la cellule désélectionnée, la couleur initiale est restaurée (sans aucune modification du format). Comme le fait exactement l'utilitaire Kutool que je n'ai pas la possibilité d'installer car je travaille sur un PC pro sans droit administrateur.

j'ai trouvé une partie de la réponse à ma question dans un sujet du forum le lien ici

https://forum.excel-pratique.com/excel/surbrillance-ligne-et-colonne-de-la-cellule-active-147151

et voici le code qui répond partiellement à ma préoccupation.

Private Sub Worksheet_Change(ByVal Target As Range)
Set champ = [A1:F30]
 If Not Intersect(champ, Target) Is Nothing And Target.Count = 1 Then
   Application.EnableEvents = False
    Union(Cells(Target.Row + 1, 1).Resize(1, champ.Columns.Count), _
      Cells(1, Target.Column).Resize(champ.Rows.Count, 1)).Select
   Target.Offset(1, 0).Activate
   Application.EnableEvents = True
 End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set champ = [A1:F30]
If Not Intersect(champ, Target) Is Nothing And Target.Count = 1 Then
    Application.EnableEvents = False
    Union(Cells(Target.Row, 1).Resize(1, champ.Columns.Count), _
      Cells(1, Target.Column).Resize(champ.Rows.Count, 1)).Select
    Target.Activate
    Application.EnableEvents = True
 End If
End Sub

J'ai pu agrandir le champ pour mon besoin, et maintenant je voudrais pouvoir avoir un bouton pour activer ou désactiver la macro.

Car si la macro est activée en permanence je ne peux plus colorier une case spécifique.

je joins un fichier

28classeur1.xlsm (18.06 Ko)

d'avance merci de votre aide,

Bonjour

Pourquoi voulez-vous colorier 1000000 de lignes et 32000 colonnes ?

La plage concernée est A1 à F30 ?
Ensuite êtes-vous sûr d'être limité à cette plage ou cela peut grandir ?

Crdlt

@Dan 32.000 colonnes ?

Bonjour et merci de l’intérêt porté sur mon sujet,

Le initiale proposé était trop petit j'ai mis celui la parce qu'il est préférable d'avoir un champ trop grand plutôt que trop petit.

En réalité mon tableau aura beaucoup de ligne et de colonne pas 100000 certes mais plus de 30000 sûrement.

@BsAlv : Oups mes doigts ont fourché 16000 colonnes (et pas 30000.....)

Si vous savez combien de colonnes max ce serait bien ou tout au moins savoir quelle est la ligne qui contient les titres de votre tableau

Regardez le fichier joint que j'avais réalisé il y a des années (2006... c'est loin çà..).

Je l'avais aussi posté chez mes amis veriti --> http://excel.veriti.net/modules/publisher/item.php?itemid=18&keywords=couleur
Ppar contre il ne faut pas le coller dans un module mais bien dans la feuille. C'est une erreur postée par l'admin

Dites moi

@Dan;

Le fichier que vous avez mis ne convient pas parce que:

1-Il n' y a pas de bouton de lancement,

2-Il supprime le format initiale (couleur, ...) de la cellule

3- Il ne prend pas en compte la colonne de la cellule sélectionnée.

Si vous savez comment je peux faire pour lancer ce code avec un bouton qui on/off ce serait parfait

J'ai joins un fichier en exemple.

pour le champ: 35000 lignes et 10000 colonnes ferait l'affaire

Private Sub Worksheet_Change(ByVal Target As Range)
Set champ = [A1:F30]
 If Not Intersect(champ, Target) Is Nothing And Target.Count = 1 Then
   Application.EnableEvents = False
    Union(Cells(Target.Row + 1, 1).Resize(1, champ.Columns.Count), _
      Cells(1, Target.Column).Resize(champ.Rows.Count, 1)).Select
   Target.Offset(1, 0).Activate
   Application.EnableEvents = True
 End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set champ = [A1:F30]
If Not Intersect(champ, Target) Is Nothing And Target.Count = 1 Then
    Application.EnableEvents = False
    Union(Cells(Target.Row, 1).Resize(1, champ.Columns.Count), _
      Cells(1, Target.Column).Resize(champ.Rows.Count, 1)).Select
    Target.Activate
    Application.EnableEvents = True
 End If
End Sub

Edit modo : fichier supprimé. Identique à celui posté en premier

Pourquoi remettez vous votre fichier ? il n'y a rien de changé par rapport à votre demande inutile (je le supprime du site. Inutile d'alourdir le forum).

D''ailleurs le code aussi est identique....


Car si la macro est activée en permanence je ne peux plus colorier une case spécifique.

Si que vous pouvez, mais ce que vous voulez c'est colorier la cellule active ?
En gros colorier la cellule lors de la sélection.

Pourquoi vouloir colorier la ligne et la colonne pour aller mettre une couleur dans la cellule active ? (si j'ai bien compris votre demande...)

@Dan;
Non il ne s'agit pas de colorier la cellule active mais de mettre en évidence par une couleur, un format en gras, une sélection.... la ligne et la colonne de la cellule sélectionnée. Cette mise en évidence ne doit avoir aucun impact sur le format de la ligne et de la colonne, c'est à dire que lorsque je sélectionne une nouvelle cellule, la ligne et la colonne précédemment mise en évidence doit retrouver son format initiale, comme le fait Kutool.

Dans le code du fichier j'ai joins, il sélectionne la ligne et la colonne de la cellule sélectionnée. Le code de ce fichier me convient sauf que je veux pouvoir le lancer manuellement un bouton qui fait On/Off (On macro lancée, Off macro arrêtée) ou deux boutons avec l'un qui lance et l'autre qui désactive la macro.

immages

En esperant que c'est plus claire maintenant

Le code que vous postez ne fait que sélectionner ligne et colonne de la cellule sélectionnée
Il n'y a pas de couleur et format de mise en gras
Mais bon, vu que voulez votre bouton je ne vais pas modifier le code que je vous ai proposé qui lui le ferait automatiquement

- Supprimez les deux codes que vous avez proposé
- dans l'editeur VBA, allez ajouter un module via le menu INSERTION
- collez le code ci-dessous

Dim onoff As Boolean
Sub test()
Dim champ As Range

Set champ = Range("A1:DC10000")

If Not Intersect(ActiveCell, champ) Is Nothing Then
    With ActiveCell
        If onoff = True Then
            Union(Cells(.Row + 1, 1).Resize(1, champ.Columns.Count), _
            Cells(1, .Column).Resize(champ.Rows.Count, 1)).Select
            .Offset(1, 0).Activate
            onoff = False
        Else: ActiveCell.Select: onoff = True
        End If
    End With
End If
End Sub

- Click droite sur votre bouton puis choisir "Associer à une macro" et sélectionnez la macro test

Attention la déclaration DIM onOff doit être placé en première ligne dans votre module

Le bouton agit comme un ON/OFF.

Si ok pensez à


EDIT : si intérêt j'ai modifié le code que je vous ai proposé dans mon fichier. Il vous colorie ligne et colonne de la cellule sélectionnée dans la plage désirée

@Dan;

Merci beaucoup pour tes efforts,

je pense qu'on se rapproche du but.

J'ai pu ajouter le bouton sauf que la macro marche quand je sélectionne une cellule et je clique sur le bouton et quand je clique sur une autre cellule la macro ne marche plus. Je souhaite que lorsque je clique sur le bouton la macro se lance et ne s’arrête que lorsque je clique à nouveau sur le bouton.

Je souhaite que lorsque je clique sur le bouton la macro se lance et ne s’arrête que lorsque je clique à nouveau sur le bouton.

Vous avez demandé que la macro s'arrête en recliquant sur le bouton. C'est ce que fait le code fait

Le processus :

1. Sélectionnez B1
2. cliquez sur le bouton pour exécuter le code
3. Recliquez dessus pour l'arrêter
4. Sélectionnez une autre cellule et refaite le point 2 puis 3


Edit : ok je pense avoir trouvé une solution

1. Dans le module, remplacez tout le code que je vous ai donné par celui ci-dessous

Public onoff As Boolean
Sub test()

With ActiveSheet.Shapes(Application.Caller).DrawingObject
    If .Caption = "OFF" Then
        .Caption = "ON"
        onoff = True
    Else:
        .Caption = "OFF"
        onoff = False
    End If
End With
End Sub

2. Dans la feuille, remettez le code ci-dessous

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim champ as range
If onoff = True Then
    Set champ = range("A1:DC10000")
    If Not Intersect(champ, Target) Is Nothing And Target.Count = 1 Then
        Application.EnableEvents = False
        Union(Cells(Target.Row, 1).Resize(1, champ.Columns.Count), _
          Cells(1, Target.Column).Resize(champ.Rows.Count, 1)).Select
        Target.Activate
        Application.EnableEvents = True
     End If
End If
End Sub

Utilisation :
Quand le bouton est ON, vous utilisez la sélection. Si vous recliquez sur le bouton il passera OFF

REM : j'ai laissé l'instruction application.enableevents que j'évite toujours pour les problèmes qu'elle pose si vous avez un plantage en cours d'exécution.

@Dan;

Je souhaite que lorsque je lance le code depuis le bouton, la macro s'exécute et reste active.

elle doit fonctionner jusqu'à ce que je clique à nouveau sur le bouton (pas forcément le même bouton d'ailleurs) et elle se désactive.

Le processus :

1. Sélectionnez B1

2. cliquez sur le bouton pour exécuter le code

3. Recliquez dessus pour l'arrêter

4. Sélectionnez une autre cellule et refaite le point 2 puis 3

Dans le processus que tu as décris ci-dessus

Le problème se trouve entre l'etape 2 et 3. En effet, la macro s'arrete toute seule après une seule exécution.

En Pj un fichier avec la macro que vous m'avez faite. ce qui fait défaut c'est que la macro se désactive toute seule après une exécution.

Edit : fichier supprimé

Comme déjà demandé éviter de me replacez votre fichier.
Nul besoin puisque j'ai déjà le votre et si je vous donne le code c'est ce que je l'ai testé pour la solution que je vous propose

Le problème se trouve entre l'etape 2 et 3. En effet, la macro s'arrete toute seule après une seule exécution.

Par contre je ne pense pas que vous avez testé ce que je viens de vous donner dans l'EDIT de mon post précédent ? --> https://forum.excel-pratique.com/s/goto/1157788

Bonsoir,

Autre possibilité

Bonjour,

Merci infiniment pour votre aide @Dan et @Modus57

Vos deux codes Répondent à mon besoin et je vous remercie. Vous avez su me comprendre malgré mes explications laborieuses .

je clos le sujet et je vous souhaite une excellente journée.

Sans vous j'y serai pas arrivé, merci encore.

Rechercher des sujets similaires à "surbrillance ligne colonne active"