Re : Equivalence de After Update dans les cellules "Sheets"
Bonjour Gorfael, bonjour à tous
Je vais essayer d’être plus clair dans mes explications.
1) Ce que j’ai obtenu .
Un tableau (planning de la semaine).
Si j’ai un texte alphanumérique entrée dans une cellule alors le texte sera centré sur deux colonnes avec fond en jaune.
Si j’ai un horaire entrée sur une cellule alors, l’horaire sera sur fond blanc, bleu clair ou bleu foncé(en fonction de mes alertes).
Après le chargement des horaires de la semaine dans ce tableau, les mises en forme sont affectées aux cellules, non par MFC, mais par programmation (For each cel in Selection …..next cel).
Je n’utilise pas les MFC car je rencontre des problèmes de compatibilité avec les versions Excel antérieur à ma version.
Jusqu'à présent, aucun problème.
2) Mes actions .
J’ai mon planning à l’écran et je procède à des modifications , soit des horaires ,soit des textes.
Je me place sur une cellule contenant du texte que je modifie en horaire.
Aprés l’entrée, cet horaire est centré sur deux colonnes et le curseur se positionne sur la cellule suivante .
3) Ce que j’aimerai.
Je dois procéder à ma mise en forme de la cellule modifié, non par MFC mais par programmation.
J’ai pensé à utiliser les Procédures Change, Selection_Change mais elles ralentissent l’exécution et elles se déclenchent aussi lors du chargement d’une autre semaine.
Voici ma procédure de traitement des couleurs
Public Sub traite_couleurs()
Dim cel As Range
num_dl = Range("B65535").End(xlUp).Row
If num_dl > 5 Then
Range(Cells(6, 5), Cells(num_dl, 18)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
With Selection
For Each cel In .Cells
a = cel.Row - .Cells(1).Row + 1
b = cel.Column - .Cells(1).Column + 1
If Cells(a + 5, b + 4).Value <> 0 Then
If Not IsNumeric(Cells(a + 5, b + 4)) Then
Range(Cells(a + 5, b + 4), Cells(a + 5, b + 5)).Select
With Selection
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
Cells(a + 5, b + 5).Select
ActiveCell.FormulaR1C1 = ""
Range(Cells(a + 5, b + 4), Cells(a + 5, b + 5)).Interior.ColorIndex = 36
Else
If Cells(a + 5, b + 4).Value <= 0.28125 Then Cells(a + 5, b + 4).Interior.ColorIndex = 17
If Cells(a + 5, b + 4).Value >= 0.8958333 Then Cells(a + 5, b + 4).Interior.ColorIndex = 8
End If
Else
If Not IsNumeric(Cells(a + 5, b + 3)) Then
Else
Cells(a + 5, b + 4).Interior.ColorIndex = 0
End If
End If
Next
End With
Cells(Sheets("Feuil2").Cells(23, 6), Sheets("Feuil2").Cells(24, 6)).Select
End If
End Sub
Quel solution aborder ?
D’avance merci !!