Selectionner seulement la ligne, pas la colonne en SelectionChange

Bonjour,

Grâce à ce forum, J'utilise un code VBA pour surligner la ligne de la cellule sélectionner sans supprimer la mise en forme de base. Cependant, le surlignement affecte aussi la colonne. Je n'arrive pas à le changer sans tout faire planter. C'est un MFC en VBA.

Voici mon code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set champ = Range("A3:BM95")
  If Me.CheckBox1 Then
    If Not Intersect(champ, Target) Is Nothing Then
      champ.FormatConditions.Delete
      If Target.Count = 1 Then
        Union(Intersect(Target.EntireRow, champ), Intersect(Target.EntireColumn, champ)).FormatConditions.Add Type:=xlExpression, Formula1:="VRAI"
        Union(Intersect(Target.EntireRow, champ), Intersect(Target.EntireColumn, champ)).FormatConditions(1).Interior.ColorIndex = 36
        'Target.FormatConditions(1).Font.Bold = True
      End If
    End If
  Else
    champ.FormatConditions.Delete
  End If
End Sub

J'utilise ce code car utiliser la fonction MFC

ET(CELLULE("ligne")=LIGNE())

est trop lent pour mon (lourd) fichier. Je veux seulement changer une partie du code que j'utilise déjà, j'ai cherché longtemps pour le trouver.

Autre question : Est-ce que c'est normal que je ne puisse plus utiliser la mise en forme conditionnelle pour autre chose dans la même feuille?

Merci,

Bonsoir,

votre code fait une "union" de la plage de cellules de la ligne du champ comportant la cellule sélectionnée avec la plage de cellules de la colonne du champ comportant la cellule sélectionnée.

Je pense qu'il vous suffit de désigner la plage de cellule de la ligne du champ comportant la cellule sélectionnée.

Donc au lieu de :

Union(Intersect(Target.EntireRow, champ), Intersect(Target.EntireColumn, champ)).FormatConditions.Add Type:=xlExpression, Formula1:="VRAI"
        Union(Intersect(Target.EntireRow, champ), Intersect(Target.EntireColumn, champ)).FormatConditions(1).Interior.ColorIndex = 36

écrire :

Intersect(Target.EntireRow, champ).FormatConditions.Add Type:=xlExpression, Formula1:="VRAI"
Intersect(Target.EntireRow, champ).FormatConditions(1).Interior.ColorIndex = 36

@ bientôt

LouReeD

Pour la deuxième question :

si c'est une MFC qui correspond à des cellules comprise dans le champ, alors c'est normal, puisque vous les supprimez et les recréez uniquement pour surligner les lignes :

champ.FormatConditions.Delete

Si vous voulez avoir des MFC sur les cellules du champ après les avoir surligner, il vous faut alors les recréer également, le principe :

Effacer les MFC de la ligne du champ, créer la MFC de surlignage, effacer les MFC de surlignage, Créer les MFC "autre".

@ bientôt

LouReeD

Rechercher des sujets similaires à "selectionner seulement ligne pas colonne selectionchange"