VBA : couleur pour cellules numérique

esftel

XLDnaute Occasionnel
VBA : couleur pour cellules numérique et vide

sur ce post, j'ai obtenu les réponses que je souhaitais.

mais j'ai un problème que je n'arrive pas résoudre pour les cellules vides.

Voir mon post tout à la fin

Merci de votre réponse.

______________________________________________________________
Bonsoir le forum,

je souhaiterais appliquer une couleur sur plusieurs cellules ayant une valeur numérique ou date.

j'ai réussi à créer une procédure VBA pour plusieurs cellules mail d'une seul colonne.
Mon problème c'est que j'ai pluseiurs colonnes mais le nombre de celles-ci peuvent variées.

Pour être plus simple voici un exemple ci-joint.

Merci de votre ou vos réponse.
 

Pièces jointes

  • Classeur1.xls
    38 KB · Affichages: 99
  • Classeur1.xls
    38 KB · Affichages: 100
  • Classeur1.xls
    38 KB · Affichages: 104
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : VBA : couleur pour cellules numérique

Bonsoir

EDITION: Bonsoir RENAUDER

Ton code modifié

(à mettre dans un module standard, pas dans ta feuille (enfin normalement)

Code:
Sub test()
Dim n As Range
Dim cell As Range
Dim Num As Boolean
Dim d As Boolean
Set n = ActiveSheet.UsedRange
For Each cell In n
m = cell.Value
Num = IsNumeric(m)
d = IsDate(m)
If Not IsEmpty(cell) Then
If Num Or d Then cell.Interior.ColorIndex = 3
End If
Next
End Sub
 

RENAUDER

Nous a quitté
Repose en paix
Re : VBA : couleur pour cellules numérique

Bonjour,
Voici ton code corrigé.

Code:
Sub Colorie()
    Range("A1").CurrentRegion.Select
    For Each cell In Selection
        If IsNumeric(cell) Or IsDate(cell) Then cell.Interior.ColorIndex = 3
    Next cell
End Sub
 

Pièces jointes

  • Classeur v1.xls
    41 KB · Affichages: 99
  • Classeur v1.xls
    41 KB · Affichages: 102
  • Classeur v1.xls
    41 KB · Affichages: 102

esftel

XLDnaute Occasionnel
Re : VBA : couleur pour cellules numérique

staple1600, renauder

Merci à vous pour vos réponses, celles ci vont vraiement m'aider.

Cela dit, je pense que je vais opter pour la solution de Renauder que je dois adapter pour mon tableau. (Plus simple pour mon petit niveau).

Merci envore a vous deux.
 

BERRACHED said

XLDnaute Accro
Re : VBA : couleur pour cellules numérique

Salut,esftel

Essai ça :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, [A2:H20]) Is Nothing And Target.Count = 1 Then
    Application.EnableEvents = False
    For i = 1 To Len(Target)
     If Mid(Target, i, 1) >= "0" And Mid(Target, i, 1) <= "9" Then
       Target.Characters(Start:=i, Length:=1).Font.ColorIndex = 3
     End If
    Next i
    Application.EnableEvents = True
 End If
End Sub

Cordialement
 

esftel

XLDnaute Occasionnel
Re : VBA : couleur pour cellules numérique

Catrice, said,

Merci a vous pour vos réponces.

catric, j'ai bien pensé a la solution du MFC, mais j'ai besoin d'une procédure pour l'insérer dans une autre.

Said, merci pour ton prog je pense que cela va m'aider à augmenter mes connaissances en VBA ainsi que celui de Stample d'ailleurs.

Merci à vous tous.
 

Staple1600

XLDnaute Barbatruc
Re : VBA : couleur pour cellules numérique

Re, Bonsoir Said, Catrice


Pour le fun, 3 astuces pour éviter le If

Code:
[FONT=Courier New][COLOR=darkblue]Sub[/COLOR] test_ii()
[COLOR=darkblue]Dim[/COLOR] n [COLOR=darkblue]As[/COLOR] Range, c [COLOR=darkblue]As[/COLOR] Range, x [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR]
[COLOR=darkblue]Set[/COLOR] n = _
Range("a1").CurrentRegion.SpecialCells(xlCellTypeConstants, 1)
[COLOR=darkblue]For[/COLOR] [COLOR=darkblue]Each[/COLOR] c [COLOR=darkblue]In[/COLOR] n
x = (IsDate(c) + IsNumeric(c) * 1)
c.Interior.ColorIndex = -3 * x
[COLOR=darkblue]Next[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]
[/FONT]
Avec l'emploi de IIF
Code:
[FONT=Courier New][COLOR=darkblue]Sub[/COLOR] test_iif()
[COLOR=darkblue]Dim[/COLOR] n [COLOR=darkblue]As[/COLOR] Range, c [COLOR=darkblue]As[/COLOR] Range, x [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR]
[COLOR=darkblue]Set[/COLOR] n = _
Range("a1").CurrentRegion.SpecialCells(xlCellTypeConstants, 1)
[COLOR=darkblue]For[/COLOR] [COLOR=darkblue]Each[/COLOR] c [COLOR=darkblue]In[/COLOR] n
x = (IsDate(c) + IsNumeric(c) * 1)
c.Interior.ColorIndex = IIf(x = -1, 3, xlNone)
[COLOR=darkblue]Next[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR][/FONT]
Avec l'emploi de Switch
Code:
[FONT=Courier New][COLOR=darkblue]Sub[/COLOR] une_dernière_pour_laroute() [COLOR=green]';*)[/COLOR]
[COLOR=darkblue]Dim[/COLOR] n [COLOR=darkblue]As[/COLOR] Range, c [COLOR=darkblue]As[/COLOR] Range, d [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR]
[COLOR=darkblue]Set[/COLOR] n = Range("a1").CurrentRegion.SpecialCells(xlCellTypeConstants, 1)
[COLOR=darkblue]For[/COLOR] [COLOR=darkblue]Each[/COLOR] c [COLOR=darkblue]In[/COLOR] n
d = (IsDate(c) + IsNumeric(c) * 1)
c.Interior.ColorIndex = Switch(d = -1, 3, d = 0, xlNone)
[COLOR=darkblue]Next[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]
[/FONT]
 
Dernière édition:

esftel

XLDnaute Occasionnel
Re : VBA : couleur pour cellules numérique et vide

Bonjour le forum,

appliquer une couleur sur les cellules numérique ou date pas de problème.
Cependant losqu'il y a une cellule vide je me retrouve aussi avec une couleur.

En faite je souhaiterais appliquer une couleur lorsque la cellule est numérique et ne rien faire lorsque la cellule est texte ou vide.



voici ma procédure VBA

Sub test()
Range("A1").Select
n = Range(Selection, Selection.End(xlDown)).Count

For i = 1 To n
For c = 1 To 4
m = Cells(i, c).Value
num = IsNumeric(m)
d = IsDate(m)

If num = True Or d = True Then Cells(i, c).Interior.Color = 1234

Next c
Next i

End Sub


Merci de votre aide (un fichier joint pour exemple)
 

Pièces jointes

  • Classeur v1.xls
    38.5 KB · Affichages: 69
  • Classeur v1.xls
    38.5 KB · Affichages: 71
  • Classeur v1.xls
    38.5 KB · Affichages: 77

Discussions similaires

Réponses
16
Affichages
356
Réponses
12
Affichages
407

Statistiques des forums

Discussions
312 509
Messages
2 089 144
Membres
104 050
dernier inscrit
Pepito93100