remplacer les données d’une colonne de maniére dynamique par Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
a
atitila
Jeune membre
Jeune membre
Messages : 35
Inscrit le : 17 octobre 2015
Version d'Excel : 2010

Message par atitila » 21 octobre 2015, 09:00

Bonjour le forum,
J’aimerai avoir un code vba qui me permettrai de remplacer les données d’une colonne de maniére dynamique par celles d’un tableau de correspondance.
Ci-dessous un exemple .
Merci.

TABLEAU ORIGINE
NOM PRENOM SEXE PAYS NAISSANCE
ALICE PINNOT F FRANCE
JET LI M CHINE
ALI BONGO M GABON
ETOO SAMUEL M CAMEROUN

TABLEAU DE CORRESPONDANT

PAYS CORRESPONDANCE
FRANCE FR
CHINE CH
GABON GA
CAMEROUN CM

RESULTAT ATTENDU
NOM PRENOM SEXE PAYS NAISSANCE
ALICE PINNOT F FR
JET LI M CH
ALI BONGO M GA
ETOO SAMUEL M CM
Classeur1.xlsx
(10.37 Kio) Téléchargé 10 fois
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'276
Appréciations reçues : 400
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 21 octobre 2015, 09:55

Bonjour,
Une proposition à tester.
Cdlt.
xlp - atitila v1.xlsm
(26.72 Kio) Téléchargé 8 fois
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
a
atitila
Jeune membre
Jeune membre
Messages : 35
Inscrit le : 17 octobre 2015
Version d'Excel : 2010

Message par atitila » 21 octobre 2015, 10:50

Bonjour JEAN ERIC,

j'ai essayé mais j'au une erreur de compilation.
erreur2.jpg
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'276
Appréciations reçues : 400
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 21 octobre 2015, 11:27

Re,
Je n'ai pas vérifié le résultat si aucune correspondance. :mrgreen:
Je reverrai la chose cet après-midi.
Cdlt.

Re,
Pourquoi reporter? :D
Cdlt.
Option Explicit

Private Sub cmdCodeOTAN_Click()
Dim ws, ws2 As Worksheet
Dim objList As ListObject, objList2 As ListObject
Dim Cell As Range
Dim Result As Variant

    Application.ScreenUpdating = False
    
    Set ws = Worksheets("Données"): Set ws2 = Worksheets("Liste")
    Set objList = ws.ListObjects(1): Set objList2 = ws2.ListObjects(1)
    
    With ws
        For Each Cell In objList.ListColumns(4).DataBodyRange
            Result = Application.VLookup(Cell.Value, objList2.DataBodyRange, 2, False)
            If IsError(Result) Then
                Cell.Value = "N/A"
            Else
                Cell.Value = Result
            End If
        Next Cell
    End With
    
    Set objList = Nothing: Set objList2 = Nothing
    Set ws2 = Nothing: Set ws = Nothing

End Sub
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
a
atitila
Jeune membre
Jeune membre
Messages : 35
Inscrit le : 17 octobre 2015
Version d'Excel : 2010

Message par atitila » 21 octobre 2015, 12:18

merci JEAN ERIC,
ça marche :D :D :D :D :D :D :D :D
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 14'276
Appréciations reçues : 400
Inscrit le : 27 août 2012
Version d'Excel : O365 32 bits

Message par Jean-Eric » 21 octobre 2015, 12:23

Re,
Pas de quoi Atitila. :D
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message