IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mettre une couleur Sur une celluls en fonction d'une condition sur plusieurs colonne distinct(ne se suivent pa


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Mettre une couleur Sur une celluls en fonction d'une condition sur plusieurs colonne distinct(ne se suivent pa
    Bonjour,

    Merci par avance si quelqu'un veux bien m'aider car je galére.

    Je voudrais vérifier sur chaque ligne d'un fichier pour des colonnes distincts (elle ne se suivent pas ) par exemple F M Q Z si les cellules correspondante sont non vide.
    Si toutes les cellules aprés vérifications sont non vide alors je mets une couleur (verte) sur une colone qui les précédent par exemple B pour la ligne correspondante.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For j = 2 To .Range("A65356").End(xlUp).Row
     
       If (Range("T" & j).Value <> " " And Range("W" & j).Value <> " " And Range("Z" & j).Value <> " " And Range("AC" & j).Value <> " " And Range("AF" & j).Value <> " " And Range("AI" & j).Value <> " " And Range("AL" & j).Value <> " " And Range("AO" & j).Value <> "" And Range("AR" & j).Value <> " " And Range("AU" & j).Value <> " " And Range("AX" & j).Value <> " " And Range("BA" & j).Value <> " " And Range("BD" & j).Value <> " " And Range("BC" & j).Value <> " " And Range("BJ" & j).Value <> " " And Range("BM" & j).Value <> " " And Range("BP" & j).Value <> " " And Range("BS" & j).Value <> " " And Range("BV" & j).Value <> " " And Range("BY" & j).Value <> " ") Then
     
       Range("T" & j).Offset(0, -4).Interior.Color = 65280
     
       Else
     
       Range("T" & j).Offset(0, -4).Interior.ColorIndex = xlNone
     
       End If
     
    next j.
    Merci pour vos solutions.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour
    1. si t'es sur de vouloir tester un espace et non simplement le vide dans la cellule
    2. n'y verrais tu pas plus clair comme ca ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Sub test()
    'si 'au moins l'une d'entre elles contient un espace
    Dim j As Long, x As Boolean
        For j = 2 To .Range("A65356").End(xlUp).Row
            Add = Array("T", "W", "Z", "AC", "AF", "AI", "AL", "AO", "AR", "AU", "AX", "BA", "BD", "BC", "BJ", "BM", "BP", "BS", "BV", "BY")
            x = False
            For i = 0 To UBound(Add)
                If Range(Add(i) & j) <> " " Then x = True
            Next
     
            If x = True Then
                Range("T" & j).Offset(0, -4).Interior.Color = 65280
            Else
                Range("T" & j).Offset(0, -4).Interior.ColorIndex = xlNone
            End If
        Next
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub test2()
    ' si 'absolument toutes contiennent un espace
       Dim j As Long, x As Boolean,texte
        For j = 2 To .Range("A65356").End(xlUp).Row
            Add = Array("T", "W", "Z", "AC", "AF", "AI", "AL", "AO", "AR", "AU", "AX", "BA", "BD", "BC", "BJ", "BM", "BP", "BS", "BV", "BY")
            x = False
            For i = 0 To UBound(Add)
                texte = texte & Range(Add(i) & j).Text
            Next
     
            If texte = Application.Rept(" ", UBound(Add)) Then
                Range("T" & j).Offset(0, -4).Interior.Color = 65280
            Else
                Range("T" & j).Offset(0, -4).Interior.ColorIndex = xlNone
            End If
        Next
    End Sub
    si c'est le vide que tu teste c'est pas " " mais "" et pour la 2d supposition c'est If trim(texte)="" Then

    je te laisse annalyser cela
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci Patricktoulon pour ton retour.

    Ta deuxième solution me vas très bien elle fonctionne avec quelques modifications.

    Ce que j'avais proposé fonctionne aussi très bien car mon erreur c'étais de mettre " " au lieu de "";

    Par ailleurs j'ai une petite question : qu' est ce qui t a intuitionné d'utiliser des array liste?

    Je suis pas expert mais ceci me servira à l'avenir.

    Cordialement.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    j'utilise un array pour simplifier l'ecriture ta condition if etait interminable j'ai pris peur quand j'ai vu ca
    a déboguer ce serait été un calvaire
    un code propre et clair fonctionne toujours mieux et plus rapide


    pour le test toutes les cellule vides
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub test2()
    ' si 'absolument toutes sont vides
       Dim j As Long, x As Boolean, texte
        For j = 2 To .Range("A65356").End(xlUp).Row
            Add = Array("T", "W", "Z", "AC", "AF", "AI", "AL", "AO", "AR", "AU", "AX", "BA", "BD", "BC", "BJ", "BM", "BP", "BS", "BV", "BY")
            x = False
            For i = 0 To UBound(Add)
                texte = texte & Range(Add(i) & j).Text
            Next
     
            If texte = "" Then
                Range("T" & j).Offset(0, -4).Interior.Color = 65280
            Else
                Range("T" & j).Offset(0, -4).Interior.ColorIndex = xlNone
            End If
        Next
    End Sub
    si pour les couleur tu veux l'inverse change"=" pour"<>"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [XL-2010] Colorer de facons differente des plage de cellules en fonction d'une somme dans des cellules
    Par lionel.koch dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/08/2016, 09h33
  2. [XL-2002] récupérer la valeur d'une cellule en fonction d'un calcul sur sa position
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/10/2010, 23h00
  3. [XL-2003] Mettre une couleur de cellule en fonction d'une valeur.
    Par kev159 dans le forum Excel
    Réponses: 2
    Dernier message: 31/08/2010, 15h26
  4. [MySQL] Changement de couleur d'une cellule en fonction d'une requete
    Par freko dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/07/2008, 16h56
  5. changer couleur cellule en fonction d'une liste
    Par MottetCCSF dans le forum Excel
    Réponses: 4
    Dernier message: 20/06/2007, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo