Mapping entre deux feuilles

Bonjour à tous,

Avant toute chose, je vous souhaite à tous de très bonnes fêtes, en attendant ce soir, je planche sur un sujet Excel pour me permettre de faire du mapping entre un fichier issu d'un ancien système ( Feuil1) et le nouveau ( Feuil2) qui contient des attributs non présent sur la Feuil1.

Mon but serait, dans la feuil2, de remplir les champs "Correspondance" avec le champs de la feuil1 indiqué en vis à vis.

Exemple, dans la colonne nommé "Correspondance1" je devrais copier en dessous toute la colonne "Champs1" de la feuil1.

avec comme règle :

  • La conservation de l'entête de l'onglet "Feuil2"
  • La copie de la colonne "Champs1" ne doit elle pas reprendre l'entête.

Avez vous une idée?

J'ai essayer avec Target.Column, mais sans succès réel.

Merci par avance, et encore de très bonne fêtes

8classeur1.xlsx (13.34 Ko)

Bonjour,

une proposition

Sub aargh()
    Set ws = Sheets("feuil1")
    dl = ws.Cells(Rows.Count, 1).End(xlUp).Row
    With Sheets("feuil2")
        dc = .Cells(2, Columns.Count).End(xlUp).Column
        For j = 1 To dc
            champ = .Cells(2, j)
            If champ <> "" Then
                Set re = ws.Rows(1).Find(champ, lookat:=xlWhole, LookIn:=xlValues)
                If Not re Is Nothing Then
                    ws.Cells(3, re.Column).Resize(dl - 2).Copy
                    .Cells(3, j).PasteSpecial xlPasteValues
                End If
            End If
        Next j
    End With
End Sub

Bonjour,

Merci de ton retour et désolé de mon retard.

Merci pour le code, par contre peux tu m'expliquer comment on indique que telle colonne de la feuil1 correspond à telle colonne de la feuil2 ?

Je ne vois pas dans le code.

Merci

Bonjour,

Avec des commentaires

Sub aargh()
    Set ws = Sheets("feuil1")
    dl = ws.Cells(Rows.Count, 1).End(xlUp).Row ' nombre de lignes à copier pour chaque colonne
    With Sheets("feuil2")
        dc = .Cells(2, Columns.Count).End(xlUp).Column 'nombre de colonnes sur feuil2
        For j = 1 To dc 'on parcourt chaque colonne de feuil2
            champ = .Cells(2, j) 'on prend l'entête de la colonne sur feuil2
            If champ <> "" Then 'si non vide
                'on cherche le champ sur feuil1 en ligne 1
                Set re = ws.Rows(1).Find(champ, lookat:=xlWhole, LookIn:=xlValues)
                If Not re Is Nothing Then ' si champ trouvé en feuil1
                    ws.Cells(3, re.Column).Resize(dl - 2).Copy 'on copie la colonne
                    .Cells(3, j).PasteSpecial xlPasteValues 'on colle les valeurs en feuil2
                End If
            End If
        Next j
    End With
End Sub

merci h2so4,

Désolé du retard, avec les fêtes pas eu une minute

En tout cas, efficace cette macro.

bonne jrn.

Rechercher des sujets similaires à "mapping entre deux feuilles"