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 :

VBA-Excel Comparaison 2 feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut VBA-Excel Comparaison 2 feuilles
    Bonjour à tous amis dévellopeurs, me voici donc avec un problème sans doute simple pour nombre d'entre vous mais compliqué pour moi qui ne connait pas du tout le vba et qui ne sait trop par ou commencer!

    Bon alors voila mon problème.J'ai deux feuilles: une reference et une autre a trier.

    Reference se présente comme ca :

    Numéro de tel -- Champ2 -- Champ3....


    A trier se présente comme ca :

    Numéro de tel -- Champ2 -- Champ3 -- Champ4 .... Champ26


    Donc mon but et de comparer les numéros de tel de a trier avec reference. Si le numéro est présente dans les deux alors toutes la ligne correspondante dans a trier est copié dans une nouvelle feuille valide, si le numéro n'est pas présent dans reference alors toutes les infos correspondantes au numéro dans a trier sont déplacées dans une feuille anomalie.

    Voila voila (a noter qu'il y a 750 numéros dans reference et 1200 dans a trier)

    merci d'avance pour vos nombreuses reponses!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut Piu² (prononcé Pioutoo )
    pour faire des tests tu peux passer par des boucles for avec un if d'un formulaire à l'autre, mais peux-tu juste nous faire unscreenshot de ce que tu utilises pour qu'on t'en dise plus stp
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu m'arrêtes si je me trompe...
    Dont ça te fait 4 feuilles : "reference", "A trier", "valide" et "anomalie"
    Dans l'ordre,
    ta lecture de fait dans "Reference",
    la recherche dans "A trier"
    les copies :
    si trouvé dans "A trier", alors dans "valide",
    sinon dans "anomalie"
    C'est bien ça ?
    Tu dis
    A+

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    En fait je prend le numéro de tel présent dans a trier
    je vérifie s'il est présent dans reference
    s'il est présent dans réference alors je copie toute la ligne de a trier dans valide
    sinon je copies toutes les infos dans anomalies!

    J'ai trouvé ce topichttp://www.developpez.net/forums/sho...ht=comparaison ou tu a répondu mais n'y connaissant rien du tout en vba j'avou ne pas bien voir les modifications qu'il faudrai y apporter!

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je n'aime pas utiliser le code "d'un autre"
    Tiens, adapte les noms de feuilles (tu en mets bien quatre) et teste ça
    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
    Sub test()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim FL3 As Worksheet
    Dim FL4 As Worksheet
    Dim Cell as range, c
        'On instancie les feuilles de calculs
        Set FL1 = Worksheets("reference")
        Set FL2 = Worksheets("A trier")
        Set FL3 = Worksheets("valide")
        Set FL4 = Worksheets("anomalie")
        'Lecture des lignes renseignées dans "reference"
        For Each Cell In FL1.Range("A2:A" & FL1.Range("A65536").End(xlUp).Row)
            'Recherche dans "A trier" colonne A (1)
            With FL2.Columns(1)
                Set c = .Find(Cell, LookIn:=xlValues)
                If Not c Is Nothing Then
                    'No tél trouvé
                    Rows(c.row).EntireRow.Copy FL3.Rows(FL3.Range("A65536").End(xlUp).Row)
                  Else
                    'No tél pas trouvé
                    Rows(c.row).EntireRow.Copy FL4.Rows(FL4.Range("A65536").End(xlUp).Row)
                End If
            End With
        Next
    End Sub
    Pas testé, il y a peut être une erreur ou deux...
    A+

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    merci beaucoup je vais essayer ca sur le champ

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    voili voili j'ai fait une petite modification afin qu'il copie les infos de a trier en fonction de référence (et non l'inverse) ca ca marche.

    Maintenant j'ai le problème suivant que je n'ai pas réussi à résoudre (mais je ne désespère pas encore). La macro ne saute pas de ligne après avoir inséré une ligne dans valide donc à chaque fois il réécrit par dessus et je ne vois donc que le dernier enregistrement. (on le voit bien en faisant pas à pas) De plus il semblerai que ca n'enregistre que dans valide et pas dans anomalie (j'ai pas encore creusé pour le moment je me concentre surtout pour voir pourquoi ca veut pas sauter de ligne)

    Merci

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Me revoila donc avec la solution a mon problème (du moins il me semble)

    J'ai simplement remplacé End(xlUp).Row par End(xlUp).Row+1.

    Par contre il m'enregistre tout dans valide comme si tous les numéro dans a trier étaient également présent dans reference. Cela n'est point possible puisque a trier -> 1215 numéros tandis que référence -> 725 numéros!

    SI quelqu'un a une idée en passant...

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    ce n'est pas impossible si tu as des doublons dans ta liste a trier. tu devrais commencer par trier tes données et enlever les doublons. cepandant, statisquement il doit bien y avoir au moins une anomalie, donc le plus simple pour en etre sur...provoque en une. met un n° bidon et tu verras bien comment ton code réagis

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    nan je suis certain qu'il y a des anomalies j'ai même commencé par vérifier ca avec un simple ctrl + F, les 4 ou 5 premières lignes sont des anomalies et pourtant il me les mets quand même dans valide!

  11. #11
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Problème résolu, travail terminé! Merci a tous pour votre aide.

    Voici le code final que j'ai utilisé au cas où ca intéresserai quelqu'un un jour

    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
    Sub test()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim FL3 As Worksheet
    Dim FL4 As Worksheet
    Dim Cell As Range, c
     
        'On instancie les feuilles de calculs
        Set FL1 = Worksheets("a_trier_08")
        Set FL2 = Worksheets("Reference")
     
        Set FL3 = Worksheets("valide")
        Set FL4 = Worksheets("anomalie")
     
        'Lecture des lignes renseignées dans "a trier"
     
        For Each Cell In FL1.Range("A2:A" & FL1.Range("A65536").End(xlUp).Row)
            'Recherche dans "reference" colonne A (1)
     
            With FL2.Columns(1)
                Set c = FL2.Columns(1).Find(Cell, LookIn:=xlValues)
     
                If Not c Is Nothing Then
                    'No tél trouvé
                    Cell.EntireRow.Copy FL3.Rows(FL3.Range("A65536").End(xlUp).Row + 1)
     
                  Else
                    'No tél pas trouvé
                    Cell.EntireRow.Copy FL4.Rows(FL4.Range("A65536").End(xlUp).Row + 1)
                End If
            End With
        Next
     
    End Sub
    Merci!!

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello me revoilou.
    A part le +1, (j'avais bien dit... ) qu'as-tu modifié ?
    A+

    PS - N'oublie pas de taguer Résolu, le bouton en bas de cette fenêtre

Discussions similaires

  1. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 12h51
  2. VBA - Excel - comparaison de deux feuilles
    Par toto14 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/10/2006, 13h52
  3. [VBA]-EXCEL: choix de feuille et somme de plage
    Par silevin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/01/2006, 17h51
  4. [VBA][Excel] Copie de feuille a l'identique
    Par le_sonic dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/01/2006, 16h48
  5. [VBA] [Excel] Selection des feuilles
    Par KOFJCH dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 18h18

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