Condition sur cellules d'une feuille entière

Résolu/Fermé
thomanneca Messages postés 5 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 27 novembre 2013 - 26 nov. 2013 à 22:45
 thomanneca - 1 déc. 2013 à 18:22
Bonjour à tous,

J'aimerais pouvoir mettre une/des conditions (uniquement en VBA) sur l'ensemble des cellules d'une feuille...
Par exemple, lorsque j'écris une date dans une cellule au hasard, j'aimerais que cette cellule se mettre en bleu.
Je ne souhaite donc pas utiliser la mise en forme conditionnelle simple car après, d'autres conditions viendront s'ajouter. Il me faut donc simplement le début du code avant les conditions IF et END IF.

Merci pour votre aide..
A voir également:

7 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
26 nov. 2013 à 22:53
Bonjour,

Dans l'éditeur VB de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
     Target.Interior.Color = vbBlue
End Sub


;0)
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
26 nov. 2013 à 23:07
le code met la cellule en bleu quand on rentre quelque chose dedans et qu'on quitte la cellule ...

Pour vérifier qu'il s'aget bien d'une date

If IsDate(Target.Text) Then
    Target.Interior.Color = vbBlue
End If


Mais ça ne fonctionnera que si ce code est collé dans l'éditeur VB de la feuille !!!
1
thomanneca Messages postés 5 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 27 novembre 2013
Modifié par pijaku le 28/11/2013 à 09:00
Salut, encore besoin d'un peu de ton aide

J'ai développé quelques conditions sur ma feuille mais j'aimerais à présent pouvoir demander de mettre ces conditions sur les cellules DEJA remplies et non celles que je remplis...

(exemple : fichier déjà développé pour lequel j'aimerais y mettre mes conditions par après via un bouton par exemple)

voici le début de mon exercice :

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not IsEmpty(Target) Then 
  If IsDate(Target) Then 
    If Target < Range("A2") Then 
      Target.Interior.Color = vbRed 
      Target.Font.Color = vbWhite 
      Target.NumberFormat = "ddd d" 
    Else 
      Target.Interior.Color = vbBlue 
      'Target.Interior.Color = RGB(64, 128, 224) 
      Target.NumberFormat = "ddd d" 
      Target.Font.Color = vbWhite 
      Target.Font.Bold = True 
    End If 
  Else 
    If IsNumeric(Target) Then 
      Target.Interior.Color = vbGreen 
    Else 
      If Not IsNumeric(Target) Then 
        Target.Font.Color = RGB(64, 128, 224) 
      Else 
        If Target = "" Then 
          Target.Interior.Color = vbYellow 
        Else 
          Target.Interior.Color = vbBlack 
          Target.Font.Color = vbWhite 
        End If 
      End If 
    End If 
  End If 
Else 
  If IsEmpty(Target) Then 
    Target.ClearFormats 
  End If 
End If 
End Sub 



Merci pour tes conseils
0
thomanneca Messages postés 5 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 27 novembre 2013
26 nov. 2013 à 23:01
Merci beaucoup mais je suis toujours bloqué :s

J'aimerais donc pouvoir par exemple :

- ouvrir une nouvelle feuille,

- cliquer dans n'importe quelle cellule et y inscrire une date (ex. 1/01/2014),

- avoir la condition que met cette cellule en couleur (ex bleu) s'il s'agit bien d'une date..

- quand j'aurai le début, je pense que pour les autres if (caractère, etc), çà devrait aller

Votre code correspond-il à cela?

Un grand merci
0
thomanneca Messages postés 5 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 27 novembre 2013
26 nov. 2013 à 23:11
Super merci, je crois que c'est bon... pour le moment !

Un grand merci ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thomanneca Messages postés 5 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 27 novembre 2013
Modifié par pijaku le 28/11/2013 à 09:00
Re...

J'ai développé quelques conditions sur ma feuille mais j'aimerais à présent pouvoir demander de mettre ces conditions sur les cellules DEJA remplies et non celles que je remplis...

voici le début de mon exercice :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not IsEmpty(Target) Then
    If IsDate(Target) Then
      If Target < Range("A2") Then
        Target.Interior.Color = vbRed
        Target.Font.Color = vbWhite
        Target.NumberFormat = "ddd d"
      Else
        Target.Interior.Color = vbBlue
        'Target.Interior.Color = RGB(64, 128, 224)
        Target.NumberFormat = "ddd d"
        Target.Font.Color = vbWhite
        Target.Font.Bold = True
      End If
    Else
      If IsNumeric(Target) Then
         Target.Interior.Color = vbGreen
      Else
        If Not IsNumeric(Target) Then
          Target.Font.Color = RGB(64, 128, 224)
          Else
          If Target = "" Then
            Target.Interior.Color = vbYellow
            Else
            Target.Interior.Color = vbBlack
            Target.Font.Color = vbWhite
          End If
        End If
      End If
    End If
Else
    If IsEmpty(Target) Then
      Target.ClearFormats
    End If
End If
End Sub



Je suis ouvert à toute amélioration, même de ce code..

Merci d'avance
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 30/11/2013 à 09:45
Bonjour
(après clic sur un bouton)

essaies :

Dim Dercell As String, Cellule As Range

Application.ScreenUpdating = False
Dercell = Cells.Find("*", , , , , xlPrevious).Address
For Each Cellule In Range("A1:" & Dercell)
'tes conditions...
Next

gain de temps d'environ 80 fois:on fige le défilement de l'écran par
Application.ScreenUpdating = False

on donne l'adresse de la cellule la + en bas et à droite afin de ne pas parcourir toute la feuille!
Dercell = Cells.Find("*", , , , , xlPrevious).Address

et on parcoure la plage Range("A1:" & Dercell)
.....tes conditions en remplacant "Target" par "cellule"
Michel
0
Super Michel,

A priori, c'est ce que je voulais !
Vais poursuivre à présent et voir..

Merci beaucoup
0