Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mefc en VBA

17 réponses
Avatar
guy boily
Bonjour à tous(tes)
J'ai boucoup de soucis à écrire en VBA ce que je veux faire. Voici :
Dans une même feuille j'ai trois plages nommées : plage1...correspond à
f8:ab8, plage 2...correspond à f12:ab12 et plage 3 ...correspond à la cellule
C6.
Je voudrais comparer toutes les cellules de maplage1 avec les cellules
correspondantes de maplage2 en incluant toujours une comparaison avec
maplage3 et si le résultat est vrai alors colorier la cellule de maplage1 en
rouge.
ainsi si f8 < f12 et f8 < C6 alors f8=interior.colorindex=3
si g8 <g12 et g8< C6 alors g8=interior.colorindex=3
si h8 <h12 et h8< C6 alors h8=interior.colorindex=3
et ainsi de suite jusqu'à si ab8<ab12 et ab8<C6 alors
ab8=interior.colorindex=3

Je voudrais procéder en VBA PCQ j'ai lu sur ce forum que l'on pouvait
compter les cellules qui sont coloriées avec une procédure VBA.

Merci à l'avance pour votre aide précieuse.

Bye!



Je voudrais
boily_SLSJ

7 réponses

1 2
Avatar
Philippe.R
Bonsoir,
Mon petit grain de sel pour abonder dans le sens de préférer (chaque fois
que possible, OK Misange) la MEFC et le comptage des cas répondant auxdites
conditions.
D'autant que dans un cas comme celui ci, on peut tout à fait utiliser à
l'intérieur de la MEFC une combinaison de Sommeprod pour comparer des plages
entières entre elles.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"LSteph" a écrit dans le message de
news:%
Bonjour,

> compter les cellules qui sont coloriées avec une procédure VBA.
c'est précisément une mauvaise astuce car il vaut bien mieux utiliser
directement la condition.

Cordialement.

--
lSteph

guy boily a écrit :
Bonjour à tous(tes)
J'ai boucoup de soucis à écrire en VBA ce que je veux faire. Voici :
Dans une même feuille j'ai trois plages nommées : plage1...correspond à
f8:ab8, plage 2...correspond à f12:ab12 et plage 3 ...correspond à la
cellule C6.
Je voudrais comparer toutes les cellules de maplage1 avec les cellules
correspondantes de maplage2 en incluant toujours une comparaison avec
maplage3 et si le résultat est vrai alors colorier la cellule de
maplage1 en rouge.
ainsi si f8 < f12 et f8 < C6 alors f8=interior.colorindex=3
si g8 <g12 et g8< C6 alors g8=interior.colorindex=3
si h8 <h12 et h8< C6 alors h8=interior.colorindex=3
et ainsi de suite jusqu'à si ab8<ab12 et ab8<C6 alors
ab8=interior.colorindex=3

Je voudrais procéder en VBA PCQ j'ai lu sur ce forum que l'on pouvait
compter les cellules qui sont coloriées avec une procédure VBA.

Merci à l'avance pour votre aide précieuse.

Bye! Je voudrais boily_SLSJ




Avatar
LSteph
;-))

Jacquouille a écrit :
Salut Daniel
Si c'est pour une bière, alors moi, j'étais de l'avi de Stephane...
Une bière au choix, oeuf corse.



Avatar
guy boily
bonjour FFO

J'ai pris un peu de temps à te répondre pcq je suis tombé en bas de ma
chaise (sans avoir ingurgité de bière)...lorsque j'ai incorporé ton code.
C'est FABULEUX comment tout ça fonctionne bien.

Merci boucoup

P.s. je suis désolé de la polémique que ma question a soulevée. Mais après
une heure de test ta fonction marche très bien.



boily_SLSJ


"FFO" a écrit :

Salut guy

Ce code devrait faire :

