Bonjour à tous,
J'ai un problème récurrent qui m'empoisonne la vie depuis pas mal de temps. J'ai passé déjà de nombreuses heures à chercher des éléments de réponse sur le site... mais comme je suis vraiment une bille, je risque d'être déjà à la retraite quand j'aurai trouvé le résultat.
80% des néophytes ont déjà du être confrontés au problème de la fusion de fichiers aux formats différents avec des intitulés différents, avec d'innombrables sources d'erreurs à la clé.
L'idée c'est d'arriver à "matcher" des champs de différents fichiers qui n'ont pas la même structure.
Explication plus concrète :
J'ai 2 fichiers de x et y colonnes qui varient avec des intitulés du type
Fichier 1
société adresse code postal ville
Azur rue de l'été 13 Cassis
Sieste & Co allée de la rivière 07 Saint-Martin
Fichier 2
companyname tel Ville
Rosé 04 04 04 04 08 Bandol
Barbecue 03 03 03 03 05 Charolais
Avec une macro, j'aimerais bien arriver à lier les infos du fichier 1 et du fichier 2.
Idéalement, une boîte de dialogue permettrait pour chaque intitulé de colonne du fichier 1 de sélectionner avec un menu déroulant l'intitulé du fichier 2 correspondant pour "matcher les champs"
Pour les intitulés de colonne non utilisés dans le fichier 2, les infos devraient être à la suite.
Seconde étape compliquée, il faudrait réussir à faire appliquer le même schéma au fichier 2
C'est à dire pour toutes les données du fichier 2, le restructurer comme le fichier 1 en mettant à la suite toutes les données des intitulés de colonne non matchés.
le résultat final devrait être du type
Source société adresse code postal ville tel
Feuil1 Azur rue de l'été 13 Cassis
Feuil1 Sieste & Co allée de la rivière 07 Saint-Martin
Feuil2 Rosé Bandol 04 04 04 04 08
Feuil2 Barbecue Charolais 03 03 03 03 05
Etape 3 : j'ai une bonne solution trouvée sur le site pour recopier à la suite le contenu de chaque fichier cf ci-dessous, mais j'aimerais tellement avoir de l'aide sur les deux premières étapes ! D'avance, merci à vous ! ! !
Sub Combine()
Dim J As Integer
Dim dl As Long
Dim x As Long
On Error Resume Next
Sheets(1).Select
Worksheets.Add ' add a sheet in first place
Sheets(1).Name = "Combined"
' copy headings
Sheets(2).Activate
Range("b1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
' work through sheets
For J = 2 To Sheets.Count ' from sheet 2 to last sheet
Sheets(J).Activate ' make the sheet active
Selection.CurrentRegion.Select ' select all cells in this sheets
' select all lines except title
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
' copy cells selected in the new sheet on last line
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
With Sheets("Combined")
dl = .Range("A65536").End(xlUp).Row
For x = dl To 2 Step -1
If .Cells(x, 1).Value = 0 Then .Rows(x).Delete
Next x
End With
End Sub
J'ai un problème récurrent qui m'empoisonne la vie depuis pas mal de temps. J'ai passé déjà de nombreuses heures à chercher des éléments de réponse sur le site... mais comme je suis vraiment une bille, je risque d'être déjà à la retraite quand j'aurai trouvé le résultat.
80% des néophytes ont déjà du être confrontés au problème de la fusion de fichiers aux formats différents avec des intitulés différents, avec d'innombrables sources d'erreurs à la clé.
L'idée c'est d'arriver à "matcher" des champs de différents fichiers qui n'ont pas la même structure.
Explication plus concrète :
J'ai 2 fichiers de x et y colonnes qui varient avec des intitulés du type
Fichier 1
société adresse code postal ville
Azur rue de l'été 13 Cassis
Sieste & Co allée de la rivière 07 Saint-Martin
Fichier 2
companyname tel Ville
Rosé 04 04 04 04 08 Bandol
Barbecue 03 03 03 03 05 Charolais
Avec une macro, j'aimerais bien arriver à lier les infos du fichier 1 et du fichier 2.
Idéalement, une boîte de dialogue permettrait pour chaque intitulé de colonne du fichier 1 de sélectionner avec un menu déroulant l'intitulé du fichier 2 correspondant pour "matcher les champs"
Pour les intitulés de colonne non utilisés dans le fichier 2, les infos devraient être à la suite.
Seconde étape compliquée, il faudrait réussir à faire appliquer le même schéma au fichier 2
C'est à dire pour toutes les données du fichier 2, le restructurer comme le fichier 1 en mettant à la suite toutes les données des intitulés de colonne non matchés.
le résultat final devrait être du type
Source société adresse code postal ville tel
Feuil1 Azur rue de l'été 13 Cassis
Feuil1 Sieste & Co allée de la rivière 07 Saint-Martin
Feuil2 Rosé Bandol 04 04 04 04 08
Feuil2 Barbecue Charolais 03 03 03 03 05
Etape 3 : j'ai une bonne solution trouvée sur le site pour recopier à la suite le contenu de chaque fichier cf ci-dessous, mais j'aimerais tellement avoir de l'aide sur les deux premières étapes ! D'avance, merci à vous ! ! !
Sub Combine()
Dim J As Integer
Dim dl As Long
Dim x As Long
On Error Resume Next
Sheets(1).Select
Worksheets.Add ' add a sheet in first place
Sheets(1).Name = "Combined"
' copy headings
Sheets(2).Activate
Range("b1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
' work through sheets
For J = 2 To Sheets.Count ' from sheet 2 to last sheet
Sheets(J).Activate ' make the sheet active
Selection.CurrentRegion.Select ' select all cells in this sheets
' select all lines except title
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
' copy cells selected in the new sheet on last line
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
With Sheets("Combined")
dl = .Range("A65536").End(xlUp).Row
For x = dl To 2 Step -1
If .Cells(x, 1).Value = 0 Then .Rows(x).Delete
Next x
End With
End Sub