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 :

Comparer le contenu de deux cellules


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 21
    Points
    21
    Par défaut Comparer le contenu de deux cellules
    Bonjour à tous par cette belle journée de mai !

    Le weekend est fini et il faut reprendre le travail. Et dans mon cas je cherche à faire un petit programme qui m'éviterait un fastidieux travail manuel. Je dispose de deux listes, chacune dans une cellule excel, que je voudrais comparer.

    Exemple :
    AO BF DR JT
    AO BF DR G JT

    Et que le programme m'indique que sur la deuxième liste il y a "G" en plus.

    Car en réalité les listes font une trentaine de couples de lettres (une ou deux lettres) et que j'ai environ une cinquantaine de listes à comparer deux à deux.
    J'ai déjà réussi à les mettre au même format, mais quelqu'un aurait-il de quoi me mettre sur la voie pour les comparer automatiquement?
    Car à le faire à la main, je deviens folle...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Bonjour

    Afin de mieux répondre à ton attente pourrais tu préciser si tu ne doit comparer que la première liste à toutes les autre ou si ensuite la deuxième liste doit être comparé elle aussi puis la troisième etc.

    A moins que ce ne soit que 2 par 2 ?
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    les listes sont à comparer deux par deux.

    Pour le moment j'ai mis dans un classeur :
    - sur une feuille une série de listes
    - sur une autre une autre série de listes

    La première liste de la première feuille à comparer avec la première liste de la deuxième feuille, la deuxième avec la deuxième, etc...

    En fait il s'agit de comparer deux sources : des listes émises "manuellement" et d'autres "automatiquement".

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Bonjour

    Voila je t’ai fait un petit bout de code qui je l’espère est suffisamment commenté pour que tu puisse le modifier a tes besoins spécifique.

    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
    Sub comparaison()
      Dim F1 As Worksheet, F2 As Worksheet
      Dim chaine As Variant
      Dim valeur As String
      Dim Boucle1 As Integer, boucle2 As Integer
     
      'Selection des feuille à utiliser
      Set F1 = Worksheets("Feuil1")
      Set F2 = Worksheets("Feuil2")
     
      'on boucle sur les chaines de la 1er feuille colonne 1 à partir de la ligne 2
      For Boucle1 = 2 To F1.Cells(Rows.Count, 1).End(xlUp).Row
        'convertir la chaine en tableau
        chaine = Split(F1.Cells(Boucle1, 1), " ")
        'parcourir le tableau
        For boucle2 = 0 To UBound(chaine)
          'si la valeur dans le tableau n'est pas dans la chaine de la feuille 2
          If Not InStr(F2.Cells(Boucle1, 1), chaine(boucle2)) > 0 Then
          'on ecrit dans la colonne 2 la valeur manquante
          F2.Cells(Boucle1, 2) = F2.Cells(Boucle1, 2) & chaine(boucle2) & " "
          End If
        Next
     
      'Au besoin on vérifie dans l'autre sens
     
        'convertir la chaine en tableau
        chaine = Split(F2.Cells(Boucle1, 1), " ")
        'parcourir le tableau
        For boucle2 = 0 To UBound(chaine)
          'si la valeur dans le tableau n'est pas dans la chaine de la feuille 1
          If Not InStr(F1.Cells(Boucle1, 1), chaine(boucle2)) > 0 Then
          'on ecrit dans la colonne 2 la valeur manquante
          F1.Cells(Boucle1, 2) = F1.Cells(Boucle1, 2) & chaine(boucle2) & " "
          End If
        Next
      Next
    End Sub
    bon courage
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Ah Zyhack, , 1000 fois !

    Ton code marche à la perfection, et tu n'imagines pas le nombre d'heure de travail ennuyeux (pour rester polie) il m'évite !
    De plus au passage j'ai appris de nouvelles fonctions comme "split" et "Ubound" (merci le "F1" )

    Je suis aux anges !!!!

    Encore merci cher Zyhack !

    Et si cela peut servir à quelqu'un, voici la version adaptée à mon classeur :

    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
    Sub comparaison()
      Dim F1 As Worksheet, F2 As Worksheet
      Dim chaine As Variant
      Dim valeur As String
      Dim Boucle1 As Integer, boucle2 As Integer
     
      'Selection des feuille à utiliser
      Set F1 = Worksheets("AC Auto")
      Set F2 = Worksheets("AC Officiel")
     
      F1.Range("C3:D44").Clear
     
      'on boucle sur les chaines de la 1er feuille colonne 1 à partir de la ligne 2
      For Boucle1 = 3 To 44
        'convertir la chaine en tableau
        chaine = Split(F1.Cells(Boucle1, 2), " ")
        'parcourir le tableau
        For boucle2 = 0 To UBound(chaine)
          'si la valeur dans le tableau n'est pas dans la chaine de la feuille 2
          If Not InStr(F2.Cells(Boucle1, 2), chaine(boucle2)) > 0 Then
          'on ecrit dans la colonne 3 la valeur manquante
            F1.Cells(Boucle1, 3) = F1.Cells(Boucle1, 3) & chaine(boucle2) & " "
          End If
        Next
     
      'Au besoin on vérifie dans l'autre sens
     
        'convertir la chaine en tableau
        chaine = Split(F2.Cells(Boucle1, 2), " ")
        'parcourir le tableau
        For boucle2 = 0 To UBound(chaine)
          'si la valeur dans le tableau n'est pas dans la chaine de la feuille 1
          If Not InStr(F1.Cells(Boucle1, 2), chaine(boucle2)) > 0 Then
          'on ecrit dans la colonne 4 la valeur manquante
          F1.Cells(Boucle1, 4) = F1.Cells(Boucle1, 4) & chaine(boucle2) & " "
          End If
        Next
      Next
    End Sub

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

Discussions similaires

  1. comparer le contenu de deux cellules
    Par maroinoide dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2009, 12h53
  2. Décalage contenu de deux cellules
    Par Sayrus dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/10/2006, 12h31
  3. Comparer le contenu de deux requêtes
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 04/05/2006, 11h43
  4. comparer le contenu de deux tables?
    Par sessime dans le forum Requêtes
    Réponses: 5
    Dernier message: 07/03/2006, 14h05
  5. Comparer le contenu de deux vecteurs
    Par misou83 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 20/07/2005, 17h17

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