For i = 5 To 28
If Cells(8, i) < Cells(12, i) And Cells(8, i) < Cells(6, 3) Then
Cells(8, i).Interior.ColorIndex = 3
End If
Next

Dis moi !!!



Avatar
Philippe.R
Bonjour,
Il n'y a pas de polémique et donc pas de quoi être désolé, il y a juste
occasion de discussion, ce qui, me semble t il, est l'objet même du forum
(un lieu d'échanges avant d'être un SAV gratuit).
;o))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"guy boily" a écrit dans le message de
news:
bonjour FFO

J'ai pris un peu de temps à te répondre pcq je suis tombé en bas de ma
chaise (sans avoir ingurgité de bière)...lorsque j'ai incorporé ton code.
C'est FABULEUX comment tout ça fonctionne bien.

Merci boucoup

P.s. je suis désolé de la polémique que ma question a soulevée. Mais après
une heure de test ta fonction marche très bien.



boily_SLSJ


"FFO" a écrit :

Salut guy

Ce code devrait faire :

For i = 5 To 28
If Cells(8, i) < Cells(12, i) And Cells(8, i) < Cells(6, 3) Then
Cells(8, i).Interior.ColorIndex = 3
End If
Next

Dis moi !!!





Avatar
Daniel.C
Bonjour.
Considère cependant que la solution n'est pas l'équivalent d'une mise
en forme conditionnelle. Si les valeurs des cellules n'évoluent pas,
c'est parfait. A partir du moment ou elles évoluent, il faut mettre le
code de FFO dans une macro évènementielle, soit un Worksheet_Change, si
les valeurs sont entrées manuellement, soit un Worksheet_Calculate si
les plages contiennent des formules.
Cordialement.
Daniel

bonjour FFO

J'ai pris un peu de temps à te répondre pcq je suis tombé en bas de ma
chaise (sans avoir ingurgité de bière)...lorsque j'ai incorporé ton code.
C'est FABULEUX comment tout ça fonctionne bien.

Merci boucoup

P.s. je suis désolé de la polémique que ma question a soulevée. Mais après
une heure de test ta fonction marche très bien.



boily_SLSJ


"FFO" a écrit :

Salut guy

Ce code devrait faire :

For i = 5 To 28
If Cells(8, i) < Cells(12, i) And Cells(8, i) < Cells(6, 3) Then
Cells(8, i).Interior.ColorIndex = 3
End If
Next

Dis moi !!!





Avatar
guy boily
Bonjour DanielC.
Merci en retard pour ton commentaire il m'a été bien utile. En effet comme
tu le mentionnais j'ai placé le code dans un Worksheet_Calculate pcq mes
plages
plages contiennent des formules.(sommeprod)

Merci

--
boily_SLSJ


"Daniel.C" a écrit :

Bonjour.
Considère cependant que la solution n'est pas l'équivalent d'une mise
en forme conditionnelle. Si les valeurs des cellules n'évoluent pas,
c'est parfait. A partir du moment ou elles évoluent, il faut mettre le
code de FFO dans une macro évènementielle, soit un Worksheet_Change, si
les valeurs sont entrées manuellement, soit un Worksheet_Calculate si
les plages contiennent des formules.
Cordialement.
Daniel

> bonjour FFO
>
> J'ai pris un peu de temps à te répondre pcq je suis tombé en bas de ma
> chaise (sans avoir ingurgité de bière)...lorsque j'ai incorporé ton code.
> C'est FABULEUX comment tout ça fonctionne bien.
>
> Merci boucoup
>
> P.s. je suis désolé de la polémique que ma question a soulevée. Mais après
> une heure de test ta fonction marche très bien.
>
>
>
> boily_SLSJ
>
>
> "FFO" a écrit :
>
>> Salut guy
>>
>> Ce code devrait faire :
>>
>> For i = 5 To 28
>> If Cells(8, i) < Cells(12, i) And Cells(8, i) < Cells(6, 3) Then
>> Cells(8, i).Interior.ColorIndex = 3
>> End If
>> Next
>>
>> Dis moi !!!
>>





