IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Comment mettre les ligne active et la colonne active en surbrillance ? [XL-2013]


Sujet :

Excel

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut Comment mettre les ligne active et la colonne active en surbrillance ?
    Bonsoir membres du forum,
    La ligne active et la colonne active sont surlignées sur réception du curseur(la sourie).
    Quelle est la méthode à appliquer ?

    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    code à copier dans le module de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Static DerLig As Long 'déclare la variable DerLig en static
        Static DerCol As Long 'déclare la variable DerCol en static
        If Target.Count > 1 Then Exit Sub 'Si plus d'une cellule sélectionnées, alors on sort
        If DerLig <> 0 And DerCol <> 0 Then
            Rows(DerLig).Interior.ColorIndex = xlNone 'remettre la précédente ligne sélectionnée en normal
            Columns(DerCol).Interior.ColorIndex = xlNone 'remettre la précédente colonne sélectionnée en normal
        End If
        Target.EntireRow.Interior.ColorIndex = 6 'Surligne la ligne en jaune
        Target.EntireColumn.Interior.ColorIndex = 6 'Surligne la colonne en jaune
        DerLig = Target.Row 'méorise le numéro de la ligne
        DerCol = Target.Column 'méorise le numéro de la colonne
    End Sub
    Pour accéder au module VBA, faire ALT + F11 , sélectionnez le nom de la feuille dans la partie gauche et copiez le code précédent dans la partie droite, comme ci-dessous
    Pièce jointe 545150

    Cdlt

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour le Fil
    Bonjour Arturo,

    En utilisant un Range statique, ça fonctionnera aussi lors d'une sélection multiple (colonne, ligne, zone).
    Bien évidemment, il manquera encore le cas (peu utilisé) du déplacement de la cellule active dans une zone sélectionnée (qui ne provoque pas SelectionChange), mais ça ne peut pas être fait à la souris (demande initiale).

    Code VBA-E : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static cel As Range
      If Not cel Is Nothing Then
        cel.EntireRow.Interior.ColorIndex = xlNone 'remettre la précédente ligne sélectionnée en normal
        cel.EntireColumn.Interior.ColorIndex = xlNone 'remettre la précédente ligne sélectionnée en normal
      End If
      Set cel = ActiveCell
      cel.EntireRow.Interior.ColorIndex = 6
      cel.EntireColumn.Interior.ColorIndex = 6
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    Il y a plusieurs méthodes.
    Certaines suppriment les couleurs de fond.
    En Pj, quelques méthodes qui ne modifient pas la couleur de fond.

    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,
    code à copier dans le module de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Static DerLig As Long 'déclare la variable DerLig en static
        Static DerCol As Long 'déclare la variable DerCol en static
        If Target.Count > 1 Then Exit Sub 'Si plus d'une cellule sélectionnées, alors on sort
        If DerLig <> 0 And DerCol <> 0 Then
            Rows(DerLig).Interior.ColorIndex = xlNone 'remettre la précédente ligne sélectionnée en normal
            Columns(DerCol).Interior.ColorIndex = xlNone 'remettre la précédente colonne sélectionnée en normal
        End If
        Target.EntireRow.Interior.ColorIndex = 6 'Surligne la ligne en jaune
        Target.EntireColumn.Interior.ColorIndex = 6 'Surligne la colonne en jaune
        DerLig = Target.Row 'méorise le numéro de la ligne
        DerCol = Target.Column 'méorise le numéro de la colonne
    End Sub
    Pour accéder au module VBA, faire ALT + F11 , sélectionnez le nom de la feuille dans la partie gauche et copiez le code précédent dans la partie droite, comme ci-dessous
    Pièce jointe 545150
    Cdlt
    Bonjour membres du forum,
    bonjour ARTURO83,
    très heureux d'être avec vous.
    je viens d'appliquer votre code et voici l'erreur à aperçu:

    Nom : CaptureExcel_SurbrillanceLigneColonne_3.PNG
Affichages : 2290
Taille : 113,0 Ko
    Nom : CaptureExcel_SurbrillanceLigneColonne_1.PNG
Affichages : 2238
Taille : 50,9 Ko
    Nom : CaptureExcel_SurbrillanceLigneColonne_2.PNG
