Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cheyenne63

XLDnaute Occasionnel
Bonsoir
Dans un fichier du type de celui en pièce jointe, mes collègues se positionnent dans la colonne L et vérifient les données ligne après ligne (et changent une donnée si besoin) en se déplaçant avec la flèche de défilement du clavier.
Afin de faciliter la visibilité du tableau et qu'ils ne s'arrachent pas les yeux, je souhaiterai que la ligne change momentanément de mise en forme à chaque fois qu'on est positionné sur cette ligne, et ainsi de suite.
Exemple en feuille 2 sur la ligne 13 : mon collègue se positionne en L13, vérifie la ligne (et change si besoin) puis passe en L14 : la police redevient normale sur la 13 et change sur la 14, etc…
Merci d'avance
 

Pièces jointes

Re : Ligne après ligne

Bonsoir cheyenne63,

Ce genre de gadget à sûrement été traité maintes fois sur XLD.

Dans le code de la feuille concernée :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Rows("5:" & Rows.Count) 'RAZ
  .Interior.ColorIndex = xlNone
  .Font.Bold = False
  .Font.ColorIndex = xlAutomatic
End With
If Not Intersect(ActiveCell, Range("L5", Range("L" & Rows.Count))) Is Nothing Then
  With Cells(ActiveCell.Row, 1).Resize(, 11)
    .Interior.ColorIndex = 6 'jaune
    .Font.Bold = True 'gras
    .Font.ColorIndex = 3 'rouge
  End With
End If
End Sub
Fichier joint.

A+
 

Pièces jointes

Re : Ligne après ligne

Bonjour,
Et dans le cas où il y a dans ce même tableau quelques lignes avec un contenu et une mise en forme différente des autres ?
Vu les codes dans module1 et dans feuil2, ces lignes particulières ne se distingent plus des autres, et c'est assez problématique ...
Voir fichier joint avec ces nouvelles cellules en gris.
Merci
 

Pièces jointes

Re : Ligne après ligne

Bonjour cheyenne63,

Comme je l'ai dit c'est un gadget alors faut pas exagérer les choses.

Mais on peut toujours mémoriser le format d'une ligne entière :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte
If [A1] > 0 Then
  With Cells([A1], 1).Resize(, 11)
    .Interior.Color = [B1].Interior.Color
    .Font.Bold = [B1].Font.Bold
    .Font.Color = [B1].Font.Color
  End With
End If
If Not Intersect(ActiveCell, Range("L6", Range("L" & Rows.Count))) Is Nothing Then
  [A1] = ActiveCell.Row 'mémorise la ligne
  Cells(ActiveCell.Row, 1).Copy [B1] 'pour mémoriser le format
  With Cells(ActiveCell.Row, 1).Resize(, 11)
    .Interior.ColorIndex = 6 'jaune
    .Font.Bold = True 'gras
    .Font.ColorIndex = 3 'rouge
  End With
End If
End Sub
Fichier (2)

A+
 

Pièces jointes

Re : Ligne après ligne

Re,

On aura remarqué qu'avec les versions précédentes le Copier-Coller est impossible.

Cette version (3) le permet :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte
If [A1] > 0 Then
  With Cells([A1], 1).Resize(, 11)
    .Interior.ColorIndex = [B1].Interior.ColorIndex
    .Font.Bold = [B1].Font.Bold
    .Font.Color = [B1].Font.Color
  End With
  [A1] = "" 'RAZ (permet le Copier-Coller)
End If
If Not Intersect(ActiveCell, Range("L6", Range("L" & Rows.Count))) Is Nothing Then
  [A1] = ActiveCell.Row 'mémorise la ligne
  Cells(ActiveCell.Row, 1).Copy [B1] 'pour mémoriser le format
  With Cells(ActiveCell.Row, 1).Resize(, 11)
    .Interior.ColorIndex = 6 'jaune
    .Font.Bold = True 'gras
    .Font.ColorIndex = 3 'rouge
  End With
End If
End Sub
Noter que .Interior.ColorIndex va mieux que .Interior.Color.

A+
 

Pièces jointes

Re : Ligne après ligne

Re,

S'il y a des cellules isolées qui sont colorées on peut ne pas formater la ligne :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte
If [A1] > 0 Then
  With Cells([A1], 1).Resize(, 11)
    .Interior.ColorIndex = [B1].Interior.ColorIndex
    .Font.Bold = [B1].Font.Bold
    .Font.Color = [B1].Font.Color
  End With
  [A1] = "" 'RAZ (permet le Copier-Coller)
End If
If Not Intersect(ActiveCell, Range("L6", Range("L" & Rows.Count))) Is Nothing _
  And Not IsNull(Cells(ActiveCell.Row, 1).Resize(, 11).Interior.ColorIndex) Then
  [A1] = ActiveCell.Row 'mémorise la ligne
  Cells(ActiveCell.Row, 1).Copy [B1] 'pour mémoriser le format
  With Cells(ActiveCell.Row, 1).Resize(, 11)
    .Interior.ColorIndex = 6 'jaune
    .Font.Bold = True 'gras
    .Font.ColorIndex = 3 'rouge
  End With
End If
End Sub
Fichier (4).

A+
 

Pièces jointes

Re : Ligne après ligne

Re,

Bon voilà qui est beaucoup mieux, j'aurai dû le faire tout de suite :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
Application.EnableEvents = False 'désactive les événements
If [L1] > 0 Then
  Application.ScreenUpdating = False
  Set c = ActiveCell
  [A1:K1].Copy
  Cells([L1], 1).PasteSpecial xlPasteFormats 'collage spécial formats
  c.Select
  [L1] = "" 'RAZ (permet le Copier-Coller)
End If
If Not Intersect(ActiveCell, Range("L6", Range("L" & Rows.Count))) Is Nothing Then
  With Cells(ActiveCell.Row, 1).Resize(, 11)
    .Copy [A1] 'pour mémoriser les formats
    [L1] = ActiveCell.Row 'mémorise la ligne
    .Interior.ColorIndex = 6 'jaune
    .Font.Bold = True 'gras
    .Font.ColorIndex = 3 'rouge
  End With
End If
Application.EnableEvents = True 'réactive les événements
End Sub
Les cellules d'une ligne peuvent être formatées comme on veut, tout est mémorisé.

A+
 

Pièces jointes

Re : [Résolu] Ligne après ligne

Re
De mieux en mieux ...
C'est ce que j'essayais (en vain) de faire depuis 2 bonnes heures 😉
J'ai compris et je viens d'adapter le code et ça marche nickel.
Un petit détail : pour les utilisateurs ce n'est pas un gadget car sur le fichier d'origine c'était vraiment nécessaire de mettre la ligne à traiter en valeur.
Le premier collègue directement concerné et qui vient de tester t'en remercie vivement.
Merci de t'être penché sur ce cas et bien sûr de l'avoir résolu.
Bonne journée
 
Re : Ligne après ligne

Re,

Application.ScreenUpdating a l'inconvénient de créer des sauts d'écran.

Ceci l'évite :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Byte, tablo(1 To 11)
Application.EnableEvents = False 'désactive les événements
If [L1] Then
  For i = 1 To 11 'mémorisation des formules
    tablo(i) = Cells([L1], i).Formula
  Next
  [A1:K1].Copy Cells([L1], 1)
  Cells([L1], 1).Resize(, 11) = tablo
  [L1] = "" 'RAZ (permet le Copier-Coller)
End If
If Not Intersect(ActiveCell, Range("L6", Range("L" & Rows.Count))) Is Nothing Then
  With Cells(ActiveCell.Row, 1).Resize(, 11)
    .Copy [A1] 'pour mémoriser les formats
    [L1] = ActiveCell.Row 'mémorise la ligne
    .Interior.ColorIndex = 6 'jaune
    .Font.Bold = True 'gras
    .Font.ColorIndex = 3 'rouge
  End With
End If
Application.EnableEvents = True 'réactive les événements
End Sub
Fichier (6).

Je pense qu'on a maintenant fait le tour de la question.

A+
 

Pièces jointes

Re : Ligne après ligne

Re,

Bah non ce n'était pas fini, le must c'est ceci :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tablo
Application.EnableEvents = False 'désactive les événements
If [L1] Then
  tablo = Cells([L1], 1).Resize(, 11).Formula 'mémorise les formules
  [A1:K1].Copy Cells([L1], 1)
  Cells([L1], 1).Resize(, 11) = tablo
  [L1] = "" 'RAZ (permet le Copier-Coller)
End If
If Not Intersect(ActiveCell, Range("L6", Range("L" & Rows.Count))) Is Nothing Then
  With Cells(ActiveCell.Row, 1).Resize(, 11)
    .Copy [A1] 'pour mémoriser les formats
    [L1] = ActiveCell.Row 'mémorise le n° de ligne
    .Interior.ColorIndex = 6 'jaune
    .Font.Bold = True 'gras
    .Font.ColorIndex = 3 'rouge
  End With
End If
Application.EnableEvents = True 'réactive les événements
End Sub
Fichier (7).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
Réponses
11
Affichages
2 K
A
M
Réponses
7
Affichages
2 K
M'uru
M
C
Réponses
3
Affichages
7 K
C
Réponses
4
Affichages
2 K
C
D
Réponses
6
Affichages
2 K
G
  • Question Question
Réponses
3
Affichages
2 K
B
Réponses
2
Affichages
2 K
bastienb
B
N
  • Résolu(e)
Réponses
3
Affichages
1 K
ninajams
N
B
Réponses
1
Affichages
712
bluet
B
Retour