Microsoft 365 RechercheX dans un tableau en VBA

PascalUFS

XLDnaute Nouveau
Bonjour à toutes et tous,
J'ai besoin d'utiliser la fonction recherchex dans une macro en allant trouvé les valeurs dans un tableau nommé.
Le tableau qui contient les valeurs se trouve dans l'onglet Mail de mon fichier.
C'est une recherche sur le nom pour récupérer l'adresse mail et l'insérer automatiquement dans l'onglet Données colonne Mail.
Je suis obligé de passé par un tableau pour la recherche car il peut bouger dans la feuille.
J'ai essayé de récupérer l'adresse mail avec
ColonneDeb = "B"
LigneDeb = 3
Range("Données!D3").text = Application.WorksheetFunction.XLookup(ColonneDeb, LigneDeb + I, Range("[Mail]!tableau1[Nom]"), Range("[Mail]!Tableau1[adresse mail]"), 0)
Mais cela me renvoie un code erreur "La méthode 'Range' de l'objet '_Global" a échoué"
Merci par avance pour votre aide
PS : fichier Excel joint
 

Pièces jointes

  • Test.xlsb
    9.7 KB · Affichages: 10
Solution
Bonjour @PascalUFS , Patrick

J'ai l'impression que Pascal voudrait ceci :
Formule à mettre en I8 et à tirer vers le bas.
=SIERREUR(INDEX(Tab_Mails[Adresse Mail];EQUIV(B18;Tab_Mails[Vendeurs];0));"")
En fait il fallait traduire cette phrase .....
les informations de l'onglet "Mails" peuvent être modifier avec de nouvelles colonnes insérées et cela évite de stipuler dans quelle colonne cherchée comme pour la fonctione recherchev.
Par je risque d'ajouter une ou des colonnes dans le tableau des mails qui va rendre inopérant ma recherche d’adresse mail.... si j'ai bien traduis le .... Pascal dans le texte ;)

*Merci de ton retour

@Phil69970

PascalUFS

XLDnaute Nouveau
Bonjour Phil69970,
Merci pour ta réponse, cependant la fonction Excel ne me convient pas car à la base je récupère un corps d'email non formaté avec des lignes de première colonne vide (Exemple joint) et des colonnes plus ou moins remplies pour chaque. Pour Nom2 et Nom3 je ne souhaite pas qu'ils voient les remises de Nom1. Le but étant de récupérer l'adresse mail d'un nom pour lui envoyer son bloc par mail directement par Excel.
C'est uniquement pour récupérer l'adresse mail et la stocké dans une variable d'envoi que j'ai besoin de ce recherchex en VBA.
Cordialement
 

Pièces jointes

  • TEst.xlsb
    11.6 KB · Affichages: 5

Phil69970

XLDnaute Barbatruc
Re

C'est une recherche sur le nom pour récupérer l'adresse mail et l'insérer automatiquement dans l'onglet Données colonne Mail.
C'est exactement ce que faisait mon fichier du post #2

Mais si tu veux des réponses qui correspondent au mieux à ta demande je te conseille de mettre un fichier représentatif .
Un fichier représentatif de 10 à 20 lignes avec tes attendus (avant/après) ET respectant le RGPD permettrait de comprendre le problème et de t'apporter une ou des réponses.

C'est quoi représentatif ?
- représentatif, même organisation des lignes et des colonnes, mêmes libellés, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ...
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables


*Éventuellement préciser l'ordre de grandeur des lignes à traiter, exemple mon fichier comporte 1 000 lignes ou bien 20 000 lignes ==> la méthodologie peut être différents.

Une demande claire donne très souvent une réponse rapide et qui correspond au mieux à la demande.

@Phil69970
 

PascalUFS

XLDnaute Nouveau
Bonjour à toutes et tous,

Merci pour vos réponses.

Vous trouverez ci-joint un fichier plus explicite :
- dans l'onglet "Données" j'ai le message que je récupère de Outlook
- dans l'onglet "Mails" j'ai le tableau avec le nom des vendeurs et leur adresse mail
- dans l'onglet "Attendus" j'ai ce que je souhaite faire comme modification
Sachant que la macro trouvera à partir de quelle ligne le traitement doit commencer et à quelle ligne le terminer.

Je pars sur un tableau d'adresses mail et un recherchex car les informations de l'onglet "Mails" peuvent être modifier avec de nouvelles colonnes insérées et cela évite de stipuler dans quelle colonne cherchée comme pour la fonctione recherchev.

Merci par avance pour votre aide.

Les noms dans le fichier sont fictifs.
 

Pièces jointes

  • Test.xlsb
    22.2 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
Bonjour
perso je me demande bien ce que rechercheX viendrait faire la dedans
puisque l'on cherche par vendeur
1° par vba un simple filtre sur la colonne "B" dans donnée en boucle avec chaque vendeur du tableau de la feuille MaIL
2°et récupération des lignes avec specialcell et transfert sur la 3° feuille des ligne visible
3°suppression du filtre
 

PascalUFS

XLDnaute Nouveau
Bonjour Patrick,
La fonction rechercheX va me permettre :
- de savoir si la ligne dans mon itération contient un nom
- de me retourner l'adresse mail du nom trouvé
Le filtre n'est pas possible car le nom n'est pas répété sur chaque ligne : exemple ligne 20 pour Ursuline Lariviere qui contient 3 lignes de données mais seule la ligne 20 contient le nom et la ligne 21 le nombre d'enregistrements pour Ursuline (donnée dont j'aurai besoin lors de mon envoie automatique par mail).
Bonne journée,
 

Phil69970

XLDnaute Barbatruc
Bonjour @PascalUFS , Patrick

J'ai l'impression que Pascal voudrait ceci :
Formule à mettre en I8 et à tirer vers le bas.
=SIERREUR(INDEX(Tab_Mails[Adresse Mail];EQUIV(B18;Tab_Mails[Vendeurs];0));"")
En fait il fallait traduire cette phrase .....
les informations de l'onglet "Mails" peuvent être modifier avec de nouvelles colonnes insérées et cela évite de stipuler dans quelle colonne cherchée comme pour la fonctione recherchev.
Par je risque d'ajouter une ou des colonnes dans le tableau des mails qui va rendre inopérant ma recherche d’adresse mail.... si j'ai bien traduis le .... Pascal dans le texte ;)

*Merci de ton retour

@Phil69970
 

Pièces jointes

  • Index equiv sur adresse mail V1.xlsm
    24.2 KB · Affichages: 13
Dernière édition:

Discussions similaires