Colorer toutes les cellules texte d'un tableau.
Fermé
zorgloub
Messages postés
29
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
30 janvier 2024
-
30 oct. 2019 à 16:59
zorgloub Messages postés 29 Date d'inscription jeudi 9 avril 2009 Statut Membre Dernière intervention 30 janvier 2024 - 1 nov. 2019 à 16:06
zorgloub Messages postés 29 Date d'inscription jeudi 9 avril 2009 Statut Membre Dernière intervention 30 janvier 2024 - 1 nov. 2019 à 16:06
A voir également:
- Colorer toutes les cellules texte d'un tableau.
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Excel cellule couleur si condition texte - Guide
- Tableau word - Guide
- Excel colorer une cellule sous condition d'une autre cellule ✓ - Forum Excel
2 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
30 oct. 2019 à 17:25
30 oct. 2019 à 17:25
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
31 oct. 2019 à 08:58
31 oct. 2019 à 08:58
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
zorgloub
Messages postés
29
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
30 janvier 2024
31 oct. 2019 à 11:22
31 oct. 2019 à 11:22
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
31 oct. 2019 à 12:01
31 oct. 2019 à 12:01
Ben en gros c'est le premier code que je t'ai envoyé...
zorgloub
Messages postés
29
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
30 janvier 2024
31 oct. 2019 à 12:16
31 oct. 2019 à 12:16
Je m'en doutais ;)
Ce premier code ne se limite cependant pas à la zone i10 à p14.
Il agit malheureusement sur les autres cellules aussi.
Ce premier code ne se limite cependant pas à la zone i10 à p14.
Il agit malheureusement sur les autres cellules aussi.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
31 oct. 2019 à 13:31
31 oct. 2019 à 13:31
Re,
Il te suffit de définir la plage PL comme ça :
J'ai commenté les codes pour te permettre de les modifier mais je me rends compte que tu ne lis même pas...
Il te suffit de définir la plage PL comme ça :
Set PL = O.Range("I10:P14")
J'ai commenté les codes pour te permettre de les modifier mais je me rends compte que tu ne lis même pas...
zorgloub
Messages postés
29
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
30 janvier 2024
1 nov. 2019 à 16:06
1 nov. 2019 à 16:06
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
------------------------------------
Modifié le 30 oct. 2019 à 17:58
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 ???)