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 :

Code vba qui permet de comparer un tableau par rapport à un autre tableau


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 010
    Points : 181
    Points
    181
    Par défaut Code vba qui permet de comparer un tableau par rapport à un autre tableau
    Bonjour à tous,

    J'aimerais savoir si quelqu'un pouvait m'aider?
    Je souhaites créer un code qui compare les données salarié du mois en cours avec le mois précèdent et sortir 1 liste
    avec les nouveaux salariés.

    Merci et bonne journée.

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 010
    Points : 181
    Points
    181
    Par défaut Code vba qui permet de comparer un tableau par rapport à un autre tableau
    J'ai trouvé ceci mais la comparaison, ce fait que sur le nom et j'aimerais faire sur le prénom aussi.

    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
    Sub comparaison()
     
    Dim w1 As Worksheet, w2 As Worksheet, w3 As Worksheet
    Dim I As Long
     
    Windows("Classeur1.xls").Activate 'Nom du classeur
     
    Set w1 = Sheets("mois_actuel") 'Feuille qui contient les effectifs
    Set w2 = Sheets("mois_precedent") 'Feuille qui contient l'historique des formations
    Set w3 = Sheets("traitement") 'Feuille qui doit faire apparaitre les personnes qui n'ont pas de formation
     
    'Suppression des données dans la feuille traitement
    w3.Cells.ClearContents
     
    For I = 2 To w1.Range("a65536").End(xlUp).Row ' faire toute la colonne A
     
    If Application.WorksheetFunction.CountIf(w2.Range("a:a"), w1.Range("a" & I)) = 0 Then  'comparer si w2 et different de W1
     
    w1.Range("a" & I & ":c" & I).Copy Destination:=w3.Range("a65536").End(xlUp).Offset(1, 0) 'copier nouvelle entité de la w1 Different en w2 sur w3
     
    End If
     
    Next
     
    MsgBox "Comparaison terminé"
     
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Si ce n'est pas trop tard, essayez ceci (utilisation de SOMMEPROD en VBA):
    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
     Sub comparaison()
        Dim w1 As Worksheet, w2 As Worksheet, w3 As Worksheet
        Dim I As Long
        Dim Cell_A_w1 As String, Cell_B_w1 As String, Plage_A_w2 As String, Plage_B_w2 As String
        Windows("Classeur1.xls").Activate 'Nom du classeur
        Set w1 = Sheets("mois_actuel") 'Feuille qui contient les effectifs
        Set w2 = Sheets("mois_precedent") 'Feuille qui contient l'historique des formations
        Set w3 = Sheets("traitement") 'Feuille qui doit faire apparaitre les personnes qui n'ont pas de formation
        'Suppression des données dans la feuille traitement
        w3.Cells.ClearContents
        DerLig_w1 = w1.Range("A" & Rows.Count).End(xlUp).Row
        DerLig_w2 = w2.Range("A" & Rows.Count).End(xlUp).Row
        Plage_A_w2 = "mois_precedent!A2:A" & DerLig_w2
        Plage_B_w2 = "mois_precedent!B2:B" & DerLig_w2
        For I = 2 To DerLig_w1 ' faire toute la colonne A
            Cell_A_w1 = "mois_actuel!A" & I
            Cell_B_w1 = "mois_actuel!B" & I
            If Application.Evaluate("=SUMPRODUCT((mois_precedent!A2:A50 =" & Cell_A_w1 & ") * (mois_precedent!B2:B50 = " & Cell_B_w1 & "))") = 0 Then   'comparer si w2 et different de W1
                w1.Range("a" & I & ":c" & I).Copy Destination:=w3.Range("a65536").End(xlUp).Offset(1, 0) 'copier nouvelle entité de la w1 Different en w2 sur w3Next
            End If
        Next I
        w3.Select
        MsgBox "Comparaison terminé"
        Set w1 = Nothing
        Set w2 = Nothing
        Set w3 = Nothing
    End Sub
    Cdlt

  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
    12 767
    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 : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sur le même sujet, un billet titré Exporter les données comparées (« Matchées »)
    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 habitué
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 010
    Points : 181
    Points
    181
    Par défaut Code vba qui permet de comparer un tableau par rapport à un autre tableau
    Bonjour et merci pour les réponses. En ce qui concerne de trouver les nouveaux salariées c'est bon. Par contre je n'arrive pas à trouver si le salarié change de nom (par exemple aprés mariage). Comment retrouver le salarié?

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Envoyé par Marc31
    Par contre je n'arrive pas à trouver si le salarié change de nom (par exemple aprés mariage). Comment retrouver le salarié?
    Là, faut pas rêver, si dans 2 listes vous avez la même personne qui porte un nom différent, le meilleur logiciel et le meilleur programmeur au monde ne pourront faire un lien entre les deux s'il n'y a pas identifiant commun appliqué à cette personne.
    Vous devez donc créer un N° d'identifiant attribué à chaque personne dans les 2 listes et faire les recherches non plus sur le noms et prénoms mais sur ce N°, évidemment la personne ayant changé de nom conservera le même N° .

    Cdlt

  7. #7
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Hello,

    Peut-être ajouter un id unique et immuables, dans ta table, num de registre national ?
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par Marc31 Voir le message
    Bonjour et merci pour les réponses. En ce qui concerne de trouver les nouveaux salariées c'est bon. Par contre je n'arrive pas à trouver si le salarié change de nom (par exemple aprés mariage). Comment retrouver le salarié?
    En France, il faut utiliser le NNI (numéro national d'identification) = numéro de sécurité sociale.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

Discussions similaires

  1. Réponses: 12
    Dernier message: 26/01/2011, 12h26
  2. Réponses: 8
    Dernier message: 06/08/2009, 19h01
  3. [E-00] Code VBA qui insère du code VBA
    Par _Sool_ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/11/2008, 09h16
  4. code vba qui fonctionnes plus du jour au lendemain
    Par alexkickstand dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/07/2008, 16h41
  5. Code VBA qui supprime une requête
    Par Fredo67 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/05/2008, 17h47

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