Microsoft 365 Remplacer les valeurs d'un tableau par leur correspondance dans un autre tableau

  • Initiateur de la discussion Initiateur de la discussion Tidjyphenom
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Tidjyphenom

XLDnaute Nouveau
Bonjour,

j'ai un tableau avec des identifiants utilisateurs. A droite de ce tableau j'ai un autre tableau qui permet de voir la correspondance des identifiants avec les adresses mails associés.
Je souhaite remplacer tous les identifiants de mon tableau de gauche par leur adresse email équivalente.

J'ai aussi ajouté un second cas de figure de données que je suis susceptible de rencontrer aux lignes 17, 18 et 19 du fichier joint. Dans ce cas il pourrait m'être utile de remplacer les identifiants par leur adresses email sauf que dans ce cas là le remplacement ne se fait donc pas au sein d'un tableau mais au sein d'une même cellule comportant plusieurs identifiants. Peut-être que dans ce cas là, la solution reviendrai à transformer ma celulle en tableau comme dans le 1er cas ?

Quelqu'un aurait une idée pour ces 2 options ?
 

Pièces jointes

Solution
Ceci est plus rapide :
VB:
Sub Remplacer()
Dim c As Range
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
For Each c In Columns("J").SpecialCells(xlCellTypeConstants, 1)
    Range("A2:E7").Replace c, "#N/A", xlWhole
    c(1, 2).Copy Range("A2:E7").SpecialCells(xlCellTypeConstants, 16)
Next c
End Sub
Bonjour Tidjyphenom, [Edit] salut st007,

Vous pouvez utiliser une macro de ce genre :
VB:
Sub Remplacer()
Dim c As Range
For Each c In Columns("J").SpecialCells(xlCellTypeConstants, 1)
    Range("A2:E7").Replace c, c(1, 2), xlWhole
Next
End Sub
Pour les lignes 17 18 19 il vaut mieux en effet créer un tableau.

A+
 
Dernière édition:
La macro précédente ne donne pas des adresse email formatées, pour y remédier :
Code:
Sub Remplacer()
Dim c As Range, x$, cc As Range
Application.ScreenUpdating = False
For Each c In Columns("J").SpecialCells(xlCellTypeConstants, 1)
    x = CStr(c)
    For Each cc In Range("A2:E7")
        If CStr(cc) = x Then c(1, 2).Copy cc
Next cc, c
End Sub
 
Ceci est plus rapide :
VB:
Sub Remplacer()
Dim c As Range
Application.ScreenUpdating = False
On Error Resume Next 'si aucune SpecialCell
For Each c In Columns("J").SpecialCells(xlCellTypeConstants, 1)
    Range("A2:E7").Replace c, "#N/A", xlWhole
    c(1, 2).Copy Range("A2:E7").SpecialCells(xlCellTypeConstants, 16)
Next c
End Sub
 
Les adresses mail en colonne K sont cliquables, en toute logique il faut qu'elles le soient partout.

Il est facile de l'obtenir avec la fonction LIEN_HYPERTEXTE, voyez le fichier joint :
Code:
=SIERREUR(LIEN_HYPERTEXTE("mailto:"&RECHERCHEV(A2;$J:$K;2;0);RECHERCHEV(A2;$J:$K;2;0));"")
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour