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

Chri8Ed

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

Non merci

C'était juste pour savoir
Dans le cas présent, je n'en ai pas besoin pour ce tableau

Je ne connais pas cette méthode ADD, et mes connaissances ne me permettrait sans doute pas d'aller au bout

Il y a une chose qui me rendrait grand service, si elle réalisable sans tout remettre en cause

Au lieu d'activer les colonnes en grisé, dès que l'on a cliqué sur une colonne, puis sur une ligne, est-ce qu'il serait possible d'activer ce grisé dès que l'on clique seulement sur la colonne, sans attendre de devoir cliqué sur une ligne

Une fois cette colonne grisée, il serait plus facile de localiser les cellules comportant un nombre et de choisir alors d'activer une ligne
 

job75

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

Re,

Ce qu'il y a de bien chez vous Chri8Ed c'est que vous allez très logiquement au fond des choses.

Donc encore un Like au post #62 :)

J'ai dû revoir plusieurs points de la macro, mais ça en valait la peine.

Voici donc la macro, je pense définitive :

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, sel As Range
Static memsel As Range 'variable mémorisée
Set Inter = Nothing 'réinitialisation de la variable Public
If t Then Application.OnTime t, "Clignote", , False 'arrête le clignotement
t = 0
ac = Target.Areas.Count: rc = Rows.Count: cc = Columns.Count
For i = 1 To ac
  Set a1 = Target.Areas(i)
  rc1 = a1.Rows.Count: cc1 = a1.Columns.Count
  If rc1 = rc And cc1 = 1 Or rc1 = 1 And cc1 = cc Then _
    Set sel = Union(IIf(sel Is Nothing, a1, sel), a1)
  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)
      If ref <> "" Then Set Inter = Union(IIf(Inter Is Nothing, ref, Inter), ref)
    End If
  Next
Next
If ac = 1 And Not memsel Is Nothing Then
  Application.ScreenUpdating = False
  Cells.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...
End If
Set memsel = sel 'mémorise
If Not sel Is Nothing Then
  Application.ScreenUpdating = False
  sel.FormatConditions.Delete
  sel.FormatConditions.Add xlExpression, Formula1:="=OU(LIGNE()=1;COLONNE()=28)"
  sel.FormatConditions(1).Interior.ColorIndex = 3 'rouge
  sel.FormatConditions(1).Font.ColorIndex = 2 'blanc
  sel.FormatConditions(1).Font.Bold = True 'gras
  sel.FormatConditions.Add xlExpression, Formula1:=True
  sel.FormatConditions(2).Interior.ColorIndex = 1 'noir
  sel.FormatConditions(2).Font.ColorIndex = 2 'blanc
  sel.FormatConditions(2).Font.Bold = True 'gras
End If
If Not Inter Is Nothing Then
  Inter.FormatConditions.Delete '2 lignes inutiles sur Excel 2003
  Inter.FormatConditions.Add xlExpression, Formula1:=True
  Inter.FormatConditions(1).Font.Bold = True 'gras
  '---clignotement---
  Clignote
End If
End Sub
J'ai donné un nouveau nom au fichier joint, il correspond mieux à son contenu.

A+
 

Pièces jointes

  • MFC sur sélection lignes et colonnes(1).xls
    73.5 KB · Affichages: 94

Chri8Ed

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

Merci pour les likes .

Pour vous une couronne
car c'est super :)

Question visibilité, c'est le top
C'est vrai que cela en valait la peine,
C'eût été dommage de s'en priver :rolleyes:

Pour moi par contre pas de couronne
Je m'y suis essayé sans succès
Je pensais que en rajoutant :confused:
sel.FormatConditions.Add xlExpression, Formula2:="=OU(LIGNE()=2;COLONNE()=29)"
sel.FormatConditions(3).Interior.ColorIndex = 5
sel.FormatConditions(3).Font.ColorIndex = 2 'blanc

Mais non c'est pas ça
C'est pas grave, c'était juste pour essayer

Encore de pleins de merci
 

job75

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

Re,

Tiré de l'aide VBA sur Excel 2003 :

Add, méthode

Méthode Add telle qu'elle s'applique à l'objet FormatConditions.

Cette méthode ajoute un nouveau format conditionnel. Elle renvoie un objet FormatCondition qui représente le nouveau format conditionnel.

expression.Add(Type, Operator, Formula1, Formula2)

expression Obligatoire. Expression qui renvoie un objet FormatConditions.

Type Argument de type XlFormatConditionType obligatoire. Indique si le format conditionnel est basé sur la valeur d'une cellule ou sur une expression.

XlFormatConditionType peut être l'une des constantes XlFormatConditionType suivantes.
xlCellValue Le format conditionnel est basé sur la valeur d'une cellule.
xlExpression Le format conditionnel est basé sur une expression.

Operator Argument de type Variant facultatif. Opérateur du format conditionnel. Il peut s'agir de l'une des constantes XlFormatConditionOperator suivantes : xlBetween, xlEqual, xlGreater, xlGreaterEqual, xlLess, xlLessEqual, xlNotBetween ou xlNotEqual. Si Type a la valeur xlExpression, l'argument Operator est ignoré.

Formula1 Argument de type Variant facultatif. Valeur ou expression associées au format conditionnel. Il peut s'agir d'une valeur constante, de la valeur d'une chaîne, d'une référence de cellule ou d'une formule.

Formula2 Argument de type Variant facultatif. Valeur ou expression associées au second élément du format conditionnel lorsque l'argument Operator a la valeur xlBetween ou xlNotBetween (sinon, l'argument est ignoré). Il peut s'agir d'une valeur constante, de la valeur d'une chaîne, d'une référence de cellule ou d'une formule.

Bonne soirée.
 

Chri8Ed

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

Bonjour

Merci pour l'aide sur la méthode

En fait, j'avais mis "Formula2" au pif, pensant à "MFC N°2" :confused:

Car si je remets

Code:
  sel.FormatConditions.Add xlExpression, Formula1:="=OU(LIGNE()=2;COLONNE()=30)"
  sel.FormatConditions(1).Interior.ColorIndex = 5
  sel.FormatConditions(1).Font.ColorIndex = 2 'blanc
  sel.FormatConditions(1).Font.Bold = True 'gras

La 2ème MFC est ignorée au mieux ou au pire cela bloque tout

En fait ce que je n'ai pas trouvé, c'est comment joindre une nouvelle condition

J'ai pensé que le "FormatConditions(1)" pouvait être lié au nombre de condition
mais c'est pas ça, car je mets "FormatConditions(3)", cela plante totalement :mad:
 

job75

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

Bonjour Chri8Ed, le forum,

Sur cette macro "définitive", il y a quand même 2 compléments à ajouter :rolleyes:

1) Si l'on enregistre et ferme le fichier sur la sélection d'une ligne ou d'une colonne, pour que la MFC puisse s'effacer, mettre dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
Set memsel = Feuil1.[A1] 'CodeName de la feuille
End Sub
La variable memsel est déclarée Public dans Module1.

2) Pour permettre le Couper/Copier/Coller d'une ligne ou d'une colonne :

Code:
If Application.CutCopyMode Then Exit Sub 'pour le Couper/Copier/Coller
au début de la macro.

Fichier (2)

A+
 

Pièces jointes

  • MFC sur sélection lignes et colonnes(2).xls
    78.5 KB · Affichages: 85

job75

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

Re,

N'oubliez pas mon post #68.

Concernant votre post #67, je pensais que vous y arriveriez seul :

Code:
If Not sel Is Nothing Then
  Application.ScreenUpdating = False
  sel.FormatConditions.Delete
  sel.FormatConditions.Add xlExpression, Formula1:="=OU(LIGNE()=1;COLONNE()=28)"
  sel.FormatConditions(1).Interior.ColorIndex = 3 'rouge
  sel.FormatConditions(1).Font.ColorIndex = 2 'blanc
  sel.FormatConditions(1).Font.Bold = True 'gras
  sel.FormatConditions.Add xlExpression, Formula1:="=OU(LIGNE()=2;COLONNE()=30)"
  sel.FormatConditions(2).Interior.ColorIndex = 5 'bleu
  sel.FormatConditions(2).Font.ColorIndex = 2 'blanc
  sel.FormatConditions(2).Font.Bold = True 'gras
  sel.FormatConditions.Add xlExpression, Formula1:=True
  sel.FormatConditions(3).Interior.ColorIndex = 1 'noir
  sel.FormatConditions(3).Font.ColorIndex = 2 'blanc
  sel.FormatConditions(3).Font.Bold = True 'gras
End If
L'ordre des conditions permet de les hiérarchiser.

Sur Excel 2003 on ne peut pas créer plus de 3 conditions MFC.

Fichier (3).

A+
 

Pièces jointes

  • MFC sur sélection lignes et colonnes(3).xls
    78.5 KB · Affichages: 79

Chri8Ed

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

Re,

Je ne comprends pas c'est ce j'avais mis dès le départ
et cela plantait la macro, je me retrouvais en plus avec des cellules rouges et bleues un peu partout

J'ai du faire une erreur, mais laquelle :confused::confused:

J'ai donc chercher ailleurs, alors que j'étais sur la bonne piste :mad:

Merci encore pour ce coup de main
Quand on ne maitrise pas, la moindre erreur de frappe c'est galère !
D'où la chance d'avoir une aide si dévouée

Merci
 

Chri8Ed

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

Re,

Concernant votre post 68

Je ne saisi pas bien sa portée

1) Si l'on enregistre et ferme le fichier sur la sélection d'une ligne ou d'une colonne, pour que la MFC puisse s'effacer, mettre dans ThisWorkbook :

J'ai bien remarqué que si l'on ferme et sauvegarde le tableau avec des colonnes et lignes matérialisées, on les retrouve présentes au chargement suivant

Elles disparaissent dès que l'on active une quelconque cellule (bien que parfois il faut activer 2 ou 3 cellules avant qu'elles disparaissent)

Je n'ai pas trouvé cela très génant

Mais si c'est bien la portée de cette modification ?, cela reste de même avec cette modification !

Ou peut-être que je n'ai pas bien compris ?

Pour permettre le Couper/Copier/Coller d'une ligne ou d'une colonne

Avec ou sans cette correction, je peux très bien copier/couper/coller une ligne ou une colonne.
 

job75

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

Re,

La fatigue du matin ou Excel 2010 :confused:

Essayez donc avec mon fichier (1) les 2 manips :

- sélectionner une ligne, enregistrer, fermer, rouvrir le fichier : la MFC ne s'efface plus

- sélectionner une ligne, Copier, sélectionner n'importe quoi => Coller impossible.

Edit : testé sur Excel 2010 : le Coller reste possible.

Donc sur Excel 2010 on peut se passer de If Application.CutCopyMode...

Pas sur Excel 2003.

A+
 
Dernière édition:

thri

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

Bonjour à vous tous,
Juste un fichier que m'a transmit Gaetan Mourmant c'est lui l'auteur, la macro s'appelle REPERE, vous devez peut-être la connaître, voir la macro en feuil1. Je me permets de vous la soumettre, elle est dispo sur son site.
A+ thri
 

Pièces jointes

  • repère.xlsm
    16.8 KB · Affichages: 99

job75

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

Bonjour thri,

Je vais faire une remarque générale - désolé, elle s'applique aussi à la solution d'Hasco :)

Vous ne coyez pas qu'avoir cet effet sur une feuille chaque fois qu'on sélectionne une cellule c'est particulièrement agaçant ???

Il vaut mieux une macro qui fonctionne quand on sélectionne une ligne ou une colonne entière.

C'est quand même moins fréquent :cool:

A+
 
G

Guest

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

Re,

Arf...Job:D, celui que je sens agacé, ne serais-ce pas toi?:D T'inquiète, je suis seulement aller jusqu'au bout de ma proposition de départ et répondu à une question la concernant. Certes un peu tard, je te l'accorde.

Pour ma part je n'utilise pas ce genre de moyen, perturbant plus qu'autre chose. Il y a tellement d'autre façon de mettre en valeur des données dans excel.

A+++
 

Chri8Ed

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

Re, Job75

Concernant les manips
Je ne suis pas sûr d'avoir bien compris, je fait donc le détail :

Moi je suis sous 2007 et je n'ai pas 2010

- sélectionner une ligne, enregistrer, fermer, rouvrir le fichier : la MFC ne s'efface plus

C'est vrai la MFC ne s'efface pas, mais elle ne s'effaçait pas non plus avant :confused:

- sélectionner une ligne, Copier, sélectionner n'importe quoi => Coller impossible.

Le coller est et a toujours été possible, maintenant et avec les versions antérieures
sauf peut-être avec les premières, car c'est vrai que cela a pas mal évolué ! :eek:
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 838
dernier inscrit
Christelle.B86