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
Configuration: Windows Vista
Firefox 3.5.5

24 réponses

  1. parfait,

    tout fonctionne très bien

    Merci pour votre réponse

    Excellente journée

    Mathieu
    0
    1. Contributeur
      Ci 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...
      0
      1. 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
        0
        1. Contributeur
          Bonjour,

          Si j'ai bien compris tu ne voudrais plus voir le message 'n° inconnu etc" et passer directement au suivant ?
          0
          1. 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
            0
            1. 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
              0
              1. Contributeur
                Bonjour,

                Excuses moi, mais je n'ai plus du tout le pb en tête!!!

                j'essaierai de m'y replonger dans la journée....
                0
                1. 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
                  0
                  1. Merci beaucoup pour votre implication, vous m'enlever une épine du pied

                    A la prochaine

                    Mahieu
                    0
                    1. Contributeur
                      Re,

                      "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
                      0
                      1. 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
                        0
                        1. Contributeur
                          re,

                          Il faut ajouter
                          Option base 1 au dessus de la macro !!!
                          avec mes excuses...
                          0
                          1. 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
                            0
                            1. Contributeur
                              Bonjour,

                              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éphone
                              option 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
                              0
                              1. Contributeur
                                Bonjour
                                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
                                0
                                1. 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
                                  0
                                  1. Contributeur
                                    Re

                                    ç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?
                                    0
                                    1. Pour exemple, www.francejoint.fr/test/test.xls

                                      Vous verrez les deux feuilles.

                                      Objectif remplacer les emails vides et sinon laissr telquel en feuille1
                                      0
                                      1. 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
                                        0
                                        1. Pour info aussi, ca ne prend pas les chiffres comme les numéros de tel mais uniquement les lettres j'ai l'impression, non ?
                                          0
                                          1. re
                                            je t'envoie un exemple succint de l'utilisation de RECHERCHEV
                                            http://www.cijoint.fr/cjlink.php?file=cj200912/cijUTiJumM.xls
                                            SI tu n'as toujours pas compris je (nous) t'envoierons un topo plus detaillé
                                            0
                                        • 1
                                        • 2