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. bonjour
    la valeur que tu desires en colonne W tu peux la trouver en utilisant la fonction RECHERCHEV .
    lavaleur cherchée (enfeuil 1) sera les n° de tel ; la matrice (en feil 2 ) sra le tableau ; len° de colonne sera le nb de colonne pour arriver jusqu'a la colonne des e-mails(incluse) ; mets un; 0 si c'est du vrac
    tu rentres ça en colonne W à la 1ere ligne a renseigner puis tu tires vers le bas
    a+
    0
    1. Merci pour vos réponses.
      Cependant, je n'ai pas tout saisi car l'objectif est qu'après avoir reconnu les lignes équivalentes entre la feuille 1 et la feuille 2, il faut coller la cellule W de la feuille 2 vers le cellule W de la feuille 1.

      Comment faire svp ?

      Merci d'avance

      Mathieu
      0
      1. Contributeur
        Bonjour
        vous ne donnez pas assez d'info sur votre fichier pour pouvoir être complet dans nos indications,toutefois,pour préciser ce que veux dire Gilou, un exemple à adapter:
        sur votre feuille 2 , supposons que votre champ d'information commence en A avec le nom , en B avec le N° de téléphone, en C avec une info quelconque et en D avec l'adresse Mail.
        dans votre feuille 1 on suppsoe que le N° de téléphone est dans la colonne F, à partir de F2
        placez en W2:
        =SI(ESTERREUR(RECHERCHEV(F2;feuil2!$B$2:$D$30000;3;0);"";RECHERCHEV(F2;feuil2!$B$2:$D$30000;3;0))
        cette formule va recherche en colonne B de feuil2 la valeur de F2 de la feuille 1 et ressortir en W2 la valeur trouvée dans la 3° colonne du champ indiqué, soit ici colonne D)
        le premier item de la formule sert à éviter l'affichage parasite #/NA si la valeur de F2 n'est pas trouvée .

        A adapter à vos champ et vos noms de feuilles:
        feuil2 donne le nom de la feuille où se situe le champ de recherche et doit être suivi du point d'exclamation dans la formule avant d'inscrire les limites de champ.Les limites sont assorties ces signes $( par exemple $B$2:$D$300) pour bloquer les champs et permettre de "tirer "la formule sur toute la hauteur de la colonne W
        Si vous n'arrivez pas avec cela, il faudra en dire plus sur l'organisation de vos données.
        Bonne chance
        crdlmnt
        0
        1. Navré, ça ne fonctionne pas.

          Explication concrète

          Feuille 1 intitulée BASE
          Feuille 2 intitulée VONEO

          Feuille1
          A1 = CODE PROSPECT
          B1 = RAISON SOCIALE
          C1 = ADRESSE
          ENTRE D1 ET N1 = info quelconque
          O1 = TEL
          ENTRE P1 ET V1 = info quelconque
          W1 = MAIL VIDE

          Feuille2 est configuré de la même manière sauf que:
          A1 = COLONNE VIDE
          W1 = MAIL REMPLI

          OBJECTIF: Copier la cellule W1 de la feuille 2 vers la cellule W1 de la feuille 1 tout en faisant en sorte que les numéros de téléphones soient les mêmes pour ne pas se tromper de ligne.

          Pour info, je crois que votre formule ne fonctionnait pas, peut-être manquait-il une valeur, une paranthèse.

          Merci pour votre implication
          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
          2. 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 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. 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 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
                    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. 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. 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
                          re,

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

                              "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. Merci beaucoup pour votre implication, vous m'enlever une épine du pied

                                A la prochaine

                                Mahieu
                                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. 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. 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. 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
                                        • 2