Récupérer adresses mail en fonction noms et prénoms en colonne A et B

Bonjour,

Je bloque, en même temps, je débute en VBA.

Je souhaiterais récupérer des adresses mail d'une feuille dans une autre en fonction des noms en colonne A et des prénoms en colonne B (sur les 2 feuilles.)

J'ai un bout de code qui fonctionne:

Option Explicit

Dim c, cell

Sub AdresseMailFeuil1()

    For Each c In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
        Set cell = Sheets("Feuil2").Range("A:A").Find(c.Value, lookat:=xlWhole)
          If Not cell Is Nothing Then
            c.Offset(0, 2) = cell.Offset(0, 2)
        End If
    Next c

End Sub

Le problème, c'est avec les noms identiques, vu que je ne compare pas les prénoms en colonne B dans mon code, il ne me renvoie pas forcément le bon mail.

J'ai essayé de rajouter une condition mais ça ne fonctionne pas:

If Not cell Is Nothing and c.Offset(0, 1).value = cell.Offset(0, 1).value Then

Et maintenant je sèche !!!

J'espère qu'une bonne âme pourra m'aider.

Merci.

P.S un fichier en exemple pour mieux saisir.

12test.xlsm (20.48 Ko)

Bonjour,

Je te propose ce code là :

Option Explicit

Dim i%, j%, DerL%, t
Dim Sh1 As Worksheet, Sh2 As Worksheet

Sub AdresseMailFeuil1()
Set Sh1 = Sheets("Feuil1")
Set Sh2 = Sheets("Feuil2")
    t = Sh1.Range("A2:B" & Sh1.Range("A" & Rows.Count).End(xlUp).Row)
    For j = 1 To UBound(t)
    DerL = Sh2.Range("A" & Rows.Count).End(xlUp).Row
      For i = 2 To DerL
         If Sh1.Cells(i, "A") = t(j, 1) And Sh1.Cells(i, "B") = t(j, 2) Then
            Sh1.Cells(j + 1, "C") = Sh2.Cells(i, "C")
         End If
      Next i
    Next j

End Sub

Cordialement

J'ai pas encore tout saisi mais ça ne renvoie pas les bonnes adresses.

Le code renvoie les adresses dans l'ordre des lignes et non en fonction des noms et prénoms….

Cdlt

ho, j'y retourne!

Voilà, une erreur entre sh1 et sh2

Si toutefois tu as beaucoup de lignes, si c'est le cas on peut accélérer la procédure.

Bonne soirée

Merci

Ca marche nickel.

Et effectivement, j'ai beaucoup de lignes, plus de 10 000 lignes, dans la feuille 2.

Cdlt

Je suis sur un autre projet, je regarde ce soir ou demain matin.

bonne soirée en attendant

re,

Deux fichiers

retour1... à tester sur ton fichier original et noter le temps écoulé.

retour2... à tester en suivant sur ton fichier original et noter le temps écoulé.

Tu me fais un retour des deux chronos stp.

Merci

Bonjour,

Pour test Retour1 un chrono de 11,27734.

Pour test Retour2 un chrono de 11,82031.

Cdlt

est-ce que ça te convient ?

Très bien et comme je n'ai pas non plus des mises à jour tous les jours, c'est parfait.

Ca m'a déjà fait gagné un temps considérable…..encore merci pour le code.

Si j'ai un peu de temps, je verrai pour une solution plus rapide.

Bonne soirée

re,

Une version qui devrait être plus rapide.

Tu me donneras le résultat du timer stp?

Merci

Bonjour,

Ca me parait plus rapide mais impossible à tester sur mon tableau.

En fait sur ma feuil2, nom est en colonne B, prénom en colonne C et mails en colonne E, j'ai des colonnes intermédiaires.

Sur le 1er code, j'ai pu corriger pour m'adapter mais là, même en cherchant à comprendre c'est plus compliqué.

J'ai plus de mal avec Transpose(mail)…..même en essayant de modifier, la colonne C de la Feuil1 n'est jamais remplie.

Merci.

Effectivement le code est plus abstrait.

Il n'y a pas d'écriture intermédiaire. C'est pourquoi c'est beaucoup plus rapide.

Pas grave, mais si je sais qu'elles sont les adaptations à faire, je suis disponible.

Comme tu veux!

Cordialement

En fait mon tableau a la même structure que Test2 ci-joint avec dans l'idée de récupérer les adresses mail de la feuil4 dans les feuil1, 2 et 3 (base complète dans la feuil4, et identités différentes dans les 3ères feuilles).

Ce que j'ai réussi à faire avec la 1ère version du code.

Cdlt

6test2.xlsm (26.25 Ko)

Bonjour,

Effectivement les structures de feuille ne sont pas les mêmes.

Bon tests

Cordialement

Bonjour,

Bien plus rapide 0,859375

Le gestionnaire d'erreur ne renvoie pas de message dans le cas où il n'y aurait rien sur la feuille….le fait qu'il n'y est rien n'est pas une erreur à priori.

Cdlt

Effectivement! rien dans les cellules = rien dans les tableaux

Bonne continuation

Rechercher des sujets similaires à "recuperer adresses mail fonction noms prenoms colonne"