Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance



  1. #1
    johpascal

    Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance


    ------

    Bonjour,

    Je me permets de vous écrire car j'ai un problème à résoudre avec une macro Excel (je ne connais rien en vba). J’ai vu un de vos posts sur le forum que j'ai essayé d'adapter à mon problème, mais cela ne fonctionne pas.
    En effet, j'ai deux fichiers EXCEL MonFichier_1 et MonFichier_2. Mon fichier MonFichier_1 est le fichier de référence. Dans ce fichier MonFichier_1 en colonne "K" (colonne de référence), il existe certaines données portant la même dénomination que dans le fichier MonFichier_2 en colonne "K" également. j'aimerais comparer ces deux colonnes, et s'il y a correspondance exacte, copier et coller pour la cellule testée correspondante, les colonnes A,B,C,D,E,F,G,H du fichier MonFichier_1 des cellules de la même ligne que la cellule testée vers le fichier MonFichier_2 sur la même ligne que la cellule testée en colonnes A,B,C,D,E,F,G,H.
    En fait le fichier MonFichier_2 contient plus d'éléments que le MonFichier_1, certains éléments sont identiques (portent la même les mêmes dénominations de part et d'autres en colonne "K"). et dans le MonFichier_1 j'ai déjà complété les colonnes A,B,C,D,E,F,G,H. j'aimerais comparer les colonnes "K" des deux fichiers et compléter automatiquement s'il y a correspondance les colonnes A,B,C,D,E,F,G,H du fichier MonFichier_2 (une sorte de mise à jour).

    Voici une ébauche du code que j’ai voulu adapter et qui ne fonctionne pas :


    Sub Macro1()
    Dim Cellule As Variant
    Dim MonFichier_1 As Workbook
    Dim LastLine As Integer
    Dim Tableau1() As Variant
    Dim Tableau2() As Variant
    Dim I As Integer

    ' On cherche le numéro de la dernière ligne utilisée dans la colonne K
    LastLine = Range("A65536").End(xlUp).Row

    ' On redimensionne les 2 tableaux de façon dynamique
    ReDim Tableau1(LastLine)
    ' On a besoin de stocker les valeurs de 8 colonnes
    ReDim Tableau2(LastLine, 8)
    Application.ScreenUpdating = False
    ' On charge le tableau1 avec les valeurs de la colonne K du MonFichier_2
    For I = 1 To LastLine
    Tableau1(I) = Range("K" & Trim(Str(I)))
    Next I

    ' On ouvre le fichier MonFichier_1.xls et on lui donne le focus
    Workbooks.Open Filename:=ActiveWorkbook.Path & "\MonFichier_1.xls"
    Set MonFichier_1 = ActiveWorkbook
    MonFichier_1.Activate

    ' On scanne la colonne K du MonFichier_1 avec les valeurs contenues dans le tableau1
    For I = 1 To LastLine
    Set Cellule = ActiveSheet.Range("Pointeur"). Find(Tableau1(I), lookat:=xlWhole)
    Tableau2(I, 1) = Cellule.Offset(0, -3).Value
    Tableau2(I, 2) = Cellule.Offset(0, -4).Value
    Tableau2(I, 3) = Cellule.Offset(0, -5).Value
    Tableau2(I, 4) = Cellule.Offset(0, -6).Value
    Tableau2(I, 5) = Cellule.Offset(0, -7).Value
    Tableau2(I, 6) = Cellule.Offset(0, -8).Value
    Tableau2(I, 7) = Cellule.Offset(0, -9).Value
    Tableau2(I, 8) = Cellule.Offset(0, -10).Value
    Next I

    'On referme le classeur MonFichier_1.xls dont on n'a plus besoin
    MonFichier_1.Close

    ' On recopie le contenu du tableau dans les colonnes H,G,F,E,D,C,B,A
    For I = 1 To LastLine
    Range("H" & Trim(Str(I))) = Tableau2(I, 1)
    Range("G" & Trim(Str(I))) = Tableau2(I, 2)
    Range("F" & Trim(Str(I))) = Tableau2(I, 3)
    Range("E" & Trim(Str(I))) = Tableau2(I, 4)
    Range("D" & Trim(Str(I))) = Tableau2(I, 5)
    Range("C" & Trim(Str(I))) = Tableau2(I, 6)
    Range("B" & Trim(Str(I))) = Tableau2(I, 7)
    Range("A" & Trim(Str(I))) = Tableau2(I, 8)
    Next I
    Application.ScreenUpdating = True
    End Sub

    Un grand Merci d'avance.

    Pascal

    -----

  2. Publicité
  3. #2
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Pourquoi vouloir faire du VBA, alors que les formules permettent largement de faire ce qu'on veut.

    Dans la 2eme feuille de ton fichier N°2 en A1, tu y mets la formule suivante:
    =si(esterreur(recherchev(Feuil 1!$K1,[MonFichier_1.xls]Feuil1!$K:$K,1,Faux));A1;MonFi chier_1.xls]Feuil1!A1)

    Tu recopie cette formule sur les colonnes B à H (avec la poignée excel pour qu'il incrémente ce qui va bien dans la formule)
    et tu copies les cellules A1 à H1 jusqu'à la dernière ligne correspondant à la première feuille de ton fichier N°2

    si je n'ai pas fais d'erreur de parenthèses, cela doit marcher.
    Dernière modification par fregoli ; 26/04/2016 à 16h41.
    Une allumette peut aussi faire déborder le vase...

  4. #3
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Evidemment, y'a une erreur qui traine :

    =si(esterreur(recherchev(Feuil 1!$K1,[MonFichier_1.xls]Feuil1!$K:$K,1,Faux));Feuil1!A 1;MonFichier_1.xls]Feuil1!A1)
    Dernière modification par fregoli ; 26/04/2016 à 16h45. Motif: Y'a pas de blanc, je ne sais pas pourquoi il en rajoute...
    Une allumette peut aussi faire déborder le vase...

  5. #4
    johpascal

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Bonsoir Fregoli,

    Merci pour ta réaction rapide. mais, j'ai une erreur (voir image jointe).

    Bien à toi,

    Pascal
    Images attachées Images attachées

  6. #5
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    En effet, il y a des erreurs dans la formule copiée-collée.

    La formule copiée-collée depuis le fichier excel est ci-dessous: (en espérant qu'il n'y a pas de blanc et autres cochonneries qui s'y mettent)

    =SI(ESTERREUR(RECHERCHEV(Feuil 1!$K1;[Fichier1.xls]Feuil1!$K:$K;1;FAUX));Feuil1!A 1;[Fichier1.xls]Feuil1!A1)
    Dernière modification par fregoli ; 27/04/2016 à 10h34. Motif: Il y a encore un blanc dans "Feuil1"...
    Une allumette peut aussi faire déborder le vase...

  7. A voir en vidéo sur Futura
  8. #6
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Bien sûr, ,je suppose que ton excel est en version française, sinon ce n'est pas "Feuil" qu'il faut mettre mais "Sheet", idem pour les fonctions ESTERREUR et RECHERCHEV

    NB: il ne doit pas y avoir de Blanc dans la formule, donc les supprimer après le copié-collé
    Dernière modification par fregoli ; 27/04/2016 à 10h36.
    Une allumette peut aussi faire déborder le vase...

  9. Publicité
  10. #7
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Je retravaille la formule et la poste dès que possible ...
    Une allumette peut aussi faire déborder le vase...

  11. #8
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Il y avait une erreur avec la fonction utilisée.

    Ci dessous le copié collé de la fonction que j'ai mis dans la cellule A1 de la feuille N°2 du 2eme classeur, sachant que le premier se nomme Fichier1.xls

    =SI(ESTERREUR(EQUIV(Feuil1!K1;[Fichier1.xls]Feuil1!$K:$K;0));Feuil1!A1;IND EX([Fichier1.xls]Feuil1!$A:$A;EQUIV(Feuil1!K1;[Fichier1.xls]Feuil1!$K:$K;0)))

    NB: s'il y a des espace dans la formule, c'est le copié-collé, il faut donc les supprimer
    Une allumette peut aussi faire déborder le vase...

  12. #9
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Pour comprendre comment cela marche, détailler chaque morceau de la formule dans des feuilles de test.
    Une allumette peut aussi faire déborder le vase...

  13. #10
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Ci dessous deux images copiées depuis mon écran:

    Capture1.JPG

    Capture2.JPG

    NB: Le resultat (et la formule) est dans le Fichier3.xls

    Et attention à l'incrémentation automatique sur les références des cellules qui vont se modifier (d'où les "$")
    Dernière modification par fregoli ; 27/04/2016 à 11h20.
    Une allumette peut aussi faire déborder le vase...

  14. #11
    johpascal

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Bonjour Fregoli,

    Désolé pour la réponse tardive. j'ai tout essayé mais ça ne fonctionne toujours pas. c'est peut-être moi qui n'interprète pas bien!!!

    Bien à toi, Un grand merci encore...

  15. #12
    fregoli

    Re : Comparer deux colonnes Excel et MAJ les autres colonnes si correspondance

    Bonjour après un long WE.

    première question: est-ce que les 3 feuilles donnent le résultat que tu attends?
    Une allumette peut aussi faire déborder le vase...

  16. Publicité

Discussions similaires

  1. Inverser Lignes et Colonnes sur Excel
    Par JeanBobine dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 20/02/2016, 23h26
  2. Tri de colonnes dans Excel
    Par sara54 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 15/11/2011, 06h38
  3. formulaire excel pour 50 colonnes
    Par padinova dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 14/05/2011, 18h22
  4. filtrage de colonnes sous excel
    Par kingax dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 19/02/2008, 18h54
  5. Tableaux excel et colonnes
    Par lacourge dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 11/04/2006, 22h01