[RESOLU] Fusionner 2 fichiers excels avec une colonne en rapport

Padrohl

XLDnaute Nouveau
Bonjour,
je sais que cette question a été maintes et maintes fois abordé. Puisque je sors tout droit d'un bon nombre de recherches infructueuses que m'ont inspiré Google, et en particulier ce forum.

J'en vient donc à vous demandé votre aide.
J'ai besoin de réorganiser une grosse base de données (2 millions de lignes, m'voyez.) plutôt que d'utiliser des scripts PHP qui me ferait perdre du temps, j'utilise les fichiers CSV de mes tables afin de les réorganiser et de les Uploader.

J'ai 2 fichiers .CSV (qui fonctionne sous excel comme un tableau hein)
L'un parlant d'article (avec le numéro d'article, le nom de l'article, etc) l'autre parlant du cout standard de l'article (avec le numéro de l'article, le cout et le prix)

Seulement tout les articles n'ont pas forcément un cout.
Et c'est là le problème.
Je souhaite "introduire" dans mon fichier "article" les valeurs du fichier "cout standard", qui correspondent évidemment à cet article.

Ce qui revient en résumé à dire que je veux trier 2 fichiers par rapport à une colonne commune.
Il y a 40 000 lignes environs par fichier c'est pour ça que le faire à la main est embarrassant !
Je vous joint ces 2 fichiers :
(c) CJoint.com, 2012
http://cjoint.com/?CDykuJ24UdP

Je pense que les plus habile d'entre vous sauront faire ça sans aucun soucis, aussi je vous souhaite une très bonne journée et je vous remercie d'avance.

Padrohl.
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Fusionner 2 fichiers excels avec une colonne en rapport

Bonjour Padrohl,

Avec cette macro, peut être :

VB:
Option Explicit
Sub Tarif()
Dim i&, j&
Dim tblo, tblo1, tblo2()
tblo1 = Workbooks("Class2").Sheets(1).Range("A1:C" & Workbooks("Class2").Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row)
tblo = Workbooks("Classeur1").Sheets(1).Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
ReDim tblo2(UBound(tblo))
For i = 1 To UBound(tblo)
  For j = 1 To UBound(tblo1)
    If tblo(i, 1) = tblo1(j, 1) Then
      tblo2(i - 1) = tblo1(j, 2)
    End If
  Next
Next
Workbooks("Classeur1").Sheets(1).[G1].Resize(UBound(tblo2)) = Application.Transpose(tblo2)
End Sub

A te relire

Martial

PS : J'ai tronqué un des 2 fichiers, l'autre n'était pas récupérable en l'état sur cjoint, je n'ai pris que quelques données.
 

Pièces jointes

  • Class2.zip
    269.5 KB · Affichages: 21
  • Class2.zip
    269.5 KB · Affichages: 19
  • Class2.zip
    269.5 KB · Affichages: 27
  • Classeur1.xlsm
    27.1 KB · Affichages: 42
  • Classeur1.xlsm
    27.1 KB · Affichages: 34
  • Classeur1.xlsm
    27.1 KB · Affichages: 37
Dernière édition:

Padrohl

XLDnaute Nouveau
Re : Fusionner 2 fichiers excels avec une colonne en rapport

Merci de ton aide,
Je n'ai pas spécialement compris (ais je oublier de dire que j'étais un sacré nul en bureautique?)

J'ai tenté, en utilisant tes fichiers, d’exécuter les macros. Cela me donne une erreur "L'indice n'appartient pas à la sélection"...


Pour info, je voudrais mettre ce qu'il y a dans le fichier "class2.csv", dans le fichier classeur1.xls. Je pense que tu l'as compris mais j'ai oublier de le préciser tout à l'heure.

Il y a moins de ligne dans class2 que dans classeur1, donc si le numéro de classeur1 n'existe pas dans class2, la macro ne doit pas s'arrêter

PS: il est très probable que je ne sache utiliser les macros, et que l'erreur vienne de moi
 

Yaloo

XLDnaute Barbatruc
Re : Fusionner 2 fichiers excels avec une colonne en rapport

Re,

Pourrais-tu mettre des fichiers en pièces jointes, avec moins de lignes (ils seront moins lourds) ou alors tu peux aussi les zipper.

Dans les exemples de fichier que j'ai mis plus haut, je ne copie que la deuxième colonne (de Class2) dans la septième colonne (de Classeur1).


A+

EDIT : En effet, j'avais laissé 2 macros, dont une qui n'était pas bonne, tu as peut-être essayé avec celle-là. Je modifie mon premier fichier.
 

Pièces jointes

  • Classeur1.xlsm
    27.1 KB · Affichages: 68
  • Classeur1.xlsm
    27.1 KB · Affichages: 58
  • Classeur1.xlsm
    27.1 KB · Affichages: 53
Dernière édition:

Padrohl

XLDnaute Nouveau
Re : Fusionner 2 fichiers excels avec une colonne en rapport

Voila j'ai pris un échantillon de 100 lignes pour chaque fichiers. J'ai mis les tarifs sur la 1ère feuille, et les articles sur la seconde.

EDIT: j'ai toujours la même erreur en exécutant la macro. Je clique sur l’icône "marco" de l'onglet "affichage". Puis j'ai selectionné la macro et j'ai cliqué sur "executer"
 

Pièces jointes

  • classeurArticle.xlsx
    15.5 KB · Affichages: 38
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Fusionner 2 fichiers excels avec une colonne en rapport

Re,

Voici ton fichier en retour.

J'ai pris le coût (colonne B) et non le prix (colonne (C), était-ce bien cela ?

A+
 

Pièces jointes

  • classeurArticle.xlsm
    30.6 KB · Affichages: 38

Padrohl

XLDnaute Nouveau
Re : Fusionner 2 fichiers excels avec une colonne en rapport

Pas mal , les boutons marchent !

En faite non je voulais les deux colonnes, le tarif et le cout

De plus j'aurais aimé savoir comment accéder au code. Afin que je puisse reproduire ceci ultérieurement.

En te remerciant pour ton aide !
 

Yaloo

XLDnaute Barbatruc
Re : Fusionner 2 fichiers excels avec une colonne en rapport

Re,

Voici ton fichier modifié, avec les 2 colonnes coût et prix.

Pour accéder aux codes, Faire Alt+F11, tu arrives dans une fenêtre appelée Visual Basic Editor, c'est là que se trouvent les 2 macros.

Pour aller plus vite, il vaut mieux passer par des "tableaux", car les données sont travaillées en mémoire et non sur les feuilles.

Pour expliquer les "Tableaux", il y a l'excellent site de Misange : Ce lien n'existe plus

A+

Martial
 

Pièces jointes

  • classeurArticle V1.xlsm
    29.7 KB · Affichages: 32

Discussions similaires

Réponses
26
Affichages
791

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T