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 :

Mise en forme conditionnelle après comparaison des lignes consécutifs d'un fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Mise en forme conditionnelle après comparaison des lignes consécutifs d'un fichier Excel
    Bonjour à tous,

    Je débute en VBA et je bute sur un point.
    Voici un exemple de mon fichier :

    Colonne A------Colonne B------Colonne C--------Colonne D
    01/02/2010-----Personne1-----TARTEMPION-----XXX
    05/04/2010-----Personne1-----TARTEMPION-----AAA
    06/04/2010-----Personne1-----TARTEMPION-----XXX
    25/04/2010-----Personne1-----TARTEMPION-----XXX
    01/02/2010-----Personne1-----DUPONT----------XXX
    15/04/2010-----Personne1-----DUPONT----------XXX
    06/05/2010-----Personne1-----DUPONT----------AAA
    12/05/2010-----Personne1-----DUPONT----------XXX

    Le tableau est au préalable trié par colonne B, Colonne C puis Colonne A et celui-ci ne peut pas changer.

    Ce que je veux faire c'est comparer pour le couple ColonneB+ColonneC la valeur de la Colonne D.

    Si pour un même couple ColonneB+ColonneC on a Colonne D = XXX mais que pour la ligne suivante et pour le même couple nous avons XXX pour la colonne D alors la première ligne doit apparaitre en bleu.

    Le résultat attendu :

    Colonne A------Colonne B------Colonne C-------Colonne D
    01/02/2010-----Personne1-----TARTEMPION-----XXX
    05/04/2010-----Personne1-----TARTEMPION-----AAA
    06/04/2010-----Personne1-----TARTEMPION-----XXX
    25/04/2010-----Personne1-----TARTEMPION-----XXX
    01/02/2010-----Personne1-----DUPONT---------XXX
    15/04/2010-----Personne1-----DUPONT---------XXX
    06/05/2010-----Personne1-----DUPONT---------AAA
    12/05/2010-----Personne1-----DUPONT---------XXX

    J'espère que ma demande est assez claire.
    Merci de bien vouloir m'aider je suis un peu perdue.

    J'attends impatiemment vos réponses

    A+

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Points : 243
    Points
    243
    Par défaut
    C'est peut être pas optimisé mais dans l'idée, ça pourrait être ça.
    (Si quelqu'un maîtrise le With mieux que moi, je l'invite à me corriger )

    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
    19
    20
    21
    Dim Ws as Excel.WorkSheet
    Dim nbRow as Integer
    Dim cpt as Integer
    
    Set Ws = ThisWorkbook.Worksheets("TaFeuille")
     
    nbRow = Ws.Range("A").End(xlDown).Row
    
    For cpt = 3 To nbRow
    
       If Ws.Range("B" & cpt).value = Ws.Range("B" & cpt - 1).value & Ws.Range("C" & cpt).value = Ws.Range("C" & cpt - 1).value then
          
          If Ws.Range("D" & cpt).value = "XXX" & Ws.Range("D" & cpt - 1).value = "XXX" Then
    
             Ws.Range("B" & cpt).Interior.Color = Le code de la couleur
    
          End If
    
       End If
    
    Next cpt
    Par contre, je ne suis pas sur pour le Interior.Color, j'ai un gros doute.

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour ascef, bonjour tarnx,

    J’ai juste rajouté mon grain de sel au code de tarnx

    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
    19
    20
    21
    22
    Sub Test()
     
    Dim nbRow As Integer
    Dim cpt As Integer
     
        'avec With pour faire plaisir à tarnx
        With Worksheets("Feuil1") ' A adapter
        'On recherche le nombre de lignes
        nbRow = .Range("A1").End(xlDown).Row
        'En supposant que la première ligne est une ligne d'en-tête et que les données débutent en ligne 2.
        For cpt = 3 To nbRow
            'On concatène les cellules en colonne B et colonne C puis on compare la ligne n-1 et la ligne n
            If .Cells(cpt - 1, 2) & .Cells(cpt - 1, 3) = .Cells(cpt, 2) & .Cells(cpt, 3) Then
                'On compare la valeur des cellules des lignes n et n-1 de la colonne D
                If .Range("D" & cpt).Value = "XXX" And .Range("D" & cpt - 1).Value = "XXX" Then
                    .Range("B" & cpt - 1).EntireRow.Font.Color = RGB(0, 0, 255) 'Le code de la couleur
                End If
            End If
        Next cpt
        End With
     
    End Sub
    Cordialement.

Discussions similaires

  1. [XL-2010] Mise en forme conditionnelle après rechercheV
    Par lovely2604 dans le forum Conception
    Réponses: 9
    Dernier message: 21/11/2014, 14h58
  2. Réponses: 5
    Dernier message: 29/06/2014, 14h27
  3. Réponses: 2
    Dernier message: 10/06/2014, 12h18
  4. [XL-2010] Mise en forme conditionnelle sur toute une ligne
    Par Ginette54 dans le forum Excel
    Réponses: 8
    Dernier message: 16/12/2013, 16h39
  5. Suppression ligne + Mise en forme conditionnelle
    Par DubDub dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 25/02/2009, 07h15

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