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 :

Comparaisons de lignes Excel [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut Comparaisons de lignes Excel
    Bonjour à tous,

    Je souhaite comparer chaque ligne de la feuille 1 à celles de la feuille 2 d’un classeur Excel
    Les lignes à comparer ne sont pas forcément placées au même endroit dans les feuilles

    Exemple :

    Je recherche la présence du contenu de la cellule A2 (la colonne A est ma référence) de la feuille 1 quelque part dans la colonne A de la feuille 2.

    Si je ne retrouve pas ce contenu, alors j’inscris « Nouveau » dans la cellule B2 de la feuille 1

    Si je retrouve ce contenu, par ex. en cellule A** de la feuille 2, alors je compare le contenu de la cellule C2 de la feuille 1 avec celui de C** de la feuille 2, D2 avec D**, E2 avec E**, etc.…, jusqu'à la dernière cellule renseignée de la ligne 2 de la feuille1 (cellules intermédiaires vides possibles).

    Dans le cas ou tout est identique, alors j’inscris « Présent » dans la cellule B2 de la feuille 1

    S’il y a des différences, alors j’inscris « Modifié » dans la cellule B2 de la feuille 1

    Et je refais ensuite la même manip pour la cellule A3 de la feuille 1, A4, A5, etc.… jusqu'à la dernière cellule renseignée de la colonne A de la feuille 1

    La feuille 1 contient (par exemple) les données de l'année en cours et la feuille 2 les données de l'année précédente (en réalité, il y a beaucoup plus de lignes et de colonnes renseignées)

    J'ai inscrit en bleu dans le classeur joint (Listes A Comparer.xls) (feuille1) le résultat qui devrait apparaître dans le cas de cet exemple

    J’espère que c’est à peu près clair.

    Merci d’avance pour votre aide

  2. #2
    Membre chevronné
    Avatar de bifconsult
    Homme Profil pro
    Consultant
    Inscrit en
    Mars 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 189
    Par défaut
    Bonjour,

    A première vue, une combinaison de INDEX, EQUIV, SI, OFFSET. Mais probablement pas ausssi facile à mettre en place par rapport à un petit code VBA.

    Je me tournerais plutôt vers cette solution à moins qu'une contrainte quelconque vous proscrit les fichiers contenant du code ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    Une solution en code VBA me conviendrait parfaitement.

    Merci par avance

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour le Forum, chniause
    essaies et adaptes ce code
    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
    Sub comparer()
    Dim ChCel As Range, Plage1 As Range, Plage2 As Range, tBl1(), tBl2()
    Dim x As Long, y As Long, dl As Long, chaineTbl As String, chaineCel As String
     
    With Sheets("feuil1")
      dl = .Range("A" & .Rows.Count).End(xlUp).Row 'derniere ligne renseignée
      ReDim tBl1(1 To dl, 1 To 8)
      Set Plage1 = .Range("A2:H" & dl)
      tBl1() = Plage1
    End With
    With Sheets("feuil2")
      dl = .Range("A" & .Rows.Count).End(xlUp).Row 'derniere ligne renseignée
      ReDim tBl2(1 To dl, 1 To 8)
      Set Plage2 = .Range("A2:H" & dl)
      tBl2() = Plage2
      For x = 1 To UBound(tBl1, 1)
        Set ChCel = Plage2.Find(tBl1(x, 1))
        If ChCel Is Nothing Then
          Sheets("feuil1").Range("B" & x + 1) = "Nouveau"
        Else
          chaineTbl = tBl1(x, 3) & tBl1(x, 4) & tBl1(x, 5) & tBl1(x, 6) & tBl1(x, 7) & tBl1(x, 8)
          chaineCel = .Range("C" & ChCel.Row) & .Range("D" & ChCel.Row) & .Range("E" & ChCel.Row) & .Range("F" & ChCel.Row) & .Range("G" & ChCel.Row) & .Range("H" & ChCel.Row)
          If chaineTbl = chaineCel Then Sheets("feuil1").Range("B" & x + 1) = "Présent"
          If chaineTbl <> chaineCel Then Sheets("feuil1").Range("B" & x + 1) = "Modifié"
        End If
      Next x
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je suis étonné mercatog, déjà bonjour, quand j'ai envoyé ma réponse, la tienne n'apparaissait pas ou j'ai la berlue, toutes mes excuses

    Bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Par défaut
    Je ne suis pas très sur de faire la bonne manip pour la réponse car c'est la 1ère fois que je dialogue sur un forum.
    Si ça fonctionne, je veux faire savoir à "mercatog" que la proposition de code VBA proposée me convient parfaitement et répond pleinement à mon besoin.

    De même, pour "casefayere", le code semble fonctionner aussi.

    Merci aussi de ton intérêt "bisconsult"

    Je tiens à vous remercier pour votre réactivité et j'espère pouvoir à mon tour pouvoir répondre aussi efficacement que vous aux éventuelles futures demandes qui correspondront à mes qualifications

    Merci encore

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/07/2011, 23h57
  2. Comparaison de lignes sur deux base
    Par Le Tchetche dans le forum Langage SQL
    Réponses: 5
    Dernier message: 12/01/2006, 11h17
  3. copier des lignes excel
    Par deathsurfer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2006, 10h39
  4. compteur de ligne excel avec filtre
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/12/2005, 11h04
  5. [DEBUTANT]comparaison une ligne avec un STRing
    Par Battosaiii dans le forum Langage
    Réponses: 2
    Dernier message: 05/05/2005, 20h15

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