Macro fonction comparae date et couleur cel

fcocotte

XLDnaute Nouveau
Bonjour,

Dans un fichier j' ai une colonne avec une date et une couleur , je mets une couleur pour dire que le traitement été fait
Pour l' instant mon fichier marche avec des fonctions mais je souhaite faire une fonction plus facile a utiliser
Pour l' instant j' ai le resultat souhaite mais avec une procedure ( je debute en VBA) :

Sub couleur()
'Permet de selectionner la plage a examiner'
Set Plage = Application.InputBox("Plage à examiner", Type:=8)
For Each cell In Plage
'Teste la couleur de la cellule à la date du jour qui est en cellule H1'
If cell.Interior.ColorIndex = 44 Or cell.Value > Range("H1") Then
MsgBox ("ok traite")
Else
MsgBox ("Verifie")
End If
Next cell
End Sub


Je voudais la transformer en fonction de maniere a ce que dasn une colonne je mette =couleur(celulle)

Ci joint un exemple

J'espère être assez claire..

Merci d' avance
 

Pièces jointes

  • CouleurDate.xls
    25 KB · Affichages: 51

job75

XLDnaute Barbatruc
Re : Macro fonction comparae date et couleur cel

Bonsoir fcocotte, salut kjin,

En restant strictement sur votre schéma,

- avec votre fonction macro Excel 4.0 (adaptée), formule en F3 :

=SI(I3="";"";SI(OU(I3>H$1;couleur=44);"OK";"A traiter"))

- avec cette fonction VBA qui fait exactement la même chose :

Code:
Function Test(cel As Range) As String
If IsDate(cel) Then Test = IIf(cel.Interior.ColorIndex = 44 Or cel > Date, "OK", "A traiter")
End Function

A+
 

Pièces jointes

  • CouleurDate(1).xls
    20.5 KB · Affichages: 49
  • CouleurDate(2).xls
    28.5 KB · Affichages: 40

fcocotte

XLDnaute Nouveau
Re : Macro fonction comparae date et couleur cel

Bonjour,

Merci pour votre aide ,
kjin : ça marche bien ta solution, mais je voulais éviter ça
job75 : super c'est exactement ça que je voulais!

Je vais continuer mon apprentissage...

Bonne journée
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Macro fonction comparae date et couleur cel

Bonjour fcocotte, le forum,

Je n'aime pas rester sur un travail incomplet, voici quelque chose de mieux :

- 1er fichier, en F3, il faut traiter le cas où H1 n'est pas une date :

=SI(JOUR(I3)*JOUR(H$1);SI(OU(I3>H$1;couleur=44);"OK";"A traiter");"")

- 2ème fichier, il faut un argument supplémentaire pour que la fonction soit recalculée, avec H1, à chaque ouverture du fichier :

Code:
Function Test(cel As Range[COLOR="red"], jour As Date[/COLOR]) As String
If CDate(cel) > 0 And jour > 0 Then Test = IIf(cel.Interior.ColorIndex = 44 Or cel > jour, "OK", "A traiter")
End Function

Edit 1 : si l'on entre des dates antérieures à 1900, VBA ne renvoie pas une erreur, car il traite les dates depuis l'année 100...

Edit 2 : pour les 2 fichiers, si l'on modifie la couleur d'une cellule en colonne I, les formules ne se recalculent pas : il faut appuyer sur F9 pour obtenir le recalcul.

A+
 

Pièces jointes

  • CouleurDate(1 bis).xls
    20 KB · Affichages: 47
  • CouleurDate(2 bis).xls
    28.5 KB · Affichages: 39
Dernière édition:

Discussions similaires

Réponses
7
Affichages
588

Statistiques des forums

Discussions
312 538
Messages
2 089 404
Membres
104 160
dernier inscrit
dqldq