Rechercher remplacer plusieurs valeurs dans un classeur

moeachan

XLDnaute Nouveau
Bonjour,
J'ai un fichier de données qui contient des personnes et les entreprises qui les emploient.
J'ai un onglet pour les personnes et un pour les entreprises.
Dans chaque onglet j'ai une colonne qui sert d'identifiant unique (nombre aléatoire).
Les autres colonnes sont des attributs comme nom, age...
J'ai un 3ème onglet pour dire qu'une personne travaille dans une entreprise : la colonne 1 contient l'id de la personne et la colonne 2 l'id de l'entreprise.
Je souhaiterais parcourir l'onglet des personnes pour remplacer dans l'ensemble du classeur leurs id par un autre champs (nom).
J'ai mis en pj un exemple de données en entrée (exemple.xls) et un exemple de ce que je souhaiterais obtenir en sortie (exemple_sortie.xls).
Je n'ai pas besoin de conserver les id après traitement.
Merci encore à vous pour votre aide !
 

Pièces jointes

  • exemple.xls
    17.5 KB · Affichages: 68
  • exemple.xls
    17.5 KB · Affichages: 65
  • exemple.xls
    17.5 KB · Affichages: 61
  • exemple_sortie.xls
    17.5 KB · Affichages: 63

Robert

XLDnaute Barbatruc
Repose en paix
Re : Rechercher remplacer plusieurs valeurs dans un classeur

Bonjour Moeachan et bienvenue, bonjour le forum,

Un peu succinct ton exemple avec une seul onglet par cas... Parcourir les onglets et récupérer des données c'est relativement facile mais différencier si c'est un onglet d'employer ou d'entreprise ça me paraît plus coton ! Ton exemple est tellement peu parlant que je ne vois pas comment faire...

[Édition]
Ooops pardon j'avais mal lu je pensais que tu avais un onglet par employé et un onglet par entreprise... Désolé ! Je t'envoie une réponse quand j'aurais fini...
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Rechercher remplacer plusieurs valeurs dans un classeur

Bonjour Moeachan, bonjour le forum,

Essaie comme ça :
Code:
Sub Macro1()
Dim dl1 As Integer 'déclare la variable dl1 (Dernière Ligne de la colonne 1)
Dim dl2 As Integer 'déclare la variable dl2 (Dernière Ligne de la colonne 2)
Dim pl1 As Range 'déclare la variable pl1 (PLage 1)
Dim pl2 As Range 'déclare la variable pl2 (PLage 2)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche)

With Sheets("travaille") 'prend en compte l'onglet "travaille"
    dl1 = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
    Set pl1 = .Range("A2:A" & dl1) 'definit la plage pl1
    dl2 = .Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 2 (=B)
    Set pl2 = .Range("B2:B" & dl2) 'definit la plage pl2
    For Each cel In pl1 'boucle sur toutes les cellules cel de la plage pl1
        Set r = Sheets(.Cells(1, 1).Value).Columns(1).Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r
        If Not r Is Nothing Then cel.Value = r.Offset(0, 1).Value 'si il existe au moins une occurrence trouvée redéfinit la cellule cel
    Next cel 'prochaine cellule de la boucle
    For Each cel In pl2 'boucle sur toutes les cellules cel de la plage pl2
        Set r = Sheets(.Cells(1, 2).Value).Columns(1).Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r
        If Not r Is Nothing Then cel.Value = r.Offset(0, 1).Value 'si il existe au moins une occurrence trouvée redéfinit la cellule cel
    Next cel 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "travaille"
End Sub
 

Discussions similaires

Statistiques des forums

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