Affichages : 2242
Taille : 42,6 Ko

    Cordailement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  6. #6
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour le Fil
    Bonjour Arturo,
    En utilisant un Range statique, ça fonctionnera aussi lors d'une sélection multiple (colonne, ligne, zone).
    Bien évidemment, il manquera encore le cas (peu utilisé) du déplacement de la cellule active dans une zone sélectionnée (qui ne provoque pas SelectionChange), mais ça ne peut pas être fait à la souris (demande initiale).
    Code VBA-E : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static cel As Range
      If Not cel Is Nothing Then
        cel.EntireRow.Interior.ColorIndex = xlNone 'remettre la précédente ligne sélectionnée en normal
        cel.EntireColumn.Interior.ColorIndex = xlNone 'remettre la précédente ligne sélectionnée en normal
      End If
      Set cel = ActiveCell
      cel.EntireRow.Interior.ColorIndex = 6
      cel.EntireColumn.Interior.ColorIndex = 6
    End Sub
    Bonjour Patrice740,
    Voici le message d'erreur suite à exécution de votre code:

    Nom : CaptureExcel_SurbrillanceLigneColonne_4.PNG
Affichages : 2232
Taille : 52,0 Ko
    Nom : CaptureExcel_SurbrillanceLigneColonne_5.PNG
Affichages : 2223
Taille : 24,3 Ko

    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  7. #7
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par boisgontierjacques Voir le message
    Bonjour,
    Il y a plusieurs méthodes.
    Certaines suppriment les couleurs de fond.
    En Pj, quelques méthodes qui ne modifient pas la couleur de fond.
    Boisgontier
    Bonjour boisgontierjacques,
    la méthode que j'ai choisie est: "CurseurLigneColMFC"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Set champ = Range("A1:M20")
      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
    Voici la capture d'erreur:

    Nom : CaptureExcel_SurbrillanceLigneColonne_6.PNG
Affichages : 2194
Taille : 46,6 Ko
    Nom : CaptureExcel_SurbrillanceLigneColonne_7.PNG
Affichages : 2302
Taille : 37,6 Ko


    Cordialement.
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Tu n'as pas ajouté le Checkbox sur la feuille !
    Il sert à activer / désactiver le surlignage.
    Si tu n'en a pas besoin, supprimes la ligne en Erreur (bleue) et le End If correspondant
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  9. #9
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,
    Tu n'as pas ajouté le Checkbox sur la feuille !
    Il sert à activer / désactiver le surlignage.
    Si tu n'en a pas besoin, supprimes la ligne en Erreur (bleue) et le End If correspondant
    Bonsoir Patrice740,
    j'ai effectué ce que vous m'avez suggéré:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Set champ = Range("A1:N90")
      '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
    Peut on gérer les erreurs avec ce code car lorsque la feuille est protégée, un Click sur elle renvoie des messages d’erreurs ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    currentdb.execute ..., dbfailonerror
    Nom : CaptureExcel_SurbrillanceLigneColonne_8.PNG
Affichages : 2561
Taille : 112,4 Ko

    Maintenant comment fait on pour changer la couleur des lignes active et colonne active ?
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  10. #10
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Beaucoup de codes de JB modifient les cellules et donc posent problème avec des cellules protégées : il faut déprotéger avant la modification et re-protéger après.
    Et pour changer la couleur, il suffit de changer la valeur du ColorIndex, voire le remplacer par un Color.

    Je te suggère d'utiliser la méthode CurseurTarget qui ne fait que sélectionner l'union de la ligne et de la colonne sans modifier quoi que ce soit.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  11. #11
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,
    Beaucoup de codes de JB modifient les cellules et donc posent problème avec des cellules protégées : il faut déprotéger avant la modification et re-protéger après.
    Et pour changer la couleur, il suffit de changer la valeur du ColorIndex, voire le remplacer par un Color.
    Je te suggère d'utiliser la méthode CurseurTarget qui ne fait que sélectionner l'union de la ligne et de la colonne sans modifier quoi que ce soit.
    Bonjour Patrice740,
    Pour conclure, en plus du code, il faut ajouter aussi la mise en forme conditionnelle.
    N'est pas ?
    Merci infiniment et à très bientôt.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  12. #12
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    Il doit y avoir des problèmes de protection.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Set champ = Range("A1:M20")
      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
    Boisgontier
    Fichiers attachés Fichiers attachés

  13. #13
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par boisgontierjacques Voir le message
    Bonjour,
    Il doit y avoir des problèmes de protection.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Set champ = Range("A1:M20")
      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
    Boisgontier
    Bonsoir boisgontierjacques,
    Merci encore une fois je viens d'apprendre un grand plus à travers vos interventions.
    Surtout la ligne de code suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.FormatConditions(1).Font.Bold = True
    infiniment et à bientôt.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/08/2008, 19h51
  2. Réponses: 1
    Dernier message: 07/03/2008, 12h42
  3. [XML] msxml Comment mettre les premières lignes ?
    Par eponette dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 06/12/2007, 17h09
  4. Réponses: 4
    Dernier message: 27/03/2007, 09h49
  5. Comment mettre les lignes d'un fichier dans un tableau en shell
    Par Ombrius dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/10/2006, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo