Probléme de reconnaissance de couleur en VBA .....

Résolu
Valerie54001 Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   -  
Valerie54001 Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour la communauté,

Je viens vers vous car j'ai besoin de vos lumières !!!

Dans le fichier ci-joint, j'utilise une couleur verte dont le code couleur est 16777215 mais j'ai l'impression qu'il ne la reconnaît pas dans le code.

https://mon-partage.fr/f/hIiLkLHc/

Qu'en dites vous?

1 réponse

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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

    0
    1. Valerie54001 Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   1
       
      Bonsoir eriiic,

      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 ''
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Tu as bien .DisplayFormat.Interior.Color qui te dit la couleur MFC d'affichée mais...
      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
      0
    3. Valerie54001 Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   1
       
      Merci eriic pour ta réponse , bien qu'elle ne me sortira pas des sables mouvants dans lesquels j'y ai mise les pieds.
      y-a-t-il une âme charitable ? pour me sortir du pétrin !!!
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Explique en mots ta MFC, ça sera plus simple et plus sûr que de decrypter ta formule.
      eric
      0
    5. Valerie54001 Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   1
       
      C'est très gentil de ta part ;)

      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 ?
      0