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 ???)