Avatar
guy boily
Bonjour FFO
Voici le code obtenu avec ton aide. ce code fonctionne très bien.

Private Sub Workbook_SheetCalculate(ByVal sh As Object)
For i = 5 To 28
For k = 5 To 28
If Cells(8, i) < Cells(12, i) And Cells(8, i) < Cells(6, 3) Then
Cells(8, i).Interior.ColorIndex = 3
End If
If Cells(8, i) > Cells(12, i) Then
Cells(8, i).Interior.ColorIndex = 6
End If
If Cells(8, i) < Cells(12, i) And Cells(8, i) > Cells(6, 3) Then
Cells(8, i).Interior.ColorIndex = 4
End If
If Cells(29, k) < Cells(33, k) And Cells(29, k) < Cells(6, 3) Then
Cells(29, k).Interior.ColorIndex = 3
End If
If Cells(29, k) > Cells(33, k) Then
Cells(29, k).Interior.ColorIndex = 6
End If
If Cells(29, k) < Cells(33, k) And Cells(29, k) > Cells(6, 3) Then
Cells(29, k).Interior.ColorIndex = 4
End If
Next k
Next i

End Sub

Mais lorsque je veux ajouter un autre For pour ajouter une autre ligne de
comparaison avec
Private Sub Workbook_SheetCalculate(ByVal sh As Object)
For i = 5 To 28
For k = 5 To 28
For j = 5 to 28
If Cells(8, i) < Cells(12, i) And Cells(8, i) < Cells(6, 3) Then
Cells(8, i).Interior.ColorIndex = 3
End If
If Cells(8, i) > Cells(12, i) Then
Cells(8, i).Interior.ColorIndex = 6
End If
If Cells(8, i) < Cells(12, i) And Cells(8, i) > Cells(6, 3) Then
Cells(8, i).Interior.ColorIndex = 4
End If
If Cells(29, k) < Cells(33, k) And Cells(29, k) < Cells(6, 3) Then
Cells(29, k).Interior.ColorIndex = 3
End If
If Cells(29, k) > Cells(33, k) Then
Cells(29, k).Interior.ColorIndex = 6
End If
If Cells(29, k) < Cells(33, k) And Cells(29, k) > Cells(6, 3) Then
Cells(29, k).Interior.ColorIndex = 4
End If
If Cells(51, j) < Cells(55, j) And Cells(51, j) < Cells(6, 3) Then
Cells(51, j).Interior.ColorIndex = 3
End If
If Cells(51, j) > Cells(55, j) Then
Cells(51, j).Interior.ColorIndex = 6
End If
If Cells(51, j) < Cells(55, j) And Cells(51, j) > Cells(6, 3) Then
Cells(51, j).Interior.ColorIndex = 4
End If
Next j
Next k
Next i

End Sub


Ça bogue à la première ligne du If de la 3 ieme ligne de comparaison soit
If Cells(51, j) < Cells(55, j) And Cells(51, j) < Cells(6, 3) Then
Cells(51, j).Interior.ColorIndex = 3
End If


Le message d'excel: Erreur définie par l'application ou par l'objet.

Serait-ce que l'on ne peut mettre plus de 6 IF ? ou que ma structure de IF
n'est pas correct?

P.S. je ne suis pas un CRAC du VBA ...

Comment faire pour mettre mon fichier sur c-joint pour te montrer tout ça?

Merci de m'accorder de ton temps.

Bye!




--
boily_SLSJ


"FFO" a écrit :

Salut guy

Ce code devrait faire :

For i = 5 To 28
If Cells(8, i) < Cells(12, i) And Cells(8, i) < Cells(6, 3) Then
Cells(8, i).Interior.ColorIndex = 3
End If
Next

Dis moi !!!



1 2