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

Excel Discussion :

vba comparer 2 lignes sur plusieurs colonnes et MFC [XL-2016]


Sujet :

Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Technicienne
    Inscrit en
    Mai 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicienne
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 96
    Points : 89
    Points
    89
    Par défaut vba comparer 2 lignes sur plusieurs colonnes et MFC
    Bonjour

    Pas très habile en VBA surtout pour les boucles, je cherche une solution à mon problème :

    Dans ma feuille, il y a 2 lignes que je veux comparer colonne par colonne et si les 2 lignes de la colonne A sont pareils je mets A1 en vert, si elles sont différentes ça sera en rouge.

    Après je veux comparer la colonne B puis la C .... Il peut y avoir plus de 200 colonnes.

    J'ai trouvé comment identifier la dernière colonne, mais je ne réussis pas sélectionner de la colonne A jusqu'à la dernière. J'ai cherché des exemples mais je n'ai pas trouvé ou bien je ne comprend pas l'exemple, j'ai testé plusieurs exemples mais ça ne donne pas ce que je veux.

    Alors je cherche à faire la comparaison sur toute ma feuille pour les 2 premières lignes. Je ne suis pas habile avec les boucles. J'ai besoin de votre aide pour avancer mon projet.

    Voici le code sur lequel je travaille.


    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub CompareTitre()
     
    Dim ValeurA1 As String, ValeurA2 As String, colonne, dc, i, j, dc1
    Dim ValeurB1 As String, ValeurB2 As String
    Dim ValeurC1 As String, ValeurC2 As String
     
    ValeurA1 = range("A1")
    ValeurA2 = range("A2")
    MsgBox ValeurA1 & " " & ValeurA2
        range("A1").Select
        If ValeurA1 = ValeurA2 Then
           Cells(1, 1).Interior.Color = RGB(234, 241, 221)
     
           Else
           Cells(2, 1).Interior.Color = RGB(242, 221, 220)
        End If
     
    ValeurB1 = range("B1")
    ValeurB2 = range("B2")
    MsgBox ValeurB1 & " " & ValeurB2
        range("B1").Select
        If ValeurB1 = ValeurB2 Then
           Cells(1, 2).Interior.Color = RGB(234, 241, 221)
     
           Else
           Cells(2, 2).Interior.Color = RGB(242, 221, 220)
        End If
     
    ValeurC1 = range("C1")
    ValeurC2 = range("C2")
    MsgBox ValeurC1 & " " & ValeurC2
        range("C1").Select
        If ValeurC1 = ValeurC2 Then
           Cells(1, 3).Interior.Color = RGB(234, 241, 221)
     
           Else
           Cells(2, 3).Interior.Color = RGB(242, 221, 220)
        End If
     
    'DC = Cells(1, Columns.Count).End(xlToLeft).Column + 1 'n° de la première colonne vide de la ligne 1
    'Range("A" & Rows.Count).End(xlUp).Select 'sélection de la dernière cellule non vide de la colonne A
     
    'Cells(1, Columns.Count).End(xlToLeft).Select 'sélection de la dernière cellule non vide de la ligne 1
    'DC1 = Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Select 'sélection de la première cellule vide de la ligne 1
    End Sub

    Merci à l'avance de votre aide.

  2. #2
    Membre régulier
    Femme Profil pro
    Technicienne
    Inscrit en
    Mai 2013
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicienne
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 96
    Points : 89
    Points
    89
    Par défaut
    Finalement, avec beaucoup de patience, j'ai trouvé une solution :


    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
    23
    24
    25
    Sub CompareTitre()
    Dim DC, x, y, I, valeurA1, ValeurA2
    Sheets("InsWeb").Select
    DC = Cells(1, Columns.Count).End(xlToLeft).Column + 1 'n° de la première colonne vide de la ligne 1
    I = 1
     
    For I = 1 To DC
    valeurA1 = Cells(1, I).Value
    ValeurA2 = Cells(2, I).Value
        Cells(1, I).Select
        If valeurA1 = ValeurA2 Then
           Cells(1, I).Interior.Color = RGB(234, 241, 221)    'met en Vert si pareil
           Cells(1, I).Interior.Color = RGB(234, 241, 221)    'met en Vert si pareil
           Else
           Cells(1, I).Interior.Color = RGB(255, 255, 64)
           Cells(2, I).Interior.Color = RGB(242, 221, 220)    'met en rouge si différent
           Selection.Font.Bold = True                         'met en gras
           ActiveCell.Font.Color = RGB(255, 0, 0)              'met en rouge
     
        End With
     
        End If
    Next I
     
    End Sub
    Ce code sera peut-être utile à d'autres. Merci

  3. #3
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 410
    Points : 2 871
    Points
    2 871
    Par défaut
    Bonsoir

    On peut donner une solution sans la moindre ligne de code en se basant la mise en forme conditionnelle (MFC) et, de préférence, sur les tableaux structurés.

    Créer un tableau structuré avec vos données (ligne 1 les intitulés, ligne 2 et 3 les valeurs) (ex de A1 à P3).
    Sélectionner les cellules de la A2 à la P2
    Accueil > Mise en Forme conditionnelle > Nouvelle Règle > Utiliser une formule pour... > remplir le cadre avec la formule suivante : =A2=A3 > changer le format et mettre du vert > OK
    Accueil > Mise en Forme conditionnelle > Nouvelle Règle > Utiliser une formule pour... > remplir le cadre avec la formule suivante : =A2<>A3 > changer le format et mettre du rouge> OK

    L'avantage avec les tableaux structurés est que si vous ajoutez des colonnes en début/milieu/fin alors la MFC reste valide.

    En espérant que cela ne soit pas trop tard et que cela aide.

    Bonne nuit

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2012] Somme de quelques lignes sur plusieurs colonnes
    Par Massigne dans le forum Développement
    Réponses: 18
    Dernier message: 22/06/2017, 11h31
  2. prop.table par ligne sur plusieurs colonnes
    Par yalehaire dans le forum R
    Réponses: 11
    Dernier message: 26/02/2016, 18h51
  3. [DI 5.4.1] Partager équitablement n lignes sur plusieurs colonnes
    Par Elros dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 12/09/2014, 09h07
  4. Restitution champ ligne sur plusieurs colonnes
    Par mat_lefebvre dans le forum Excel
    Réponses: 2
    Dernier message: 18/09/2013, 14h56
  5. Réponses: 2
    Dernier message: 11/01/2007, 12h56

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