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 :

Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel
    Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel


    Bonsoir,

    J'ai une question concernant VBA, merci pour les réponses concernant les formules, j'ai acheté un livre pour m'y remettre et ça va mieux. Le plus dur a été de s'y remettre.
    Sinon, je me suis remis à faire du VB et ça bogue un peu.
    Donc voici ce que je cherche :


    Bonjour, j'ai 1 objectif que j'atteins étape par étape, donc, je teste au fur à mesure ce que je fais et sais faire.
    Donc, mon objectif final, ce n'est pas grave si je l'obtient pas car je le cherche.
    Mais, j'ai 1 objectif intermédiare que je n'ai pas atteint et je bloque, je souhaite passer cette étape.
    L'objectif final : Comparer l'égalité des colonnes B du fichier 1 avec la colonne B du fichier 2
    Sachant que la colonne du fichier 2 est classé de 1 à x (ex : de 1 à 1000, colonne A)
    Le 1er fichier est un ancien fichier classé qui est le même fichier trier selon une autre colonne, la colonne A, les 1 à x (c'est à dire 1 à 1000 dans le désordre, le fichier est sauvegardé et comparé au fichier mis à jour quand j'ai le temps)
    Sauf que sur la colonne B, des modifications sont faites.
    Donc, par rapport au 1er fichier, la 1ère colonne A ne change pas, de 1 à 1000, mais est dans le désordre, la colonne B, elle, change, elle n'est plus la même.
    Donc, je dois vérifier si le contenu de la colonne B correspond dans les fichies au même numéro de la colonne A qui reste invariant, mais, classé dans le désordre.
    Le 1er fichier de référence, la colonne A reste la même, s'il y a eu 5 fichiers diffarents, la colonne A est inchagée, triée dans le désordre, mais, des modifications ont pu avoir lieu dans la Colonne B durant toute l'année, le but est de faire en sorte que le 1er fichier, la colonne A reste inchangée, mais, la colonne B est mise à jour.
    Voilà ce que je cherche à faire.
    La seule chose, c'est que dans ce fichier, des lignes peuvent être rajoutées, la colonne A se rajoute, elle ne varie pas, mais change dans l'ordre, la ligne B attribuée, elle, est liée à la ligne A, mais continue a évoluée, donc, je ne peux pas dire que la ligne A reste fixe, elle change.

    Exemple :
    J'ai 100 lignes, colonne A : De la ligne 1 à 100, la colonne B correspond à une colonne A fixe
    Une fois les lignes C, D ou autres triées, j'ai A qui n'est plus trié, B correspond, mais au fil du temps, elle change de valeur.
    A la fin de l'année, je veux que A soit toujours trié pareil, mais B a changé, je veux juste mettre à jour B avec A correspondant, tjrs de 1 à 100.
    J'ai testé une routine pas à pas, mais quand tout marche et que je teste le tout, ça ne marche plus.
    Mon boulot me prenant assez de temps et étant donné que je dois faire un bilan en fin d'année sur mes comptes postaux, j'ai du mal à tout trier, donc, si quelqu'un a une meilleure routine ou une idée, je suis intéressé.

    Pour faire plus vite, j'ai décidé de coller une colonne dans une autre et de tout faire dans un seul fichier, mais si je peux faire ça à partir de 2 fchiers différents, ça peut m'aider.

    Donc, si je peux trouver une astuce pour aller plus vite ou si je me suis tromper dans mon idée, merci de me l'indiquer :

    J'ai pris le fichier 1, j'ai copié la 1ère colonne dans la colonne A et la colonne B dans la colonne D du nouveau fichier.
    J'ai pris le 2ème fichier, j'ai copié la colonne A dans la colonne B du nouveau fichier et la colonne B dans la colonne C du nouveau fichier.
    Ensuite, j'ai comparé la colonne A avec la Colonne B, quand j'ai égalité entre la colonne A et B, j'écrase la colonne C par la colonne D car la colonne D est plus récente que la colonne C.
    Voilà. Si j'arrive à faire celà, j'ai gagné du temps, mais, si je peux ne pas avoir à faire ces copier coler et comparer ces deux fichiers, ce sera mieux, si quelqu'un a une solution, merci.

    Sujet : Comparer les colonnes dans l'ordre du fichier 1 avec la colonne du fichier 2, dans le désordre; Si la colonne B du fichier 2 est différente que la colonne B du fichier 1 en fonction du numéro de la colonne A, alors, écraser la colonne B du fichier 1.

    Voici ce que j'ai fait,

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Sub Comparaison() 
    ' 
    ' transfert Macro 
    ' Macro enregistrée le 09/01/2007 par laurenterc 
    ' 
      Dim ObjetClasseur As Workbook 
      Dim Lig     As Long 
      Dim Lign    As Long 
      Dim Col     As String 
      Dim Colonn  As String 
      Dim NbrLig  As Long 
      Dim NumLig  As Long 
      Dim NombLig  As Long 
      Dim NbsupLig  As Long 
      Dim Val     As Long 
     
      ' Set ObjetClasseur = GetObject("D:\Donnees\DossierEric\Bilan_Annuel.xls") 
      ' Set ObjetClasseur = GetObject("D:\An2007\Eric\Total.xls") 
     '  A ne pas considérer, seulement si je vais chercher les fichiers dans 2 dossiers différents
     
      Sheets("Feuil1").Activate ' feuille de destination 
      Col = "A" ' Colonne à tester 
      Colonn = "B" ' Colonne de référence 
      NumLig = 0 
      NbsupLig = 0 
      With Sheets("Feuil2") ' feuille source 
        NbrLig = .Cells(65536, Col).End(xlUp).Row 
        NombLig = .Cells(65536, Col).End(xlUp).Row 
      For Lig = 1 To NbrLig 
      If .Cells(Lig, Col).Value <> "" Then 
        Val = .Cells(Lig, Col).Range("A1") 
          For Lign = 1 To NombLig 
            If .Cells(Lign, Colonn).Value <> "" Then 
              .Cells(Lign, Colonn).Range("B1").Select 
                If Val = .Cells(Lign, Colonn).Value Then 
                .Cells(Lign, Colonn).Range("C1").Copy 
                .Cells(Lig, Col).Range("D1").Paste 
                End If 
                NombLig = NombLig + 1 
                Cells(NombLig, 1).Select 
              End If 
          Next 
      End If 
      NumLig = NumLig + 1 
      Cells(NumLig, 1).Select 
      Next 
      End With 
     
    ' 
        ActiveWorkbook.Save 
        Application.WindowState = xlMinimized 
        Application.WindowState = xlNormal 
        Application.WindowState = xlMinimized 
        Range("A1").Select 
        Cells.Find(What:="lan", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ 
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ 
            .Activate 
        Range("F64").Select 
        ActiveWorkbook.Save 
        ActiveWorkbook.Save 
        ActiveWorkbook.Save 
        ActiveWorkbook.Save 
        ActiveWorkbook.Save 
    End Sub

  2. #2
    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
    Un pb à la fois... Je réponds à ça
    Sachant que la colonne du fichier 2 est classé de 1 à x (ex : de 1 à 1000, colonne A)
    Le 1er fichier est un ancien fichier classé qui est le même fichier trier selon une autre colonne, la colonne A, les 1 à x (c'est à dire 1 à 1000 dans le désordre, le fichier est sauvegardé et comparé au fichier mis à jour quand j'ai le temps)
    Sauf que sur la colonne B, des modifications sont faites.
    Donc, par rapport au 1er fichier, la 1ère colonne A ne change pas, de 1 à 1000, mais est dans le désordre, la colonne B, elle, change, elle n'est plus la même.
    Donc, je dois vérifier si le contenu de la colonne B correspond dans les fichies au même numéro de la colonne A qui reste invariant, mais, classé dans le désordre.
    D'après ce que j'ai compris, je te propose ça :
    Fichier1 :
    - Tu définis ta plage de données, colonne A
    - Tu parcours ligne par ligne les cellules de cette colonne et relèves la "donnée" sur "LaLigne"
    fichier2 :
    - Tu recherches la cellule correspondante colonne A (contenant la "donnée")
    - Trouvée, tu compares la donnée placée dans la colonne B de la ligne à celle du fichier1 (par obligatoire)
    - Tu la copies sur Fichier1 colonne B sur "LaLigne"
    (là, tu peux te dispenser de comparer puisque si elle est différente tu écrases celle du fichier1. Si elle est identique et que tu la copies aussi... ça simplifie le code )
    Si tu es d'accord avec ça, tu dis, on est "plusieurs" à pouvoir t'aider
    A+

Discussions similaires

  1. Réponses: 12
    Dernier message: 15/09/2014, 18h51
  2. Réponses: 1
    Dernier message: 14/03/2014, 13h35
  3. Réponses: 2
    Dernier message: 14/02/2011, 19h30
  4. comparaison des deux classeurs excel
    Par arch enemy123456 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/11/2006, 11h09
  5. VBA - Excel - comparaison de deux feuilles
    Par toto14 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 13/10/2006, 13h52

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