Probléme de reconnaissance de couleur en VBA .....
Résolu/Fermé
Valerie54001
Messages postés
135
Date d'inscription
mardi 22 novembre 2016
Statut
Membre
Dernière intervention
22 avril 2024
-
24 févr. 2018 à 18:55
Valerie54001 Messages postés 135 Date d'inscription mardi 22 novembre 2016 Statut Membre Dernière intervention 22 avril 2024 - 3 mars 2018 à 00:16
Valerie54001 Messages postés 135 Date d'inscription mardi 22 novembre 2016 Statut Membre Dernière intervention 22 avril 2024 - 3 mars 2018 à 00:16
A voir également:
- Probléme de reconnaissance de couleur en VBA .....
- Reconnaissance musique en ligne - Guide
- Excel compter cellule couleur sans vba - Guide
- Reconnaissance facial en ligne - Guide
- Excel cellule couleur si condition texte - Guide
- La boite a couleur - Télécharger - Divers Photo & Graphisme
1 réponse
eriiic
Messages postés
24595
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
2 septembre 2024
7 235
24 févr. 2018 à 19:51
24 févr. 2018 à 19:51
Bonjour,
tu pourrais préciser quelle macro de quel module, pas envie de fouiller partout pour essayer de deviner.
Cependant avec le peu que j'en ai vu :
- une fonction personnalisée doit être dans un module Standard si tu veux l'appeler d'une feuille. Celle dans ThisWorbook n'a rien à y faire.
- il distinguer les couleurs mises manuellement (.Interior) de celles d'une MFC qui n'est pas .Interior
eric
tu pourrais préciser quelle macro de quel module, pas envie de fouiller partout pour essayer de deviner.
Cependant avec le peu que j'en ai vu :
- une fonction personnalisée doit être dans un module Standard si tu veux l'appeler d'une feuille. Celle dans ThisWorbook n'a rien à y faire.
- il distinguer les couleurs mises manuellement (.Interior) de celles d'une MFC qui n'est pas .Interior
eric
24 févr. 2018 à 20:12
Cela se passe dans le module 2 :
Option Explicit
Const vert As Byte = 10
Const vert2 = 16777215
Public Function codecoul(cel As Range) As Long
codecoul = cel.Interior.Color
End Function
Public Function truc(plage As Range) As String
Dim nbli As Long, li As Long
Dim vert1 As Long, vert2 As Long, text1 As Long, text2 As Long
Dim textvert1 As String, textvert2 As String
If plage.Columns.Count > 2 Then truc = "trop de colonnes": Exit Function
nbli = plage.Rows.Count
textvert1 = "": textvert2 = ""
vert1 = 0: vert2 = 0: text1 = 0: text2 = 0
For li = 1 To nbli
If plage.Cells(li, 1).Interior.ColorIndex = vert Then vert1 = vert1 + 1: textvert1 = plage.Cells(li, 1).Value
If plage.Cells(li, 2).Interior.ColorIndex = vert Then vert2 = vert2 + 1: textvert2 = plage.Cells(li, 2).Value
If plage.Cells(li, 1).Interior.ColorIndex = xlNone And plage.Cells(li, 1).Value <> "" Then text1 = text1 + 1
If plage.Cells(li, 2).Interior.ColorIndex = xlNone And plage.Cells(li, 2).Value <> "" Then text2 = text2 + 1
Next li
If vert1 + vert2 = 0 And text1 + text2 <> 0 Then
truc = "NUL": Exit Function
ElseIf text1 = 0 And text2 = 0 Then
truc = "RIEN": Exit Function
ElseIf vert1 <> 0 And vert2 <> 0 Then
truc = "N/A": Exit Function
ElseIf vert1 = 0 And vert2 <> 0 Then
truc = textvert2
ElseIf vert1 <> 0 And vert2 = 0 Then
If text1 <> 0 Then
truc = "N/A": Exit Function
Else
truc = textvert1: Exit Function
End If
Else: truc = "non prévu"
End If
End Function
Comment dois-je m'y prendre pour : '' il distinguer les couleurs mises manuellement (.Interior) de celles d'une MFC qui n'est pas .Interior ''
Modifié le 24 févr. 2018 à 23:39
impossible de l'utiliser dans une fonction personnalisée, uniquement dans un sub.
Là il faut que tu utilises le même test que ta MFC (la formule) pour savoir si elle est active ou non.
A-priori tu recherches le prénom et le "X" ailleurs, la condition est remplie si trouvés, et le vert se met. Faire donc l'équivalent en vba.
eric
25 févr. 2018 à 20:00
y-a-t-il une âme charitable ? pour me sortir du pétrin !!!
25 févr. 2018 à 23:22
eric
26 févr. 2018 à 21:51
Je vais essayer d'être la plus claire possible:
Sur la feuille '' Trieur '' il y a 9 tableaux , les règles suivantes sont les mêmes pour chacun d'entre eux.
Un tableau est composé d'une date ( elle ne servira à rien )
De 2 prénoms ( Pierre et David ) et de couleurs Vert (V) et Blanc (B) ( attention au code couleur du vert sélectionné.
Un chiffre allant de 1 à 9 ( ile ne te serviront à rien )
Principalement le tableau sélectionne une plage de colonne et de ligne bien défini.
Donc concentrons-nous sur les différents cas que nous devons traiter différentes possibilités qui donneront différentes réponses.
1er exemple :
Pierre V David B
Pierre V David B
.......
Soit Pierre toujours en V dans la plage sélectionnée alors le résultat sera Pierre.
2nd exemple :
Pierre V David B
Pierre B David B
Pierre B David V
Dans la plage sélectionnée nous avons eu Pierre et David en V alors le résultat sera N/A.
3éme exemple :
Pierre B David V
Pierre B David V
.......
Soit David toujours en V dans la plage sélectionnée alors le résultat sera David.
4éme exemple :
Pierre B David B
Pierre B David B
.......
Soit Pierre et David toujours en B dans la plage sélectionnée alors le résultat sera NUL.
5éme exemple :
Pierre B David B
Pierre B David V
.......
Soit Pierre et David ne sont pas toujours en B dans la plage sélectionnée , David n'est pas toujours en V car il a été une fois en B alors le résultat sera N/A.
Vois-tu plus clair ?