tester la valeur d'une cellule (si valeur cellule est paire)

Franck60

XLDnaute Nouveau
Bonjour,

Je suis sur excel 2007, et j'ai un petit souci. Je voudrais qu'Excel test avec une macro la plage de cellule A6 à A36, et que lorsque la valeur de la cellule est paire, qu'il l'a colorie en vert (par exemple).
Pouvez vous m'aider
Merci par avance
 

Franck60

XLDnaute Nouveau
Re : tester la valeur d'une cellule (si valeur cellule est paire)

Bonjour,

Merci pour ta réponse.

Je sais, cette formule fonctionne, mais ne peut s'adapter a ce que je veux faire. En fait en face de cette rangée de cellule (A6 à A36) sur la colonne B j'ai toute les dates du mois qui s'affiche. Lorsque je modifie la première date en B6 du mois (01/01/15 par exemple toutes les autres dates se modifient (pas de problème).

Dans la colonne A, la plage de cellule A6 à A36 correspond le numéro de la semaine. j'ai une macro (qui fonctionne bien), qui lorsque je modifie la première date du mois en B6 affiche dans la colonne A le numéro de la semaine correspondante (en défusionnant les cellues de la colonnes A puis en les refusionnants puisque les numéros de semaine varie (ainsi la plage A6 à A12 correspond à la semaine x).

