XL 2010 Colorer ligne si la ligne est un multiple de 10

john55

XLDnaute Nouveau
Bonjour,
J’ai un tableau de suivi de production.
J’ai créé un userform pour le remplir.
J’y ai mis des conditions par exemple si je fais telle pièce je mets telle couleur, si je fais une autre pièce je mets telle couleur mais je souhaiterais y inclure une autre condition qui est que quand j’arrive à un multiple de 10 dans le tableau peu importe le type de pièce je voudrais mettre une couleur qui permettent de savoir qu’il faut effectuer un contrôle.
Pourriez vous m’aider avec un exemple que j’adapterais par rapport à mes besoins
Merci d’avance
 

job75

XLDnaute Barbatruc
Bonjour john55, le forum,

Si vous tenez absolument au VBA voyez le fichier joint et ces macros :
VB:
Sub Couleur()
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
With [Tableau1] 'tableau structuré
    .Columns(1).EntireColumn.Insert 'insère une colonne auxiliaire
    .Columns(0) = "=1/MOD(RC[1],10)"
    Intersect(.Columns(0).SpecialCells(xlCellTypeFormulas, 16).EntireRow, .Cells).Interior.ColorIndex = 6 'jaune
    .Columns(0).EntireColumn.Delete 'supprime la colonne auxiliaire
End With
End Sub

Sub RAZ()
[Tableau1].Interior.ColorIndex = xlNone
End Sub
J'ai testé en agrandissant le tableau sur 100 000 lignes : la 1ère macro s'exécute en 0,96 seconde chez moi alors qu'avec la MFC c'est immédiat.

A+
 

Pièces jointes

  • Couleur(1).xlsm
    23.5 KB · Affichages: 8

job75

XLDnaute Barbatruc
Fichier (2) avec cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next 'si aucune SpecialCell
With [Tableau1] 'tableau structuré
    .Columns(1).EntireColumn.Insert 'insère une colonne auxiliaire
    .Columns(0) = "=1/MOD(RC[1],10)"
    Intersect(.Columns(0).SpecialCells(xlCellTypeFormulas, 16).EntireRow, .Cells).Interior.ColorIndex = 6 'jaune
    .Columns(0).EntireColumn.Delete 'supprime la colonne auxiliaire
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
 

Pièces jointes

  • Couleur(2).xlsm
    21.8 KB · Affichages: 4

job75

XLDnaute Barbatruc
Mais je le répète, sur un grand tableau une MFC sera beaucoup plus rapide (en fait instantanée).

On peut bien sûr l'appliquer par VBA, voyez ce fichier (3) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
With [Tableau1] 'tableau structuré
    .FormatConditions.Delete 'RAZ
    .FormatConditions.Add xlExpression, Formula1:="=MOD(" & .Cells(1).Address(0, 1) & ",10)=0" 'pour version anglaise
    .FormatConditions.Add xlExpression, Formula1:="=MOD(" & .Cells(1).Address(0, 1) & ";10)=0" 'pour les autres versions
    .FormatConditions(1).Interior.ColorIndex = 6 'jaune
End With
End Sub
 

Pièces jointes

  • Couleur(3).xlsm
    20.7 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 091
Membres
103 467
dernier inscrit
Pandiska