Colorer toutes les cellules texte d'un tableau.
zorgloub
Messages postés
36
Statut
Membre
-
zorgloub Messages postés 36 Statut Membre -
zorgloub Messages postés 36 Statut Membre -
Bonjour,
Imaginons un tableau allant de i10 à P14.
En VBA, quel serait le code pour colorer les cellules contenant du texte quelconque en jaune sur fond rouge.
Merci
Excel2010
Imaginons un tableau allant de i10 à P14.
En VBA, quel serait le code pour colorer les cellules contenant du texte quelconque en jaune sur fond rouge.
Merci
Excel2010
Configuration: Windows / Chrome 77.0.3865.120
A voir également:
- Colorer toutes les cellules texte d'un tableau.
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Excel cellule couleur si condition texte - Guide
- Imprimer un tableau excel - Guide
2 réponses
Bonjour Zorgloub, bonjour le forum,
Peut-être comme ça :
Peut-être comme ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim C As Range 'déclare la variable C (Cellule)
Dim PLT As Range 'déclare la variable PLT (PLage Texte)
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
Set PL = O.UsedRange 'définit la plage PL
For Each C In PL 'boucle sur toutes les cellules C de la plage PL
If Not IsNumeric(C.Value) = True Then 'condition 1 : si la cellule n'est pas numérique
If PLT Is Nothing Then 'condition 2 : si PLT n'est pas définie
Set PLT = C 'définit PLT (la cellule C)
Else 'sinon
Set PLT = Application.Union(PLT, C) 'définit PLT (l'union de PLT et de la cellule C)
End If 'fin de la condition 2
End If 'fin de la condition 1
Next C 'prochaione cellule de la boucle
PLT.Interior.ColorIndex = 3 'couleur du fond
PLT.Font.ColorIndex = 6 'coleur de l'encre
End Sub
Re,
Pour joindre un fichier il te faut utiliser un site hébergeur de fichiers du style https://www.cjoint.com/
Je n'avais pas vu que tu demandais de limiter à une plage... L'événement Change sur un onglet est une autre approche car il n'agit que sur la cellule modifiée, je coderais comme ça :
Pour joindre un fichier il te faut utiliser un site hébergeur de fichiers du style https://www.cjoint.com/
Je n'avais pas vu que tu demandais de limiter à une plage... L'événement Change sur un onglet est une autre approche car il n'agit que sur la cellule modifiée, je coderais comme ça :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("I10:P14")) Is Nothing Then
If Not IsNumeric(Target.Value) Then
Target.Interior.ColorIndex = 3
Target.Font.ColorIndex = 6
Else
Target.Interior.ColorIndex = xlNone
Target.Font.ColorIndex = xlAutomatic
End If
End If
End Sub
Bonjour ThauTheme,
Merci beaucoup pour cette solution qui fonctionne parfaitement lors de l'encodage de la cellule. (évenement _change)
Une question complémentaire, si vous le voulez bien:
Quel serait la modification à apporter à ce code pour faire ce même codage couleur mais sur un fichier déjà encodé.
Bref colorer en jaune sur fond rouge les cellules Texte mais en ayant une macro non liée à un événement du type "Change" mais en cliquant sur un bouton associé à cette nouvelle macro qui "scannerait" tout le fichier d'un coup.
J'imagine que ça ressemblerait un peu à votre premier code mais en plus condensé avec cette notion de Target que je n'ai pas encore bien comprise.
Merci
Merci beaucoup pour cette solution qui fonctionne parfaitement lors de l'encodage de la cellule. (évenement _change)
Une question complémentaire, si vous le voulez bien:
Quel serait la modification à apporter à ce code pour faire ce même codage couleur mais sur un fichier déjà encodé.
Bref colorer en jaune sur fond rouge les cellules Texte mais en ayant une macro non liée à un événement du type "Change" mais en cliquant sur un bouton associé à cette nouvelle macro qui "scannerait" tout le fichier d'un coup.
J'imagine que ça ressemblerait un peu à votre premier code mais en plus condensé avec cette notion de Target que je n'ai pas encore bien comprise.
Merci
Hi ThauTheme,
Sorry, j'avais bien les Comments, très pratiques, mais j'avais pas capté à quoi pouvait correspondre précisément [O.UsedRange].
Je pensais au Range utilisé, soit le tableau en question et pas à la page que je voyais plutôt comme [usedWorksheet] ou un truc du genre.
Maintenant, [ O.Range("I10:P14")] est certes très clair.
Merci encore.
Cordialement
-----------------------------------
RESOLU
------------------------------------
Sorry, j'avais bien les Comments, très pratiques, mais j'avais pas capté à quoi pouvait correspondre précisément [O.UsedRange].
Je pensais au Range utilisé, soit le tableau en question et pas à la page que je voyais plutôt comme [usedWorksheet] ou un truc du genre.
Maintenant, [ O.Range("I10:P14")] est certes très clair.
Merci encore.
Cordialement
-----------------------------------
RESOLU
------------------------------------
Merci. Je viens de tester
1) Comment limiter l'action à la zone i10 à p14
2) Ne peut-on y arriver avec un code plus concis du genre (issu d'un code que je ne comprends pas totalement)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("I10:P14")) Is Nothing Then
...
If Not IsNumeric(Cells(Target.Row, ...)) Then Cells(Target.Row, ...).Interior.ColorIndex = ...
(Pas possible de joindre un fichier sur ce forum ???)