Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Chri8Ed

XLDnaute Occasionnel
Bonjour

Lorsque l’on clique sur N° de ligne cela permet de bien matérialiser cette ligne dans toute sa longueur

Si on clique sur une lettre, cela permet de faire la même chose avec les colonnes
Comme j’ai un tableau avec des colonnes étroites, j’aurais souhaité pouvoir faire les 2 en même temps.

Cela me permettrait au croisement la ligne et de la colonne de pouvoir rapidement localiser la cellule et surtout de ne pas faire d’erreur.

Ce n’est évidement pas possible de base, mais avec une macro ???

Je joins un petit tableau pour l’exemple

Merci si quelqu’un à une idée
 

Pièces jointes

Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Re,

Ah oui, je n'avais pas compris Pierrot qui pleure.

Avec des tableaux colorés l'histoire de ma couleur de fond noire ne va pas du tout.

Il faut que ce soit une couleur de MFC, et là ce n'est pas évident...

A+
 
Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Bonsoir Chri8ed, les participants et tous les autres,

Ci-joint une solution,tirée par les cheveux certes, mais qui respecte les couleurs des cellules. Ca fonctionne pour les colonnes de A à AZ.

Espérant avoir contribué.

Cordialement.

Edit : Aïe, je crois que je n'ai pas compris le fond du problème. Je mets en évidence la ligne et la colonne de la cellule sélectionnée, or c'est le contraire qui est attendu. Au temps pour moi.
 

Pièces jointes

Dernière édition:
Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Re, salut à toi Papou-net 🙂

Il faut que ce soit une couleur de MFC, et là ce n'est pas évident...

Eh bien si, presqu'évident :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ref As Range
Cells.FormatConditions.Delete
On Error Resume Next
Set ref = Intersect(Target.Areas(1), Target.Areas(2))
If ref.Count > 1 Then Exit Sub
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="VRAI"
Selection.FormatConditions(1).Interior.ColorIndex = 1 'noir
ref.FormatConditions.Delete
ref.FormatConditions.Add Type:=xlExpression, Formula1:="VRAI"
ref.FormatConditions(1).Interior.ColorIndex = 3 'rouge
End Sub
Et bien sûr aucun problème pour le Copier/Coller.

Pierrot qui re-rit, fichier (4).

A+
 

Pièces jointes

Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Bonjour Papou-Net

Merci à toi aussi

Edit : Aïe, je crois que je n'ai pas compris le fond du problème. Je mets en évidence la ligne et la colonne de la cellule sélectionnée, or c'est le contraire qui est attendu. Au temps pour moi.

En fait c'est les deux, mettre en évidence la ligne et la colonne, ainsi que la cellule au croisement des deux

Ton idée semble bonne, mais personnellement (C'est vrai que je n'ai pas de bon yeux) la visualisation de la ligne et de la colonne n'est que peux visible
 
Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

re,

Une autre méthode qui peut être combinée avec les précédentes.
Elle encadre les Lignes/Colonnes d'un rectangle(shape)
Je n'ai pas 'compacté' le code pour plus de lisibilité
Le tableau est ici nommé 'Table2'
Code:
'A mettre dans le module de code de la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("Table2")) Is Nothing Then Encadrer Target
End Sub
 
'Cette macro peut être déplacée dans un module de code.
Sub Encadrer(Target As Range)
    Dim PlageH As Range, PlageV As Range
    Dim h_Shape As Shape
    
    'Target.Parent = la feuille de Target
    
    With Target.Parent
        'Délimiter les intersections Ligne et colonne avec la Table2
        Set PlageH = Intersect(.Rows(Target.Row).EntireRow, .Range("Table2"))
        Set PlageV = Intersect(.Columns(Target.Column).EntireColumn, .Range("Table2"))
    End With
    
    'Testé si un Shape "EncadrementH" "Existe Déjà"
    On Error Resume Next
    
    Set h_Shape = Target.Parent.Shapes("EncadrementH")
    On Error GoTo 0
    With PlageH
        If h_Shape Is Nothing Then
            Set h_Shape = Target.Parent.Shapes.AddShape(msoShapeRectangle, .Left, .Top, .Width, .Height)
            h_Shape.Name = "EncadrementH"
            h_Shape.Fill.Visible = msoFalse
        Else
            h_Shape.Left = .Left
            h_Shape.Top = .Top
            h_Shape.Width = .Width
            h_Shape.Height = .Height
        End If
    End With
    
    
    Set h_Shape = Nothing
    
    'Faire la même chose pour l'encadrement vertical
    On Error Resume Next
    Set h_Shape = Target.Parent.Shapes("EncadrementV")
    On Error GoTo 0
    With PlageV
        If h_Shape Is Nothing Then
            Set h_Shape = Target.Parent.Shapes.AddShape(msoShapeRectangle, .Left, .Top, .Width, .Height)
            h_Shape.Name = "EncadrementV"
            h_Shape.Fill.Visible = msoFalse
        Else
            h_Shape.Left = .Left
            h_Shape.Top = .Top
            h_Shape.Width = .Width
            h_Shape.Height = .Height
        End If
    End With
