Macro WorkSheet

Bonjour,

j'ai un tableau bien fourni et j'aimerai mettre en surbrillance toute une ligne et toute une colonne dès que je clique dans une cellule. pour ce faire je saisi la macro suivante:

"' Highlight the entire row and column for the ActiveCell.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlColorIndexNone
ActiveCell.EntireRow.Interior.ColorIndex = 22
ActiveCell.EntireColumn.Interior.ColorIndex = 36
End Sub
"

mais mon problème est que çà efface toute les mise en forme que j'ai faite avant et après la saisie de la macro; et cela m'empêche de verrouiller la feuille pour empêcher ceux qui vont utiliser le classeur de changer les formules par inadvertance.

je viens humblement solliciter votre aide pour résoudre ce casse-tête chinois!
merci

3 réponses

  1. Contributeur
    bonjour,

    "Je rappelle ma procédure: "
    Tu crois? relis ton 1° message compare avec ce dernier et évite ce ton autoritaire qui semble dire "vous avez rien compris": un bénévole n'est pas ton domestique

    autrement , je ne t'ai jamais parlé de:

    - d'écriture de formule dans le code: A EVITER AU MAXIMUM EN VBA
    -de "calculate"- inutile puisqu'on écrit pas de formule

    mettre la plage concernée en surbrillance exemple A1 à O50 --
    c'est nouveau ?... voir 1° message de plus,mettre en surbrillance est inutile

    pour limiter l'action à A1:O50
    Private Sub Worksheet_selectionChange(ByVal Target As Range)
    Dim Lig As Long, Col As Integer
    If not intersect(target, range("A1:O50") is nothing then
    ActiveSheet.Unprotect
    ......la procèdure
    End if
    End sub
    Au cas où:
    La procédure doit être située dans le module feuille de la page concernée

    Michel
    0
    1. bonjour,
      par rapport à mon problème, je constate que dès que je ferme mon classeur et que je l'ouvre de nouveau, ma macro ne marche n'est plus prise en compte!
      je rappelle ma procédure:

      "mettre la plage concernée en surbrillance exemple A1 à O50
      Mise en forme conditionnelle
      Format/Mise en forme conditionnelle
      la formule est

      =LIGNE()=CELLULE("ligne")


      format et choisir une couleur

      clic droit sur l'onglet de ta feuille et coller ce code

      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Calculate
      End Sub
      "

      je suis en attente de vos suggestions!
      merci!
      0
      1. Contributeur
        Bonjour

        les coordonnées de la sélection précédente sont inscrites dans 2 cellules AA1 et AA2 avec la colonne AA masquée (AA ou autre suivant ta configuration)

        Option Explicit

        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim Lig As Long, Col As Integer

        ActiveSheet.Unprotect

        'détruit la mise en évidence précédente
        Lig = Range("AA1")
        Col = Range("AA2")
        'lig=0 et Col=0 1° utilisation
        If Lig > 0 Then Rows(Lig).Interior.ColorIndex = xlColorIndexNone
        If Col > 0 Then Columns(Col).Interior.ColorIndex = xlColorIndexNone

        'mémorise la ligne et colonne de la cellule active
        Lig = Target.Row
        Col = Target.Column
        ' et les range dans 2 cellules (masquer la colonne AA1)
        Range("AA1") = Lig
        Range("AA2") = Col
        'met en évidence la sélection
        Rows(Lig).Interior.ColorIndex = 22
        Columns(Col).Interior.ColorIndex = 36

        ActiveSheet.Protect
        End Sub

        Nota(edit à 8:16): on peut aussi mémoriser la ligne et la colonne dans la base de registre (plus discret) si les utilisateurs disposent chacun du classeur sur leur ordi...
        Michel
        0