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

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

  • Tableau.xls
    29 KB · Affichages: 174
  • Tableau.xls
    29 KB · Affichages: 178
  • Tableau.xls
    29 KB · Affichages: 176

job75

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

Re, salut Hasco :)

Mon précédent fichier (2) ne permet pas le Copier/Coller.

Ce fichier (3) le permet, voyez s'il vous convient.

A+
 

Pièces jointes

  • Croise SelectionChange(3).xls
    35.5 KB · Affichages: 105

job75

XLDnaute Barbatruc
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+
 

Papou-net

XLDnaute Barbatruc
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

  • Chri8ed.xls
    44 KB · Affichages: 111
Dernière édition:

job75

XLDnaute Barbatruc
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

  • Croise SelectionChange(4).xls
    35.5 KB · Affichages: 117

Chri8Ed

XLDnaute Occasionnel
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
 
G

Guest

Guest
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
 

Chri8Ed

XLDnaute Occasionnel
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. :eek:

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 ?
 

Chri8Ed

XLDnaute Occasionnel
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é
 

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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

  • Croise multisélection(1).xls
    40 KB · Affichages: 50

job75

XLDnaute Barbatruc
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

  • Croise multisélection(2).xls
    40 KB · Affichages: 53

Chri8Ed

XLDnaute Occasionnel
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 :rolleyes:
 

job75

XLDnaute Barbatruc
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

  • Tableau Chri8Ed (1).xls
    51 KB · Affichages: 51

job75

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

Re,

Avec des bordures blanches sur la MFC voici ce que ça donne sur votre fichier.

A+
 

Pièces jointes

  • Tableau Chri8Ed (2).xls
    58 KB · Affichages: 54
Dernière édition:

Chri8Ed

XLDnaute Occasionnel
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
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 799
Membres
101 818
dernier inscrit
tiftouf5757