End Sub

A+ à tous
 
Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Merci Job75

Eh bien Oui !, Pierrot rit 😉

C'est parfait le copier-coller, la visualisation des lignes et des colonnes, La cellule au croisement. 😱

Je viens de me rendre compte que l'on peut sélectionner plusieurs colonnes et lignes
Par contre bizarrement, il n'y a que la la cellule du premier croisement qui est matérialisée ?
 
Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Merci Hasco

J'ai trouvé pour l'épaisseur de la bordure

Par contre, je n'arrive pas à intégrer ta macro

'A mettre dans le module de code de la feuille
Cale veut dire dans la feuille du VBAProject ou dans un modue ?

'Cette macro peut être déplacée dans un module de code.
Là je suppose que c'est dans un module et non dans la feuille

J'ai essayé un peu tout, mais je me retrouve avec une erreur d'exécution 1004
"La méthode 'Range' de l'objet '_Worsheet' a échoué
 
Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Par contre bizarrement, il n'y a que la la cellule du premier croisement qui est matérialisée ?

C'est normal puisque la macro ne considère que 2 zones : .Areas(1) et .Areas(2).

Avec 3 zones ou plus il faut déterminer toutes les intersections en étudiant toutes les combinaisons des zones prises 2 à 2.

Je n'ai plus le temps ce soir, je pense pouvoir faire ça demain.

A+
 
Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Bonjour le fil, le forum,

Voici donc pour les intersections d'un nombre quelconque de lignes ou colonnes.

Cette fois je me suis préoccupé de savoir si les sélections sont bien des lignes ou colonnes :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ac%, rc&, rc1&, rc2&, cc%, cc1%, cc2%, i%, j%
Dim a1 As Range, a2 As Range, ref As Range, inter As Range, sel As Range
ac = Target.Areas.Count: rc = Rows.Count: cc = Columns.Count
For i = 1 To ac - 1
 Set a1 = Target.Areas(i)
 rc1 = a1.Rows.Count: cc1 = a1.Columns.Count
 For j = i + 1 To ac
   Set a2 = Target.Areas(j)
   rc2 = a2.Rows.Count: cc2 = a2.Columns.Count
   If rc1 = 1 And cc1 = cc And rc2 = rc And cc2 = 1 Or _
     rc1 = rc And cc1 = 1 And rc2 = 1 And cc2 = cc Then
     Set ref = Intersect(a1, a2)
     Set inter = Union(IIf(inter Is Nothing, ref, inter), ref)
     Set sel = Union(IIf(sel Is Nothing, a1, sel), a1, a2)
    End If
  Next
Next
Application.ScreenUpdating = False
Cells.FormatConditions.Delete
If inter Is Nothing Then Exit Sub
sel.FormatConditions.Add xlExpression, Formula1:=True
sel.FormatConditions(1).Interior.ColorIndex = 1 'noir
inter.FormatConditions.Delete
inter.FormatConditions.Add xlExpression, Formula1:=True
inter.FormatConditions(1).Interior.ColorIndex = 3 'rouge
End Sub
Nouveau fichier joint.

A+
 

Pièces jointes

Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Re,

Juste un petit test pour ne pas toujours figer (et mettre à jour) l'écran :

Code:
If ac > 1 Then Application.ScreenUpdating = False
Fichier (2).

J'en profite pour remercier Chri8Ed pour ce fil très pertinent et intéressant.

Je vais lui mettre des étoiles et des Likes 🙂

A+
 

Pièces jointes

Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Bonjour JOB75

A nouveau merci, merci

Pour les étoiles, c'est plutôt à toi quelles reviennent !

Je crois que l'on maintenant au Top 🙂

J'ai juste essayé de rajouter hier soir un petit plus
En mettant une couleur pastel au lieu du gris pour les lignes et les colonnes (Ça c'est facile)
Et en ajoutant une bordure épaisse en couleur (Mais là je butte !!)

Logiquement on doit bien pouvoir adjoindre une bordure en plus de la couleur 🙄
 
Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Re Chri8Ed,

Par MFC on ne peut mettre qu'un type de bordures continues (fines).

Pour connaître le code adéquat il suffit d'utiliser l'enregistreur de macro en appliquant une MFC.

J'ai testé ma macro sur votre fichier et lui ai ajouté une police blanche.

Ainsi on voit les valeurs...

Fichier joint.

A+
 

Pièces jointes

Re : Matérialisé une cellule aux croisement d'une ligne et d'une colonne

Merci

En fait avec la police blanche, c'est très bien et très voyant

J'ai rajouté la police en Gras pour que cela soit encore plus voyant

Avec la bordure, si cela provoque un entoure de chaque bordure, c'est pas terrible
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour