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

Bonjour (on aime bien se dire bonjour sur XLD),

Installer du VBA par défaut ?? A priori cette question n'a guère de sens.

Sur le fichier qui vous intéresse copiez-collez les macros de mon fichier (10).

Après avoir compris comment elles fonctionnent.

A+
 

anthoYS

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

bonjour le fil,


ce code m'intéresse mais j'aimerai mieux qu'on m'explique en détail, ce qu'il veux dire et ce qu'il fait pour l'adapter à certains de mes tableaux.

or, j'ai tenté, mais en vain, ça marche mais ça ne clignotte pas ni colore en rouge les entêtes, bref, c'est une cata.

j'aimerai bien svp, savoir à quoi correspondent certains chiffres codés du code, à quelles lignes et/ou colonnes ? quelles cellules du tableau ?

Code:
Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim flag As Boolean, zone As Range, cel As Range
If Intersect(Target, [Tableau]) Is Nothing Then Exit Sub
Cancel = True
Efface
If IsError([Inter]) Then
  flag = True '=> pas d'annulation
  Set zone = Target
Else
  flag = Intersect(Target, [Inter]) Is Nothing 'True => pas d'annulation
  Set zone = Union(Target, [Inter])
  ThisWorkbook.Names("Inter").Delete
  If zone.Count = 1 Then Exit Sub
End If
For Each cel In zone
  If cel.Address <> Target.Address Or flag Then
    If IsError([Sel]) Then Set zone = cel Else Set zone = [Sel]
    Intersect([Tableau], Union(zone, cel.EntireRow, cel.EntireColumn)).Name = "Sel"
    If IsError([Inter]) Then Set zone = cel Else Set zone = [Inter]
    Union(zone, cel).Name = "Inter"
  End If
Next
With [Sel]
  .FormatConditions.Delete
  .FormatConditions.Add xlExpression, Formula1:="=OU(LIGNE()=1;COLONNE()=28)"
  .FormatConditions(1).Interior.ColorIndex = 3 'rouge
  .FormatConditions(1).Font.ColorIndex = 2 'blanc
  .FormatConditions(1).Font.Bold = True 'gras
  .FormatConditions.Add xlExpression, Formula1:="=OU(LIGNE()=2;COLONNE()=30)"
  .FormatConditions(2).Interior.ColorIndex = 5 'bleu
  .FormatConditions(2).Font.ColorIndex = 2 'blanc
  .FormatConditions(2).Font.Bold = True 'gras
  .FormatConditions.Add xlExpression, Formula1:=True
  .FormatConditions(3).Interior.ColorIndex = 1 'noir
  .FormatConditions(3).Font.ColorIndex = 2 'blanc
  .FormatConditions(3).Font.Bold = True 'gras
End With
With [Inter]
  .FormatConditions.Delete
  .FormatConditions.Add xlCellValue, xlEqual, "="""""
  .FormatConditions(1).Interior.ColorIndex = 16 'gris foncé
  .FormatConditions.Add xlExpression, Formula1:=True
  .FormatConditions(2).Font.Bold = True 'gras
  '---clignotement---
  affiche = False
  Clignote
End With
End Sub


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If IsError([Sel]) Then Exit Sub
Cancel = True
Efface
ThisWorkbook.Names("Inter").Delete
End Sub


Private Sub Efface()
Application.ScreenUpdating = False
[Tableau].FormatConditions.Delete
[A1:AA1].FormatConditions.Add xlCellValue, xlGreater, 1
[A1:AA1].FormatConditions(1).Font.ColorIndex = 3 'rouge
'[A1:AA1].FormatConditions(1).Font.Bold = True 'gras 'inutile...
If Not IsError([Sel]) Then ThisWorkbook.Names("Sel").Delete
End Sub


ce qui m'interpelle, ce que je ne comprends pas c'est :

> comment créer la plage "Inter" et "Sel" ?

en gros je m'y perds totalement.

merci par avance ;

à
 

job75

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

Bonjour anthoYs,

Comme vous pouvez le voir les macros de ce fichier sont assez compliquées, il a fallu pas mal de temps pour arriver au résultat final.

Il n'est pas question que je vous en explique le principe, et encore moins le code.

Je vous conseille de reprendre le fil dès le début, de tester chaque fichier, et de ne passer au suivant que quand vous l'avez bien compris.

Cela prendra malheureusement pas mal de temps.

A+
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 938
Membres
101 844
dernier inscrit
pktla