Excel programmation
Résolu
Bonjour,
Je suis nouveau sur ce site. Je suis aussi débutant pour excel. Cependant, j'ai une problématique complexe.
Je dois qualifier un fichier excel (30000 lignes de contact sur la feuille 1 sans les adresse emails, et 2500 lignes de contacts dans la feuille 2 avec les adresse emails) Ces 2500 lignes de contacts sont aussi présents dans la feuille 1 au 30000 lignes de contact.
L'objectif est de faire en sorte de mettre les adresses emails de la feuille 2 sur la bonne ligne de contact de la feuille 1 sachant que les adresses emails sont à inscrire au niveau de la colonne W. Et tout ça automatiquement.
Ceci impose de repérer les lignes identiques dans chaque feuille en fonction du numéro de téléphone ou adresse ou autres (à préciser) et que si c'est = alors la cellule de la ligne de la feuille 2 ira se coller à la cellule identique de la ligne identique de la feuille 1.
Voilà en espérant avoir été clair.
Je précise que dans la feuille 1 il y a d'autres informations qu'il n'y a pas dans la feuille 2 d'où l'obligation de coller de feuille 2 vers feuille 1 automatiquement.
Merci de votre aide, en espérant que ce n'est que formalité tout simple que de résoudre ce problème pour vous
A bientôt Mathieu
Je suis nouveau sur ce site. Je suis aussi débutant pour excel. Cependant, j'ai une problématique complexe.
Je dois qualifier un fichier excel (30000 lignes de contact sur la feuille 1 sans les adresse emails, et 2500 lignes de contacts dans la feuille 2 avec les adresse emails) Ces 2500 lignes de contacts sont aussi présents dans la feuille 1 au 30000 lignes de contact.
L'objectif est de faire en sorte de mettre les adresses emails de la feuille 2 sur la bonne ligne de contact de la feuille 1 sachant que les adresses emails sont à inscrire au niveau de la colonne W. Et tout ça automatiquement.
Ceci impose de repérer les lignes identiques dans chaque feuille en fonction du numéro de téléphone ou adresse ou autres (à préciser) et que si c'est = alors la cellule de la ligne de la feuille 2 ira se coller à la cellule identique de la ligne identique de la feuille 1.
Voilà en espérant avoir été clair.
Je précise que dans la feuille 1 il y a d'autres informations qu'il n'y a pas dans la feuille 2 d'où l'obligation de coller de feuille 2 vers feuille 1 automatiquement.
Merci de votre aide, en espérant que ce n'est que formalité tout simple que de résoudre ce problème pour vous
A bientôt Mathieu
Configuration: Windows Vista Firefox 3.5.5
24 réponses
-
parfait,
tout fonctionne très bien
Merci pour votre réponse
Excellente journée
Mathieu -
ContributeurCi joint la macro modifiée mais je n'ai pas testé car je n'ai pas gardé la maquette de W
Sub copier_mel() Dim nbre As Long, cptr As Long Dim tablo1 Dim lig As Long, texto As String With Sheets("base1") nbre = .Range("O65536").End(xlUp).Row - 1 ReDim tablo(nbre, 2) For cptr = 1 To nbre tablo(cptr, 1) = .Cells(cptr + 1, 15) tablo(cptr, 2) = .Cells(cptr + 1, 23) Next End With With Sheets("base") Application.ScreenUpdating = False For cptr = 1 To nbre On Error Resume Next lig = .Columns(15).Find(tablo(cptr, 1), .Cells(1, 15), xlValues).Row If Err.Number = 0 Then .Cells(lig, 23) = tablo(cptr, 2) End If Next End With End Sub
En espérant que...
-
oui si possible, car dans "base1" il y a des numéros de téléphones qui n'existent pas dans "Base".
Prédemment, le programme réalisé fonctionnait à condition que tous les numéros de "Base1" soit aussi existants dans "Base".
Or, je me suis aperçu que ce n'était pas toujours le cas.
Cela est-ce possible ?
Mathieu -
ContributeurBonjour,
Si j'ai bien compris tu ne voudrais plus voir le message 'n° inconnu etc" et passer directement au suivant ? -
Bonjour,
Je me permets de vous relancer afin de savoir si vous savez ce qui ne fonctionne pas dans la formule.
En attendant de vous lire,*
Mathieu -
OK merci.
Le propos était d'insérer automatiquement les emails d'une base à l'autre en tenant compte du fait que les numéros devaient être identique entre les 2 base (phase reconnaissante avec de copier coller)
Merci en tout cas
Mathieu -
ContributeurBonjour,
Excuses moi, mais je n'ai plus du tout le pb en tête!!!
j'essaierai de m'y replonger dans la journée.... -
Bonjour,
Au sujet de la macro que vous avez réalisé. Si je comprends bien, elle fonctionne si dans "Base1" on retrouve tous les numéros de tel (colonne 15) aussi dans la feuille "Base".
Mais si dans "Base1", j'ai des numéros qui n'existent pas dans "Base", alors est-ce la même maxro ?
Car quand je l'active, j'ai une erreur m'indiquant "numéros inconnus (numéro de téléphone); ;"
En fait, je souhaiterais savoir comment je pourrais remedier à ce problème.
Quand le numéros n'existent pas dans l'autre feuille, alors on passe à la suite.
Est-ce possible ?
Merci d'avance
Mathieu -
Merci beaucoup pour votre implication, vous m'enlever une épine du pied
A la prochaine
Mahieu -
ContributeurRe,
"Option base 1" car:
les variables-tableaux ( ma variable tablo) commence à 0 et non à 1
par exemple; tabloX(0) donne la 1° valeur dans tabloX
base 1 m'évite d'avoir à jongler avec les compteurs et les cellules...
la méthode "variables-tableaux" permet de gagner du temps ( rapport environ 600 à 1000) dans l'exécution par rapport à des instructions du type "select-sélection" et "copy-paste"
Dans les grands tableaux (2500 et 30000), cette méthode est à privilégiée
:-x -
Bonjour,
Bon j'ai mis du temps étant novice, mais je vois comment faire fonctionner une macro, etc...
J'ai essayé tout à l'aire de fonctionner.
Option base 1 au dessus de la macro ? que voulez-vous dire ?
J'imagine que je peux combiner plusieurs macros sur le même document si je souhaite entrer 2 autres données à savoir contact et nom du poste.
En tout cas, vous avez été d'une grande aide.
Et, je suis très étonné des capacités d'excel,
Un grand merci
Mathieu -
Contributeurre,
Il faut ajouter
Option base 1 au dessus de la macro !!!
avec mes excuses... -
Merci pour les infos,
J'ai besoin d'un peu de temps pour digérer les infos.
Je vais essayer de comprendre tout ça.
Merci beacoup, je reviens vers vous fin de journée
Bye -
ContributeurBonjour,
comme il s'agit d'indiquer les mails absents sans toucher les autres déjà inscrits en feuille "base", il faudrait parcourir les 30000 lignes et coller la fonction RECHERCHEV au fur et à mesure...
je propose donc une solution VBA qui remplit les e-mails manquants et présents dans la liste base1 et signale une éventuelle erreur de N) téléphoneoption base 1 Sub copier_mel() Dim nbre As Long, cptr As Long Dim tablo1 Dim lig As Long, texto As String With Sheets("base1") nbre = .Range("O65536").End(xlUp).Row - 1 ReDim tablo(nbre, 2) For cptr = 1 To nbre tablo(cptr, 1) = .Cells(cptr + 1, 15) tablo(cptr, 2) = .Cells(cptr + 1, 23) Next End With With Sheets("base") Application.ScreenUpdating = False For cptr = 1 To nbre On Error Resume Next lig = .Columns(15).Find(tablo(cptr, 1), .Cells(1, 15), xlValues).Row If Err.Number = 0 Then .Cells(lig, 23) = tablo(cptr, 2) Else flag = True texto = texto & tablo(cptr, 1) & "; " Exit For End If Next End With If flag Then MsgBox "numéros inconnus: " & vbLf & texto & "; " End Sub
Edit à 11h 30 ajouter option base 1 en t^te de macro -
ContributeurBonjour
selon votre modéle, j'ai testé la formule en colonne X essayez):
=RECHERCHEV(U2;Base1!$O$2:$W$1000;9;0)
Elle renvoie bien les adresse mail .... qui y sont déja, mais pas les autres, pour la bonne raison que:
soit les n° de téléphone en U dans la feuille base 1 , tel OK mais pas de Mail?)
Pour mémoire:
le code cherché n'est pas présent: la fonction renvoi #/NA
le code est présent sans adresse mail: la fonction renvoie 0
vérifier!
Crdslmnt
-
Pour exemple, www.francejoint.fr/test/test.xls
Vous verrez les deux feuilles.
Objectif remplacer les emails vides et sinon laisesr tel quel en feuille1
Non j'ai pourtant vérifier les numéros de téléphone. Ca ne fonctionne qu'à partir de la colonne B
Bizarre -
ContributeurRe
ça ne fonctionne pas probablement car vos N° de téléphone ne sont pas rentrès sous le même format, car en principe cela fonctionne bien aussi avec des chiffres!
Ainsi un N° de téléphone rentré en groupe de 2 avec des blancs est un texte et n'est pas identique pour excel, à un N° rentré sans blanc et formaté 'téléphone",dont l'affichage est le même, mais qui reste un nombre sans espace malgrè la présentation.
C'est sans doute de cette différence que vient le problème
Vous pouvez constater si cela est bien la cause et régler le problème comme suit:
sur vos données de référence , sélectionnez la colonne des N° de téléphone:
Barre d'outil /. Edition / Remplacer
fenêtre du haut entrez un blanc
fenêtre du bas ne mettez rien et cliquez sur remplacer tout.
Vous verrez tout de suite si les affichages se modifient ou non.
Faites la même chose dans votre seconde feuille et après cela, vous pouvez formater vos colonnes en format tel, tout devrait marcher.
Pour mémoire, un N° de télphone formaté tél s'affiche comme un nombre classique dans la barre de formule.
Crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique? -
Pour exemple, www.francejoint.fr/test/test.xls
Vous verrez les deux feuilles.
Objectif remplacer les emails vides et sinon laissr telquel en feuille1 -
Ok merci j'ai compris, j'ai réussi à le faire avec une autre variable que le numéro de téléphone. Mais c'est pourtant bien avec le numéro de téléphone que je dois rechercher.Cependant, les nombres uniquement quelque soit le format de cellule(click gauche/propriété/format de cellule), ç a ne fonctionne pas. Il m'indique #REF!.
Mis à part ça tout fonctionne.
Savez-vous pourquoi les chiffres et uniquement les chiffres ne peuvent être pris en compte ?
Merci -
Pour info aussi, ca ne prend pas les chiffres comme les numéros de tel mais uniquement les lettres j'ai l'impression, non ?
- 1
- 2
Suivant