Fonction if then sous excel 2007

Fermé
loulou38 - 31 juil. 2009 à 13:59
Mike-31 Messages postés 18381 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 mars 2025 - 31 juil. 2009 à 15:19
Bonjour,

J'ai un peu de mal avec les macros sur excel, néanmoins j'essaie de me débrouiller, cependant là je bloque depuis un bon moment alors si vous avez une idée, ce serait bien....:)

voilà, j'expose mon problème, je souhaite créer une macro qui me permettrai de colorer certaines cellules en fonction de sa voisine:

en gros j'ai deux colonnes : D E
12/06/09
12/06/09 OK
12/06/09 OK

Lorsque j'écris ok dans la colonne E, et par l'intermédiaire d'un bouton affecté à une macro je veux que toutes les cellules de la colonnes D qui ont un "ok" en face d'elle, se colore en vert, alors je viens pas les mains vide, j'ai essayé de programmé une boucle, enfin je vous laisse regarder, moi je bloque sur le "if then"

Sub Miseàjour()

'Aller en E2

Range("E2").Select

Dim x As Integer

Do
'Boucle tant que le compteur x est inférieur à 1000
Do While x < 1000
'Incrémente le compteur.
x = x + 1

'Tester si la cellule CONTIENT OK, si non descendre d'une ligne

If cell.Value = "OK" Then


'reculer d'une colonne
ActiveCell.Offset(0, -1).Select

'efface les condition et met la cellule en vert

Selection.FormatConditions.Delete
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 651546
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
'descend d'une ligne
ActiveCell.Offset(1, 0).Select


'Anticipe la sortie de la boucle.
Exit Do

Loop
'Quitte la boucle si la variable à la valeur True.
Loop Until x = 1000

End Sub
A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
31 juil. 2009 à 14:10
Salut,
Mes petites corrections en gras :

Sub Miseàjour()
'Aller en E2
Range("E2").Select
Dim x As Integer
Do
'Boucle tant que le compteur x est inférieur à 1000
Do While x < 1000
'Incrémente le compteur.
x = x + 1
'Tester si la cellule CONTIENT OK, si non descendre d'une ligne
If Activecell.Value = "OK" Then
'reculer d'une colonne
ActiveCell.Offset(0, -1).Select ' ------> ici tu te places en colonne D
'efface les condition et met la cellule en vert
Selection.FormatConditions.Delete
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 651546
.TintAndShade = 0
.PatternTintAndShade = 0
End With
ActiveCell.Offset(0, 1).Select ' ------> Il faut te replacer en colonne E
End If
'descend d'une ligne
ActiveCell.Offset(1, 0).Select
'Anticipe la sortie de la boucle.
Exit Do

Loop
'Quitte la boucle si la variable à la valeur True.
Loop Until x = 1000

End Sub
0
Merci pijaku, ça marche nickel.
0
Mike-31 Messages postés 18381 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 mars 2025 5 126
31 juil. 2009 à 14:14
Salut,

Pourquoi utiliser le code VBA pour une fonction aussi basique, tu as la mise en forme conditionnelle qui le fait très bien
mettre en surbrillance la partie de colonne D concernée et Format/mise en forme conditionnelle, sélectionner la forme est et coller cette formule,/Format choisir la couleur.

si la zone commence en D et E1
=E1="ok"
ou
=E2="ok"
si la zone commence en D et E2

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0
Salut MIKE 31

J'ai essayé de mettre en forme conditionnelle mais je ne sais pas pourquoi ça ne fonctionne pas, d'ailleurs j'aurai préférer faire comme ça car la case se mettrai en vert automatiquement tandis qu'avec la macro je suis obligé de la lancer pour avoir ce que je veux.

Pour la mise en forme conditionnel, j'ai procédé de la manière suivante:

selection de la cellule
mise en forme conditionnelle
appliquer la mise en forme uniquement aux cellules qui contiennent ...
valeur de la cellule égale à =E2="OK"
mais ça ne donne rien ( peut être que c'est dû au fait que j'ai déjà 2 conditions existantes sur la cellule à colorer en vert, 1ère condition : si date affiché dans la cellule est inférieur à AUJOURDHUI() alors colorer en rouge
2ème condition : si date affiché dans la cellule est supérieur ou égale à AUJOURDHUI() alors en jaune
donc je pense que ces conditions sont prioritaire et du coup pas de vert en utilisant cette solution.

Donc en fait je suis obligé de passer par une macro pour effacer les conditions existantes et pouvoir colorer ma cellule en vert.

Je sais pas si j'ai été clair mais en tout cas merci de m'avoir répondu

A+
0
Mike-31 Messages postés 18381 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 mars 2025 5 126
31 juil. 2009 à 14:52
Re,

Récupères un exemple avec le lien ci-dessous.

En colonne E, en jaune la plage de saisie la cellule en D sur la même ligne passe au vert si OK

https://www.cjoint.com/?hFoYilyS5W

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0

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

Posez votre question
ok merci, j'utilisai pas la bonne condition, et en plus j'avais pas vu qu'on pouvait mettre des priorités sur les conditions, donc c'est parfait

merci à toi et à charge de revanche ( même si je sais que c'est pas moi qui vais pouvoir t'aider lol)

Bon week end

A+
0
Mike-31 Messages postés 18381 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 mars 2025 5 126
31 juil. 2009 à 15:19
Re,

Détrompes toi, on à toujours besoin de quelqu’un, dans un domaine ou un autre, peut un jour tu auras la réponse que j'attendrai.

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0