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 :

Comparaison de cellules ligne par ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Par défaut Comparaison de cellules ligne par ligne
    Bonjour à tous,

    J'ai un classeur excel dans lequel j'importe deux feuilles d'autre classeur, j'y effectue quelque conversion et tri divers, et je souhaite désormais y faire une comparaison de cellule, ligne par ligne.

    Le fichier se compose de la manière suivante :

    Feuille 1
    Colonne 1 | Colonne 2 | Colonne 3
    numéro cl | id | valeur
    50012350 | 181 | 6
    50012350 | 190 | 6
    60021321 | 181 | 2.3
    60021321 | 190 | 15

    Feuille 1
    Colonne 1 | Colonne 2 | Colonne 3
    numéro cl | id | valeur
    50012350 | 181 | 4
    50012350 | 190 | 12
    60021321 | 181 | 2.3
    60021321 | 190 | 21

    Comme vous pouvez le voir, pour chaque numéro client on a plusieurs id, et pour chaque id on a une valeur, valeur qui diverge entre la feuille 1 et 2. C'est cette cellule que je souhaite comparer.

    J'imagine qu'il faut déjà lire ligne / ligne en récupérent le numéro cl puis l'id et du coup faire un compare avec LIKE par exemple.

    La théorie c'est bien mais la pratique coince un peu.

    Donc toute aide ou piste de réflection est la bien venue.

    Merci à tous, et bonne fin de semaine.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Tu n'expliques pas la finalité. Il faut ressortir la différence? si oui, ou la mettre?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Par défaut
    C'est vraie.

    La finalité est de pouvoir remplacer la valeur de la feuille 2 par la valeur de la feuille 1 quand celle ci (feuille1) est inférieur a celle de la feuille 2.

    Au contraire quand la valeur est supérieur un changement de mise en forme de la cellule est l'option privilégié pour le moment.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Citation Envoyé par Theka Voir le message
    C'est vraie.
    La finalité est de pouvoir remplacer la valeur de la feuille 2 par la valeur de la feuille 1 quand celle ci (feuille1) est inférieur a celle de la feuille 2.
    Au contraire quand la valeur est supérieur un changement de mise en forme de la cellule est l'option privilégié pour le moment.
    Nous n'avons pas de don divinatoire et même si l'on peux deviner que la valeur se trouve en colonne C, il serait bien de préciser outre le nom d'une feuille, le n° de colonne, de ligne ou cellule à tester etc...

    Bonjour,
    Si j'ai bien compris ce que tu demandes, voici un exemple de code
    Cela suppose que le nombre de lignes des Feuil1 et Feuil2 est identique.
    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
    Sub Test()
     Dim wkb As Workbook: Set wkb = ThisWorkbook
     Dim ligne As Single
     With wkb
      Dim sht1 As Worksheet: Set sht1 = Worksheets("Feuil1")
      Dim sht2 As Worksheet: Set sht2 = Worksheets("Feuil2")
     End With
     With sht1 ' Feuille 1
      For ligne = 2 To Cells(Rows.Count, 1).End(xlUp).Row
       ' Si cellule Feuil1 < Feuil2
       If .Cells(ligne, 3) < sht2.Cells(ligne, 3) Then
         ' cel Feuil2 prend la valeur Cel Feuil1
         sht2.Cells(ligne, 3) = .Cells(ligne, 3)
        Else ' Sinon
         ' Police Cel Feuil2 rouge
         sht2.Cells(ligne, 3).Font.ColorIndex = 3
       End If
      Next
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Par défaut
    Merci Philippe pour ton exemple.

    Malheuresement les fichiers ne sont pas de même taille. le fichier de la feuille 2 contient plus de ligne que le fichier de la feuille 1.

    Apres pour l'ordre des numéro_lc et id il me suffirait de faire un tri.

    EDIT : Quelque détail supplémentaire

    Voici la feuille 1. On y trouve le numéro_cl / Colonne inutile / Id / et la colonne valeur.

    http://www.flickr.com/photos/64929351@N02/5912644564

    Voici la feuille 2. On y trouve le numéro cl / id / colonne inutile X2 / valeur.

    http://www.flickr.com/photos/64929351@N02/5912083921

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il faut adapter la boucle sur l'exemple que je t'ai envoyé.
    Je ne comprends pas comment tu peux arriver à un résultat en comparant ligne par ligne et en voulant remplacer les valeurs si en même temps le nombre de lignes n'est pas identique.
    A mon avis, tu n'as pas exposé complètement ce que tu cherches à faire.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Par défaut
    Je n'ai pas forcément la meilleur logique/façon de faire.

    Je suis également ouvert à tout commentaire sur la façon de faire. Il est vraie que dire ligne par ligne n'était pas judicieux dans ce cas.
    Cela est un peu plus compliqué, a première vue en tout cas, de ce que j'ai pu faire pour le moment.

    Comme expliquez précedemment, le but est de lire le numéro cl + id et de comparer la valeur pour la ligne equivalente ( donc meme numéro cl + id ) dans l'autre feuille.

    Merci,

Discussions similaires

  1. File2Compare: Comparaison de deux Fichiers ligne par ligne
    Par hackoofr dans le forum Vos Contributions VBScript
    Réponses: 0
    Dernier message: 13/12/2011, 14h48
  2. Comparaison de 2 fichiers ligne par ligne
    Par PoP_NicoW dans le forum Linux
    Réponses: 3
    Dernier message: 12/02/2011, 11h54
  3. Réponses: 12
    Dernier message: 14/05/2008, 17h15
  4. comparaison de fichiers LIGNE PAR LIGNE
    Par bzhbzh dans le forum Excel
    Réponses: 17
    Dernier message: 15/07/2007, 20h33
  5. [VB6] comparaison d'une chaine ligne par ligne
    Par kubiczek dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/05/2006, 22h52

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