Mon souci est: que je voudrais que les numéros de semaines paires se colorie en vert. Mais lorsque je defusionne les cellules puis que je les refusionnes, la formule (=est.pair ne s'applique plus lorsque je défusionne les cellules, puisque les numéros de semaines varient en fonction des dates. J'ai essayer également avec des mises en formes conditionnelles, j'ai le même problème.

Est-ce qu'il est possible d'intégrer une macro qui teste la valeur du numéro de la semaine est la colorie en vert si elle est paire. la macro que j'ai sur le changement de date est des numéros de semaines, ainsi que la défusion est refusion des cellules de la colonne A fonction très bien. En fait il faudrait que j'ajoute dans celle-ci un test de la valeurs des cellules et les colorient en vert (par exemple) si la valeur est paire.

Pouvez vous m'aider.
 

eriiic

XLDnaute Barbatruc
Re : tester la valeur d'une cellule (si valeur cellule est paire)

Bonjour,

Et si tu utilises 'centrer sur plusieurs colonnes' qui est exactement pareil ?
Sinon ça serait qq chose comme :
Code:
If [A6] Mod 2 = 0 Then [A6].Interior.ColorIndex = 4

eric
 

Franck60

XLDnaute Nouveau
Re : tester la valeur d'une cellule (si valeur cellule est paire)

Bonjour,

La plage de cellule se colore, mais le test de valeur conditionnelle lui ne fonctionne pas.
Je m'explique lorsque je met une date avec un numéro de semaine paire cela se colorie bien, mais lorsque je mets une date avec un numéro de semaine impaire, la cellule reste colorier en vert.
Je ne sais pas comment faire.
 

Si...

XLDnaute Barbatruc
Re : tester la valeur d'une cellule (si valeur cellule est paire)

salut

on aurait pu intégrer le test dans ta macro mais on n'a pas celle-ci !
Un pis aller sachant que l'évènement se produit au changement de B6 :
Code:
Private Sub Worksheet_Change(ByVal R As Range)
   If R.Address <> "$B$6" Then Exit Sub
   [A6].Interior.ColorIndex = IIf([A6] Mod 2 = 0, 4, xlNone)
End Sub
 

Franck60

XLDnaute Nouveau
Re : tester la valeur d'une cellule (si valeur cellule est paire)

Bonjour,

après encore quelques essaies, j'ai réussi à faire en sorte que cela marche

If [A6] Mod 2 = 0 Then [A6].Interior.ColorIndex = 4
If [A6] Mod 2 <> 0 Then [A6].Interior.ColorIndex = 8

mais le souci c'est qu'il faut que je fasse la même pour les cellules de à A6 à A36.
peut-on faire une boucle pour eviter de réécrire les lignes.

PS: je te donne la copie de ma macro, en fait il faut insérer ce test de valeurs en fin de la macro.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' déclenchement de la macro lors du changement de cellule
' Target represente la cellule selectionnée

'pour la cellule B6:
If Target.Address = "$B$6" Then
'retirer la fusion
Range("A6:A36").UnMerge

End If

'détecter les céllules de mêmes valeurs en vue de les fusionner'

Range("a6:a36").Value = Range("o6:eek:36").Value
Dim fusioncellules As Range
Application.DisplayAlerts = False ' pour ne pas avoir de message de confirmation
For i = 36 To 6 Step -1
If Range("a" & i - 1).Value = Range("a" & i).Value Then
If fusioncellules Is Nothing Then
Set fusioncellules = Application.Union(Range("a" & i - 1), Range("a" & i))
Else
Set fusioncellules = Application.Union(fusioncellules, Range("a" & i - 1))
End If
Else
If Not fusioncellules Is Nothing Then fusioncellules.Merge False
Set fusioncellules = Nothing
End If
Next
Application.DisplayAlerts = True ' pour rétablir les messages
Range("a6:a36").VerticalAlignment = xlCenter ' pour faire zouli

Range("b6").Select

'colorier les cellules de valeurs pair'
If [A6] Mod 2 = 0 Then [A6].Interior.ColorIndex = 5
If [A6] Mod 2 <> 0 Then [A6].Interior.ColorIndex = 8

End Sub
 

Si...

XLDnaute Barbatruc
Re : tester la valeur d'une cellule (si valeur cellule est paire)

re

un fichier exemple aurait été le bienvenu donc une proposition avec ce que j'ai compris
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim i As Single, C As Range
  If Target.Address <> "$B$6" Then Exit Sub
  Application.DisplayAlerts = 0
  With [A6:A36]
    .UnMerge
    .Value = [O6:O36].Value
    .Interior.ColorIndex = xlNone
    For i = 36 To 6 Step -1
      If Cells(i - 1, 1) = Cells(i, 1) Then
        If C Is Nothing Then
          Set C = Application.Union(Cells(i - 1, 1), Cells(i, 1))
        Else
          Set C = Application.Union(C, Cells(i - 1, 1))
          C.Interior.ColorIndex = IIf(Cells(i, 1) Mod 2 = 0, 5, 8)
        End If
      Else
        If Not C Is Nothing Then C.Merge False
        Set C = Nothing
      End If
    Next
    .VerticalAlignment = xlCenter    ' pour faire zouli
  End With
  Application.DisplayAlerts = 1
End Sub
 

Pièces jointes

  • Fusionne Pair ou Impair.xlsm
    14.5 KB · Affichages: 40

Si...

XLDnaute Barbatruc
Re : tester la valeur d'une cellule (si valeur cellule est paire)

Re

je t'envoie 2 fichiers pour y voir plus clair ;).
A noter que tu auras les numéros de semaine directement (sans passer par une colonne intermédiaire).
 

Pièces jointes

  • Fusionne Impair_Pair.xlsm
    29.4 KB · Affichages: 47
  • Fusionne Pair_Impair.xlsm
    30.7 KB · Affichages: 44

Franck60

XLDnaute Nouveau
Re : tester la valeur d'une cellule (si valeur cellule est paire)

Bonjour,

Je te remercie beaucoup pour ton aide, cela fonctionne à merveille, encore milles merci.

Je sais que la curiosité est un vilain défaut, mais je cherche toujours à comprendre,

la différence entre les deux fichiers, c'est deux manières différentes d'écrire la procédure si j'ai bien compris.

Par contre, je me suis rendu compte (et s'est ma faute, je n'y avait pas fait attention) que je faisais démarrer la semaine un

dimanche.

Si je veux la faire démarrer un lundi, j'ai essayer de modifier weeknum pour faire démarrer la semaine un lundi mais je n'y arrive pas.

Comment faire.

Après j'arrete de t'embeter, promis.

Je te remercie énormément pour ton aide.
 

Franck60

XLDnaute Nouveau
Re : tester la valeur d'une cellule (si valeur cellule est paire)

Bonjour,

J'ai trouvé la solution, pour faire démarrer la semaine le lundi dans la colonne ou j'affiche le numéro de semaine.
Par contre je cherche comment faire pour que le changement de la valeur de la cellule B6 se face depuis une autre feuille, et que la macro se déclenche.
soit: si je change la valeur d'une cellule A1 d'une feuille "date" , celle-ci change la valeur de la cellule B6 mais la macro ne se déclenche pas.

Comment faire.
 

Discussions similaires

Réponses
17
Affichages
438

Statistiques des forums

Discussions
312 047
Messages
2 084 858
Membres
102 688
dernier inscrit
Biquet78