EXCEL: VBA pour tester si la ligne comporte u

Résolu
PTHV Messages postés 20 Statut Membre -  
 love -
Bonjour,
Comment peut-on tester si une ligne comporte au moins 1 cellule avec une couleur de fond autre que le blanc ?
Merci
Configuration: Windows XP
Firefox 2.0.0.14

4 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    bonjour,
    avec cette macro entre autre
    Sub ChcherCouleurFond()
    Dim cel As Range
    Dim a$
        Sheets("Feuil1").Activate 'A adapter au nom de la feuille
       ' a$ = "A1:" & Range("A1").SpecialCells(xlCellTypeLastCell).Address
       ' Range(a$).Select 'sélectionne toute la feuille
       'Ou faire la sélection voulue
        For Each cel In Sheets("feuil1").UsedRange
            b$ = cel.Address
            If cel.Interior.ColorIndex <> 2 Then 'correspond au blanc
                cel.Select
                Call MsgBox("Cette cellule n'a pas le fond blanc ?", vbYesNo, "Recherche cellule pas blanc")
            End If
        Next cel
    
    End Sub

    A+
    -1
    1. PTHV Messages postés 20 Statut Membre
       
      Bonjour,
      Merci de votre réponse.
      Je m'explique plus clairement. Ex:
      sur chaque ligne, la plage des colonnes 1 à 5, le fond des cellules est colorié ou non. La cellule de colonne 7 sert à afficher le résultat s'il y a ou non une cellule au moins a une couleur de fond autre que le blanc.
      si A1 à E1 pas de couleur de fond ---> G1 affiche 0 (ou vrai, ou n'importe quel code)
      si dans la plage A2 à E2, il y a au moins 1 cellule avec couleur de fond autre que le blanc ---> G2 affiche 1 (ou faux, ou n'importe quel code)
      etc
      ci joint fichier exemple :
      https://www.cjoint.com/?fjiH10JVur
      Merci de votre aide
      -1
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour PTHV, lhermite,

    Cette fonction pourra peut-^tre t'aider

    Function tester_couleur(plage As Range) As Byte
    For Each cellule In plage
    If cellule.Interior.ColorIndex <> -4142 Then
    'si pas de couleur: -'4142(transparent) si couleur blanche:2
    tester_couleur = 1
    Exit Function
    End If
    Next
    tester_couleur = 0
    End Function

    si tu préfères VRAI-FAUX tu passes la fonction en " as boolean" avec TRue et FALSE au lieu de 1 et 0

    A+
    Michel
    -1
    1. PTHV Messages postés 20 Statut Membre
       
      Merci pour votre macro, mais je ne parviens pas à l'appliquer (problème de compréhension de ma part?)
      -1
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Ci joint tite démo...
    https://www.cjoint.com/?fkjvI610M1

    Cordialement,
    Michel
    -1
    1. PTHV Messages postés 20 Statut Membre
       
      Bonsoir,
      Merci beaucoup de votre aide.
      Ca répond à ma demande, à un tout petit détail près: peut-il la faire automatiquement, sans recalcul par copier formule ?
      Sinon, ça marche très bien. Un grand MERCI
      Bon WE
      -1