Exporter une table dans une autre la source est une feuille Excel

Résolu
patgame95 Messages postés 35 Statut Membre -  
patgame95 Messages postés 35 Statut Membre -
Bonjour,

je refais un sujet a la demande justifiée de YG_BE qui a suivi cette conversation

je repose donc le problème :

le contexte:

j'ai des adresses mail et un certains nombres de renseignement qui me provienne via cette feuille Excel j'ai réinjecté cette feuille dans une table ( importation classique par données externes et j 'ai enregistrée cette importation)

ce qui nous donne je parle pour yg_be le fameux formulaire avec les macros F_lead video conférence

mon souhait est que cette feuille ou la table je ne sais, pas soit réinfecter pour éviter une double saisie dans la table T-client sous les champs commun uniquement pour le choix de statut "Assiste" de la table leads vidéo conférence

c'est a dire le champ prénom dans le champ prénom de la T_client etc idem pour prénom et adresse mail

il reste le problème des champs " Prospect" et "client cases à cocher de T_Client a emplir en fonction de : si signature dans "suivi lead" = client ou si la case a coché "conclu " est cochée = client sinon = prospect

mais je n'avais pas pensé à la numérotation ( en fait à la base on ne devait pas réinjecte dans t_Client ) pour plus de facilité on peut ne pas mettre id sur la feuille excel et qu'a l'importation on accepte le message Excel va mettre l'id lui même ( j'interprète mais ça veut dire ça )

car T_client en Id Client est en numAuto

je peux retoucher sans problème l'importation et la feuille Excel et la feuille ele même ( je suis en essai) mais pas T_client la numAuto

les renseignement de la feuille Excel proviennent fe Facebook suite a des demande d'invtitaiton pour ces fameuses webconf

Si ce n'est pas clair tu me dis je suis sur plusieurs problématiques donc c'est possible que parfois cela soit moins clair que ce que je voudrais

Configuration: Windows / Firefox 75.0

17 réponses

Résumé de la discussion

Plusieurs échanges portent sur l'importation d'un fichier Excel vers une table leads conference et la synchronisation des données avec la table T_Client, afin d'éviter une double saisie et des incohérences d'identifiants. Des solutions prioritaires incluent la vérification des doublons avant création dans T_Client, en comparant prénom, nom et email issus de leads conference, et éventuellement l'utilisation d'une table temporaire pour éviter les doublons lors de l'import. En parallèle, des ajustements portent sur la restructuration de la feuille Excel (PrenomWc et NomWc), la mise à jour des champs obligatoires de T_Client et l'harmonisation des statuts 'Conclu' et 'Prospect'.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    essaie de suivre mes explications et de répondre à mes questions, en ajoutant le minimum d'explications.
    je comprends que tu as un bouton qui importe des données d'un fichier Excel vers la table leads conference. (Q1) ai-je bien compris?
    Je réalise tout à coup que cette table est vidée chaque fois, et ne contient donc que ce qui vient d'être importé. (Q2) est-ce exact?
    si c'est exact, cela simplifie ce que je pense que tu demandes ensuite:
    pour tous les enregistrements de la table leads conference ayant "Assiste" dans le champ "choix de statut", créer un enregistrement dans la table T_client.
    (Q3) est-ce ce que tu demandes?

    nous discuterons ensuite comment remplir quel champ de la table T_client.
    0
  2. patgame95 Messages postés 35 Statut Membre
     
    1) Oui ce n'est pas un bouton mais c'est kif :
    Menu données externes.....exportations enregistré onglet importation

    Oui c'est ça la feuille Excel est transformé en une table : leads vidéo conférence

    2) oui ça ėcrase a chaque fois d'où ma question avec la numérotation ( surtout celle T _ client ensuite ?)

    3) non je souhaite que l'on exporté seulement ds T_ client les "Assisté

    Bon ok pour voir ce que tu ex portés ensuite ds T_ client
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      la numérotation de T_client étant automatique, je ne vois pas pourquoi on devrait s'en occuper.
      plusieurs champs de T_client sont obligatoires.
      merci de donner la liste des champs de T_client, et, pour chaque champ, comment il faut le remplir quand on crée à partir des champs de la table leads conference
      0
      1. patgame95 Messages postés 35 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        ok je pensais que les id de la feuille excel allait foutre le bazar si c'est ok c'est bien

        il y a un champ obligatoirement non null "CategorieClient T_Client
        comme j'ai fait ça après sur lead videoconference le prenom et nom est ensemble
        <gras
        lead conference </gras>............................................................... T_Client

        candidats ( nom + prenom) ---------------------------------------------------> nom
        prénom en 2 champs
        Mail-------------------------------------------------------------------------------------------->Email

        c'est tout

        sauf si on peut venant du "suivi lead"

        "conclu" = vrai -------------------------------------------------------------------------> mettre la case a cocher sur client= vrai
        "Conclu" = faux------------------------------------------------------------------------> mettre la case a cocher sur prospect = vrai

        C'est ce que tu veux ?
        0
  3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    c'est le début de ce que je veux.
    1) comment déterminer le prénom et le nom à partir du champ "candidat"?
    2) le code sera déclenché via un bouton encore à créer? il sera exécuté après que la table suivilead ait été manuellement mise à jour, et avant l'importation suivante?
    3) que faut-il mettre pour nomcoach et categorieclient?

    4) il 'y a pas de champ nomclient dans la table T_client

    5) dans la table T_client, il ne peux pas y avoir deux enregistrements ayant la même valeur pour NomCoache. est-ce bien ce que tu souhaites?
    0
  4. patgame95 Messages postés 35 Statut Membre
     
    Ecoutes j'ai réfléchi la feuille Excel peut , doit être refaire on enlève candidats et on met PrenomWC et nomWC

    cette feuille a éte faite apres coup et il n'était ^pas question de la rapatrier das nT_Client c'est grace a ta bonne volontè que ça se fait

    donc je pense( sous ton contrôle) que c'est la solution la plus simple il me suffira d'adapter les champs dans F_Leads videoconference et le tour sera joué

    je referais l'importation enregistrée en 2 mm c'est fait et pas d'emmerdement pour ton code ( c'est un défaut de conception de ma part)

    ça ne touchera même pas les 2 requêtes que tu m'as faites puisque tu travailles avec les ID tout va bien

    qu'en penses tu ?

    pour categorie client c'est "Particulier"

    le "nomcoaché" si il peut être plusieurs imaginons un couple , 2 frères etc, le nom de famiile est le même pas le prénom

    donc je te redonne les équivalences corrigées avec la modif de la feuille Excel si tu l'acceptes

    <gras
    lead conference </gras>............................................................... T_Client

    PrenomWc---modification------------------------------------------------------------------>PrenomClient
    ----NomWc------------------------------------------------------------------------------------------> NomCoache

    Mail-------------------------------------------------------------------------------------------->Email

    c'est tout

    sauf si on peut venant du "suivi lead"

    "conclu" = vrai -------------------------------------------------------------------------> mettre la case a cocher sur client= vrai
    "Conclu" = faux------------------------------------------------------------------------> mettre la case a cocher sur prospect = vrai

    je te prie de m'excuser je n'ai pas été attentif mais mon beau père depuis un mois à l(hosto (87 ans) col du fémur fracturé et a chopé le covid 19 la bas très fragile des poumons déjà on est inquiet

    cette fois je pense que c'est complet mais n'hésites pas a revenir vers moi jeferais le maxi pour te faciliter la vie tu penses bien !
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      bon courage à ta famille et à toi.
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Vu la façon dont la table T_client est conçue, il est interdit d'avoir deux enregistrements ayant la même valeur pour NomCoache.
      le code d'importation sera donc interrompu et affichera un message d'erreur peu compréhensible si cela se produit.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    je propose ce code-ci:
    Option Compare Database
    Option Explicit
    
    Private Sub ajoutclients()
    Dim rslead As DAO.Recordset, rssuivi As DAO.Recordset, rscli As DAO.Recordset
    Set rslead = CurrentDb.OpenRecordset("Leads Videoconference")
    Set rssuivi = CurrentDb.OpenRecordset("Suivi Lead", dbOpenDynaset)
    Set rscli = CurrentDb.OpenRecordset("T_client")
    Do While Not rslead.EOF
        If rslead![Choix statut] = "Assiste" Then
            rscli.AddNew
            rscli!PrenomClient = rslead!PrenomWc
            rscli!NomCoache = rslead!NomWc
            rscli!EMail = rslead!Mail
            rscli!CategorieClient = 2
            rssuivi.FindFirst ("IdParticipant = " + CStr(rslead!ID) + " and Conclu ")
            If rssuivi.NoMatch Then
                rscli!Prospect = True
                rscli!Client = False
            Else
                rscli!Prospect = False
                rscli!Client = True
            End If
            rscli.Update
        End If
        rslead.MoveNext
    Loop 'While Not rslead.EOF
    End Sub
    
    0
  7. patgame95 Messages postés 35 Statut Membre
     
    je le mets ou ce code ? exactement

    As tu pris l'option finalement de changer "candidats " de la feuille Excel ou table lead videoconference c'est pareil , en 2 champs :

    PrenomWc et NomWc ?

    j'avais pensé que c'était plus facile pour toi et pour moi avec notamment l' importation de liste de Facebook qui détaille prénom et nom

    alors je l'ai préparé, si on laisse comme ça pas grave je refais de n'est pas la mère a boire

    Pour les nomcoache pas de double, on trichera on mettra par exemple
    durand et durand1 ?? ça peut coller comme ça c'est du pis aller mais bon ça fonctionnera tu n'es pas responsable d'une mauvaise conception

    et question surement idiote si on change la propriété dans la table sur nomcoache en doublon autorisé ?? incidence ?
    moi dans ma petite tête je pense que le numauto fait son office et qu'il attribuera au deuxieme nom similaire un autre numéro ? et seulement le nomcoaché sera en doublon ( car si on a une famille comment on fait ?)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      le code est destiné à être mis dans un module. le plus simple, c'est de créer un nouveau module, et d'y mettre le code.

      comme tu peux voir en lignes 12 et 13, le code utilise PrenomWc et NomWc.

      sauf si la base est très mal conçue, cela ne devrait pas avoir d'impact d'autoriser des doublons sur nomcoache.

      quand tu testes le code, je suggère que tu testes en essayant d'importer deux fois le même nom, pour observer comment le code réagit.
      0
  8. patgame95 Messages postés 35 Statut Membre
     
    service ultra rapide la classe lol

    ok pour le module je le nomme je suppose

    et pour faire fonctionner ce module ( il est en mode automatique ) pas de bouton commande rien ça se fait tout seul ?

    ok je vais tester avec 2 fois le même nom d'ailleurs je vais faire comme en situation normal, 2 fois le même nom de famille avec un prénom différent comme dans le réel

    avant je vais une sauvegarde on ne sait jamais

    alors le résultat est bon dans la table lead videoconference j'ai essayé avec un nom de famille 3 fois et prenom different et un autre 2 fois

    je l'ai fait par l'intermédiaire du bouton cde "mise a jour leads" jour dans F_leads videoconference

    message erreur " impossible de définir un champ plus d'une fois "

    Par contre bien marqué dansla table lead video conference malgré le message

    mais peut être est ce a cause dela dite macro sur cette commande ?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu peux nommer le module comme tu veux.
      je ne sais pas ce qu'est le mode automatique d'un module.
      pour tester, tu peux cliquer dans le code, et utiliser le bouton "exécuter" ou la touche F5.

      pour de vrai, comment souhaites-tu déclencher l'exécution du code?
      0
  9. patgame95 Messages postés 35 Statut Membre
     
    je ne sais pas le plus rationnellement possible en se mettant a la place d'un utilisateur lambda

    pour le message d'erreur cité plus haut ?

    j'ai fait un autre test j'ai rentre un client avec un nom de famille identique par l’intermédiaire du formulaire F_Client nickel pas un murmure c'est passe après le oui avec doublon de la table

    Essai sur le module message erreur

    erreur 3265
    Element non trouvé dans cette collection

    debogage en surligner jaune

    rssuivi.FindFirst ("IdParticipant = " + CStr(rslead!ID) + " and Conclu ")

    ce qui me fait supposer que ma macro qui fonctionnait bien avant a besoin d'une précision avec le doublon ?
    merci a toi en tous cas sinon sans ton aide mission impossible viens boire un coup lol
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je suis complètement incapable, dans ce contexte, de me mettre à la place d'un utilisateur lambda.

      quand tu écris "ma macro", de quoi s'agit-il? essaie de nommer chaque élément, d'utiliser un vocabulaire factuel et précis.
      le message d'erreur que tu montres est dans le code que je viens de te passer.

      essaie de faire des phrases completes, cela aide à te faire comprendre.
      que fais-tu, qu'observes-tu.

      une phrase comme "Essai sur le module message erreur", ce n'est pas totalement clair.

      quand tu écris "ce qui me fait supposer que ma macro qui fonctionnait bien", tu donnes ton opinion, que je respecte. cependant, tu ne me donnes pas d'information. et je ne peux obtenir d'information que par toi.

      sinon, partage le fichier avec lequel tu obtiens le message d'erreur.
      aurais-tu supprimé la colonne ID du fichier Excel, et donc de la table leads videoconference?
      0
  10. patgame95 Messages postés 35 Statut Membre
     
    1°) ta remarque est juste id du Fichier Excel a été renommé idParticipant

    je suis fatigué avec tous ces évènements moi pas attentif , brouillon tu as bien fait de secouer un peu je te prie de m'excuser

    j'ai rectifié sur le code du nouveau module

    le id de la feuille Excel a été rebaptisé lors des requêtes que tu as faites et complètement oublié quand j'ai refait la feuille Excel pour séparer le champ candidat initial en PrenomWc et NomWc

    effectivement ça exporte très bien sur T_client quand il n 'y a pas de doublon qui est mon essai 1

    j'ai enfin compris le problème ; du message " impossible de définir un champ plus d'une fois "

    maintenant avec doublon, sur le nom coché, doublon qui a été autorisé dans la table

    sur la macro pour importer les donnéess de la feuille Excel sur la table leads videoconference

    macro que tu trouves sur le F_Leads visdeo conference appelée "maj leads" ou encapsulée dan le formulaire ; Ouverture MaJ Leads pour être directement dessus

    (je suis bien obligé de trouver des contournements au code et aux macros trop compliquées)

    effectivement cett macro pose un léger problème

    le message est clair :

    " impossible de définir un champ plus d'une fois "

    car effectivement d'après ce que j'ai compris la macro (j'explique comme je peux) elle, ne prend pas ce qui a déjà été importée et les doublons lui posent problème d’où le message !

    mais le doublon est bien renseigné dans la table lead videoconference le boulot a été fait quand même

    maintenant passons au remplissage de T_client avec doublon, avec le code du nouveau module qui est mon essai 2

    sans problème dans ce sens, là pas un murmure le doublon est bien présent dans la T_client sans message

    En fait tout est nickel sauf ce petit accroc sur la macro sens feuilles excel vers la table leads videoconference

    lien des documents:
    avec la feuille Excel à jour pour l'essai, la base à jour et la copie d'écran de la macro

    https://onedrive.live.com/redir?resid=962B5E3D3756BDFC!246145&authkey=!ALvS1jf45D1HUa4&e=bAtdki

    Pour le bouton de commande pour activer le nouveau module de la mise à jour de la table client il me semble que sa place toute désignée est en bas sur F_client

    merci à toi
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je regarderai tes fichiers plus tard. je suspecte que, dans le fichier Excel, il y a deux titres de colonnes identiques.
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        je pense que l'ancienne importation est perturbée par le changement des noms des colonnes du fichier excel. le plus simple me semble de recréer l'importation, et de modifier la macro pour l'associer à la nouvelle importation.

        pour associer le nouveau code ajoutclients (dont tu peux modifier le nom) à un nouveau bouton, il faut d'abord remplacer
        private sub
        par
        function
        . ensuite tu peux, dans une macro associée au nouveau bouton, ajouter une action ExécuterCode et préciser le nom de la fonction (ajoutclients ou le nom que tu lui as donné).
        0
  11. patgame95 Messages postés 35 Statut Membre
     
    je viens de m'apercevoir que ce n'est pas aussi simple que ça cette histoire :

    1°)si on appuie par inadvertance sur bouton du code du module l’exportation vers T_client va se faire plusieurs fois normal on a autorisé les doublons

    la T_client est l'organe centralisateur des clients donc c'est légitime de les rapatrier de la table leads videoconference sur T_client comme tu l'as fait pas de problème

    2°) mais prenons le cas qu'un propesct Assite a une webconference condition pour qu'il soit rapatrier sur la T_ client

    or prenons un exemple concret

    MR durand michel assiste a la webconference du 20 avril sur le stress il passe automatiquement sur T_Client son suivi n'a rien donné pas d "conclu"

    super sauf que si il assiste à une autre webconference la même ou un autre sujet peut importe il va se trouver de nouveau exporter

    durand michel assite a la webconfernce (stress ou une autre ) le 28 avril il va être de nouveau rapatrier sur T_client aucun intérêt

    Donc à moins que tu aies une autre solution facile pour toi et pas trop prise de tête, je ne peux pas te monopoliser au détriment d'un autre ,qui a aussi besoin de tes précieuses lumières

    Peut être, que la solution serait de changer un peu le code du module pour cette fois exporter uniquement le "conclu" et mettre la case à cocher sur vrai dans t_client comme tu as déjà fait et de repasser le nomcoache de T_client en non sans doublon

    les cas exceptionnels de mari et femme donc avec le même nom de famille seront traités comme suit durant martine et durand1 michel ce n'est hyper conforme mais cette histoire (après consultation de forum , cours etc. sur le web) est insoluble )

    quel est l'avis du pro les "ajoutures" comme on dit ça fait le bazar surtout quand tu ne maitrises pas

    Amitiés

    Patrick
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      bienvenue dans la réalité.
      beaucoup de solutions sont possibles.
      le code du module peut aussi vérifier le contenu de la table T_client, pour éviter de créer un enregistrement si les mêmes infos (nom, prenom, email) sont déjà présentes, ou bien même si email est déjà présent.
      tu peux d'ailleurs modifier la table t_client pour empêcher des doublons sur email, ou sur des combinaisons de champs.
      0
  12. patgame95 Messages postés 35 Statut Membre
     
    Peux tu valider la solution que j'ai imagine puisque je n'écris pas de code, c'est toi qui sais faire

    pff ça m'obsède cette base j'y pense la nuit lol se ne sont pas des 0 et ds 1 qui vont avoir raison je ne suis pas encore battu

    oui car en plus j'ai soulevé un autre lièvre c'est que il faut garder la feuille Excel dans sa totalité puisque elle écrase a chaque fois la table ce qui fait qu'elle va grossir de façon exponentielle

    Pour se résumé la feuille excel capte les adresses mail , prénom et nom des réseau sociaux a chaque inscription sur une webconf ( notre matière pour notre prospection) donc en fait a chaque nouvelle webconf ( sujet different ou le même)

    On agrège donc plusieurs sources (Sendiblue type sarbacane, Facebook etc) ça peut faire dans une année plusieurs centaines de lignes au moins

    J'aimerais pourvoir effacer la liste Excel pour éviter ce désagrément, il faut juste se souvenir de la dernière Id pour éviter le bug sur Idparticipant, régler le problème des doublons

    on efface systematiquement les donnees Excel pour ajouter les nouvelles sans incidence sur la table Leads videoconference etc

    Voila après avoir lu , cherché sur le net et réfléchi mon esquisse de solution qui demandera ta validation et peut être des rectifications mineures sur le module ?

    1°)je veux garder le travail que tu as effectué, (ne plus te monopoliser comme ça, d'autres ont besoin aussi de ton aide ) a savoir les 2 requêtes et le module

    2°)car les requêtes ne vont très bien et j'ai moi même fait des stats sur la base de Leads video conference que je tiens à garder

    3°) j'ai pensé faire une table de transition avec un nom X ou Y peu importe

    c'est dans cette table que l'on met, par importation la feuille Excel ( donc en fait une copie conforme de la structure de la table actuelle Leads videoconference) l'assistant d'importation pour l'enregistrer aucun effot on clic

    4°)On met en place une requête Ajout qui alimente la table actuelle Leads videoconference
    qui se déclenchera par un bouton ? a voir comment et où pour l(instant c'est le raisonnement que je veux valider ou ... pas lol

    5°)ce qui fait que l'on pourra conserver le champ "nomcoach"e de la table T_client avec doublon
    il n'y aura plus l'écrasement systématique de la table ( puisque c'est la table transitoire qui prendra les données directement de la feuille Excel)

    6°) on enléve dans la macro présente sur le formulaire Leads videoconference accessible directement par l'icone leads du formualire d'ouverture de la base , puis le bouton maj leads

    et le tour est joué, pas comme un pro mais bon ...

    et normalement comme il n ' y plus de doublon, le module sens leads videoconference ( la table alimentée par notre requête ajout) à T_client ne devrait plus poser de problème non en fait on garde la possibilité du doublon car un prospect peut trés bien assister a plusieurs webconf je réfléchis en m^me temps .....complexe cette histoire

    Par contre effectivement lors du transfert par le module sur T_Client il faut empêcher je suppose avec code vba d'avoir plusieurs fois le même prospect ?

    parce que le problème est qu'a chaque fois que l'on ajoute (actuellement ) des prospects a la feuille Excel avec doublon autorisé c'est ok sur leads videoconference mais ça dupliquer plusieurs fois sur T_client

    si on enlève le doublon autorise l'ajout ne se fait pas dans t.client car message: risque de doublon ( on s'en sort pas )

    donc l'ajout fait dans la feuille excel n'apparait pas c'est pourquoi j'ai imagine ça pour n'avoir dans feuille Excel que les nouvelles saisie

    mais il est vrai que ça ne gère pas les quelques cas ou un prospect assiste a plusieurs vidéo conférences !?

    j'essaie de trouver de la doc sur comment empêcher par une combinaison de champ les doublons

    j'ai tout bon ou c'est trop tordu, minimum de changement pas une ligne de code a part bien entendu les tiennes du module.....;

    Il en pense quoi le maitre es code ? est ce que ca résout le problème du rajout de saisie dans la feuille Excel ?

    amitiés
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ne suffit-il pas, comme suggéré précédemment, de modifier le code qui crée les nouveaux clients dans la table T_client à partir de la table Leads videoconference, en s'abstenant de créer un nouveau client si un client est déjà dans la table T_client avec les mêmes (nom, prenom, email)?
      0
      1. patgame95 Messages postés 35 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        justement la quadrature du cercle est là

        j'ai fait l'index sans doublon sur champ nom prenom email comme l'importation écrase systématiquelment la table complétement

        si on met pas de doublon sur l'un ou les 3 champs c'est pareil comme l'import ne peut pas écrase la table car risque de doublon, il s'arrête là, pas de copie des nouveaux éléments de la feuille Excel dans la T_client

        si au contraire on lui dit ok avec doublon il fait le boulot non seulement il ajoute les nouvelles saisies d'Excel mais aussi les autres saisies déjà importées dans T_client

        c'est ça le problème !

        d'ou l'idée d'une table transitoire sur Excel on met les nouvelles saisies ( on efface les anciennes ) on se souvient juste de la derniere Id mais donnée normalement sur la table, forcement

        on fait la requête ajout qui prends en compte les nouvelles saisies d'excel et qui les ajoute à la table leads videoconference

        c'est là que je me suis pris un peu les pieds dans le tapis en fait pour 'l'import on prend la table transitoire qui devrait compléter la table avec les nouvelles saisies idem pour T_client

        il reste juste le cas des prospects qui assistent a plusieurs videoconfernces,

        qu'ils soient présent dans le formulaire leads video conference c'est normal les action de suivi sont par prospect mais aussi par video conference

        par contre il ne faut pas qu'ils soient de nouveau dans la T_client une seule fois dans T_client

        a force je m'y perd lol
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > patgame95 Messages postés 35 Statut Membre
         
        ne suffit-il pas, comme suggéré précédemment, de modifier le code du module qui crée les nouveaux clients dans la table T_client à partir de la table Leads videoconference?
        ce code peut facilement s'abstenir de créer un nouveau client si un client est déjà dans la table T_client avec les mêmes valeurs pour (nom, prenom, email).
        ce code n'a pas besoin que les doublons soient interdits, il va, de lui-même, éviter de créer un nouveau client.
        il peut même changer le client de "prospect" en "client", si "conclus" est présent.
        0
      3. patgame95 Messages postés 35 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        a condition de savoir coder ce n'est pas mon cas
        ton module transforme déjà le prospect" conclu" en client ça c'est déjà fait
        0
  13. patgame95 Messages postés 35 Statut Membre
     
    bon finalement j'ai avancé un peu est ce valable a toi de me le dire ?

    1°) j'ai fait une table transitoire j'ai importe la feuille Excel ( la même ) sauf que j'efface systématiquement les données et je saisie mes nouvelles données

    2°) une requête ajout sur la table leads videoconference ça fonctionne

    3°)j'ai change dans ton module le leads videoconference par le nom de ma table transitoire

    c'est ok j'ai effectivement l'ajout d'Exel

    forcement puisqu'il n ' y a plus écrasement sytématique de leads videoconference je n'ai donc plus les exports plusieurs fois sur T_client

    par contre je n'ai pas résolu le cas ou le même prospect va assister a plusieurs conférences comme c'est réglé sur sans doublon ne fonctionne pas j'avais mis un doublon et un non doublon je pensais que le doublon ne serait pas pris mais le non doublon oui en fait ne prend ni l'un ni l'autre s'il détecte un doublon n’exécute pas le code du tout

    ça peut s'arrange ça ? qu'il ne prenne pas le doublon mais qu'il prenne le non doublon ?

    donc j'ai avancé un peu plus la peine d'avoir une feuille Excel avec a terme plusieurs centaines de noms plus de doublons dans la T_client reste plus que ce petit problème

    il reste peut être à automatiser un peu la feuille Excel par exemple la vider après chaque import ?

    mettre en mémoire la dernière Id utilisée ?

    et automatiser (changer la maj lead)
    par contre je viens de voir que l'on ne pas peut pas mettre dans une macro une requete ajout c'est moche lol

    j'aurais pu en une fois tout faire il suffisait d'ajouter cette requête à la macro existante

    mais peut on rentrer le code sql dans la macro je viens juste d'y penser si oui comment ?

    bonne soirée
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      je pense que tu as négligé ma suggestion décrite en #20, #23 et #25.
      0
  14. patgame95 Messages postés 35 Statut Membre
     
    ami du plat pays je ne néglige jamais ce que tu me dis, faut il encore que je le comprenne, j'ai déjà essayé le multi index je vais m'y replonger mais ça donnait le même résultat peut être l'ai je mal assimilé j'y retourne

    j'ai essayé de résoudre un peu par moi même, j'ai évité certains écueils notamment de faire grossir de façon démesurée la feuille Excel

    ensuite d'avoir dans la T_Client uniquement les données ajoutées dans Excel sans avoir obligatoirement la multiplication automatique des saisies déjà faites (gros problème)

    si j'ai dans Excel:

    durant
    dupond
    martin

    une fois rapatriés dans T_client avec doublon autorisé

    durant
    dupond
    martin

    si j'ajoute à la feuille Excel

    duguesclin

    je me retrouve dans T_client systématiquement avec :
    durant
    dupond
    martin

    durant
    dupond
    martin

    duguesclin

    la duplication augmente a chaque fois

    et si je n'autorise pas les doublons

    message sytéme : risque de doublon donc me code s'arrête sans avoir cipier le doublon ça ok mais sans avoir non plus copier l saisie sans doublon !

    et a ce momentt j'ai :

    durant
    dupond
    martin

    Mais pas Duguesclin

    je vais jeter un oeil sur ton lien

    mais quand je l'ai fait cela n'a rien changé si doublon existant le code s'arrête et les doublons ne sont pas copies dans T_client mais les saisies sans doublons non plus

    si j'autorise les doublons cas si dessus

    Si je résume tout fonctionne comme je le souhaitais

    sauf que doublon ou pas doublon, index pas index ça ne change rien

    si c'est un doublon le code s'arrête s'il est seul sur la feuille Excel le code fait son boulot

    mais si j'ai un seul nom en doublon avec 110 noms sans doublons le code stoppe aussi mais sans rapatrier les noms sans doublons

    je ne sais pas comment dire plus

    mais grâce à toi j'ai pu améliorer mon travail

    voici la nouvelle macro qui faut tout en un clic sauf cette histoire de fou de doublon lol

    https://onedrive.live.com/redir?resid=962B5E3D3756BDFC!246168&authkey=!ADT-dzicgVsBt8Y&e=LBKjzw

    merci a toi
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Je pensais plutôt, en effet, "négligé de poser des questions afin de le comprendre", ou bien "reporté à plus tard l'analyse de la suggestion".
      Ce n'est pas un soucis. Cependant, quand tu me demandes d'analyser une autre solution qui me semble plus compliquée, et que tu décris comme incomplète, je te redirige vers la suggestion qui me semble préférable, et que tu es libre d'utiliser ou pas.

      Même si la table T_clients autorise les doublon, le code ajoutclients peut facilement vérifier, afin d'ajouter un client, si un enregistrement ayant les mêmes (prénom, nom, email) est déjà présent, et, dans ce cas, ne pas créer un nouvel enregistrement.
      Je pense que cela prend en compte tes différents soucis, entr'autres:
      - multiplication automatique des saisies déjà faites
      - qu'il ne prenne pas le doublon mais qu'il prenne le non doublon
      - le cas des prospects qui assistent a plusieurs videoconfernces

      Je ne suis pas convaincu qu'il est nécessaire d'avoir une table temporaire.

      L'autorisation, ou non, de doublons dans la table T_clients, peut être utile dans les cas d'encodage manuel dans la table. C'est inutile pour une importation automatique par code, puisque le code peut lui-même s'abstenir de créer des doublons.

      Je suis surpris que, dans la macro, tu appelles ajoutclients() immédiatement après l'importation. Je pensais que tu voulais prendre le temps de d'abord modifier la table Suivi Lead, afin de distinguer les prospects des clients.
      0
    2. patgame95 Messages postés 35 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      je pense que l'on a une incompréhension surtout moi lo,l mais des grands garçons comme nous.... ça va surement s'arranger lol

      en fait je pense que l'on parle de la même chose mais mal interprétée on y retourne c'est pratiquement fini se serait dommage

      1°)"Je ne suis pas convaincu qu'il est nécessaire d'avoir une table temporaire. "

      euh je ne suis pas sûr non plus j'ai fait comme j'ai pu raisonner d'ailleurs c'est plutôt une table transitoire


      mes raisons :

      la feuille excel c'est en fait la TABLE leads videoconference

      - à l'import cette feuille écrase systématiquement et entièrement la table leads

      - c'est a dire que si pour une raison x ou y une erreur de manip est faite, je me retrouve avec une table complétement fausse, les requêtes que tu m'as fait et mes stats----> poubelle

      - de plus la feuille excel n'est qu'une transition , elle me sert uniquement à remplir la base

      ensuite ces données ne me servent plus à rien, si je ne peux pas y toucher comme c'était le cas je vais avoir plusieurs centaines de noms sans intérêt pour moi

      donc j'efface et je n'ai à saisir que la nouvelle flopée de noms qui m’intéresse, si une erreur survient ça ne porte que sur qq noms et sur la table transitoire

      la requête ajout me mets les nouveaux noms dans la table leads videoconference pas de souci

      2°)
      "Je suis surpris que, dans la macro, tu appelles ajoutclients() immédiatement après l'importation. Je pensais que tu voulais prendre le temps de d'abord modifier la table Suivi Lead, afin de distinguer les prospects des clients. "


      c'est surement une erreur ou dois-je le mettre ?

      Mais en fait non je ne distingue pas dans le suivi Leads les prospects des clients ce sont par définition des prospects sauf quand dans suivi leads, la case à cocher "Conclu" est sur vrai, là il devient client

      Mais ça se passe dans le module que tu m'as écrit en effet si "conclu " est coché quand ça exporte dans T_Client la case prospect ou client est coche selon le cas

      ça fonctionne très bien

      mon incompréhension n'est pas là c'est juste en dessous

      3°)
      "Même si la table T_clients autorise les doublon, le code ajoutclients peut facilement vérifier, afin d'ajouter un client, si un enregistrement ayant les mêmes (prénom, nom, email) est déjà présent, et, dans ce cas, ne pas créer un nouvel enregistrement.
      Je pense que cela prend en compte tes différents soucis, entr'autres:
      - multiplication automatique des saisies déjà faites
      - qu'il ne prenne pas le doublon mais qu'il prenne le non doublon
      - le cas des prospects qui assistent a plusieurs videoconfernces "

      mais oui je suis 100 % d'accord c'est ce que je souhaite et c'est là que ça coince sur ma mise en œuvre et ma compréhension car je n'obtiens pas ce résultat après tous mes essais !

      il faut peut être ajouter dans ton module du code type :

      si dans la feuille excel je trouve NomWc+ PrenonWc identique à Nomcoaché + Prenonclient je n'exporte pas ce nom

      mais si la ligne au dessus ou 3 en dessous etc, (c'est une image ) je rencontre le même binôme mais non identique à ce moment j'exporte dans les bonnes cases comme codé dans le module ?

      sauf que moi je n'ai pas ce résultat ??? si le module rencontre un nom en doublon il stoppe son exportation
      ( actuellement) mais n'ajoute pas les noms qui ne sont pas des doublons

      il ne gère pas les 2 statuts dans la feuille excel doublon et pas doublon

      si doublon je ne regarde rien d'autre et je boucle le code sans rien faire

      voici le module que tu as écrit j'ai juste changé leads videoconference au début pour la table transitoire mais ça ne change rien ? enfin j'espère

      Function ajoutclients()
      Dim rslead As DAO.Recordset, rssuivi As DAO.Recordset, rscli As DAO.Recordset
      Set rslead = CurrentDb.OpenRecordset("Import Feuille Excel Leads Videoconference")
      Set rssuivi = CurrentDb.OpenRecordset("Suivi Lead", dbOpenDynaset)
      Set rscli = CurrentDb.OpenRecordset("T_client")
      Do While Not rslead.EOF
      If rslead![Choix statut] = "Assiste" Then
      rscli.AddNew
      rscli!PrenomClient = rslead!PrenomWc
      rscli!NomCoache = rslead!NomWc
      rscli!EMail = rslead!Mail
      rscli!CategorieClient = 2
      rssuivi.FindFirst ("IdParticipant = " + CStr(rslead!IdParticipant) + " and Conclu ")
      If rssuivi.NoMatch Then
      rscli!Prospect = True
      rscli!Client = False
      Else
      rscli!Prospect = False
      rscli!Client = True
      End If
      rscli.Update
      End If
      rslead.MoveNext
      Loop 'While Not rslead.EOF
      End Function


      Va ton finir pas se comprendre? parce que je ne veux pas une autre solution les 3/4 du boulot me vont très bien
      tu penses bien, c'est juste cette histoire de doublon que je ne comprends pas pour le 1/4 restant

      Mais ça va s'arranger je te remercie de ta patience et de ton implication
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > patgame95 Messages postés 35 Statut Membre
       
      je vais modifier le code pour vérifier, avant d'ajouter un client, si un enregistrement ayant les mêmes (prénom, nom, email) est déjà présent, et, dans ce cas, ne pas créer un nouvel enregistrement.

      quand j'aurai fait et testé le changement, je te l'enverrai, et tu pourras le tester, puis décider si tu souhaites garder une table temporaire.
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > patgame95 Messages postés 35 Statut Membre
       
      quand j'écris "le code ajoutclients peut facilement vérifier", je veux dire que je peux, sans beaucoup de travail, modifier le code pour qu'il fasse la vérification.
      0
    5. patgame95 Messages postés 35 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Super je te remercie j'espère que je ne t'aies pas trop dèsobligè
      Mes remarques étaient t elles fondees finalement?

      J'attends avec impatience ton code

      Je pense qu'il réglera en même temps le cas des époux avec le même nom de famille et le prénom différents
      Bon codage tu auras mérité de la patrie comme on dit

      Si ça règle le problème de : si doublon je ne prends pas mais pas doublon je prends dans la même feuille Excel on est dans l'objectif
      Je suppose que pour les saisies manuelles dans T_ client on garde le réglage sur sans doublon sur nomcoache ?

      Amitiés

      Patrick
      0
  15. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Voici le nouveau code proposé.
    Je suis reparti d'un code plus ancien, de façon à pouvoir le tester (je pense n'avoir pas la base correspondant au dernier code que tu as partagé). Tu dois donc probablement adapter à nouveau un nom de table dans le code.
    Option Compare Database
    Option Explicit
    
    Private Sub ajoutclients()
    Dim rslead As DAO.Recordset, rssuivi As DAO.Recordset, rscli As DAO.Recordset
    Dim clitest As String
    Set rslead = CurrentDb.OpenRecordset("Leads Videoconference")
    Set rssuivi = CurrentDb.OpenRecordset("Suivi Lead", dbOpenDynaset)
    Set rscli = CurrentDb.OpenRecordset("T_client", dbOpenDynaset)
    Do While Not rslead.EOF
        If rslead![Choix statut] = "Assiste" Then
            clitest = " true "
            If Not IsNull(rslead!NomWc) Then
                clitest = clitest + " and NomCoache = '" + rslead!NomWc + "' "
            End If
            If Not IsNull(rslead!PrenomWc) Then
                clitest = clitest + " and PrenomClient = '" + rslead!PrenomWc + "' "
            End If
            If Not IsNull(rslead!Mail) Then
                clitest = clitest + " and EMail = '" + rslead!Mail + "' "
            End If
            rscli.FindFirst (clitest)
            If rscli.NoMatch Then
                rscli.AddNew
                rscli!PrenomClient = rslead!PrenomWc
                rscli!NomCoache = rslead!NomWc
                rscli!EMail = rslead!Mail
                rscli!CategorieClient = 2
                rssuivi.FindFirst ("IdParticipant = " + CStr(rslead!ID) + " and Conclu ")
                If rssuivi.NoMatch Then
                    rscli!Prospect = True
                    rscli!Client = False
                Else
                    rscli!Prospect = False
                    rscli!Client = True
                End If
                rscli.Update
            End If
        End If
        rslead.MoveNext
    Loop 'While Not rslead.EOF
    End Sub
    
    
    0
  16. patgame95 Messages postés 35 Statut Membre
     
    merci a toi

    je t'avais copié le code juste au dessus, dernier post avec le nom dela nouvelle table

    je suppose aussi que je change le Private Sub par function

    un copier coller va faire le nécessaire, j'essaie de suite

    la casse de la feuille excel a t elle une importance par exemple une fois Maria et une fois maria?

    voila le résultat des courses

    il y a une erreur de compilation End Function attendu :c'est le message renoyé

    et le dernier End Sub est surligné ?

    de la nouvelle table a leads vdeo conference c'est bien importe pas de problème mais rien dans T_Client

    pour le doublon j'ai fait un copier coller du nom et prénom pou que tout soit exactement conforme

    je n'ai mis dans excel que 2 nom un doublon et un nouveau

    a tout hasard je mets le code que j'ai rectifie avec function et la nouvelle table

    Function ajoutclients()
    Dim rslead As DAO.Recordset, rssuivi As DAO.Recordset, rscli As DAO.Recordset
    Dim clitest As String
    Set rslead = CurrentDb.OpenRecordset("Import Feuille Excel Leads Videoconference")
    Set rssuivi = CurrentDb.OpenRecordset("Suivi Lead", dbOpenDynaset)
    Set rscli = CurrentDb.OpenRecordset("T_client", dbOpenDynaset)
    Do While Not rslead.EOF
    If rslead![Choix statut] = "Assiste" Then
    clitest = " true "
    If Not IsNull(rslead!NomWc) Then
    clitest = clitest + " and NomCoache = '" + rslead!NomWc + "' "
    End If
    If Not IsNull(rslead!PrenomWc) Then
    clitest = clitest + " and PrenomClient = '" + rslead!PrenomWc + "' "
    End If
    If Not IsNull(rslead!Mail) Then
    clitest = clitest + " and EMail = '" + rslead!Mail + "' "
    End If
    rscli.FindFirst (clitest)
    If rscli.NoMatch Then
    rscli.AddNew
    rscli!PrenomClient = rslead!PrenomWc
    rscli!NomCoache = rslead!NomWc
    rscli!EMail = rslead!Mail
    rscli!CategorieClient = 2
    rssuivi.FindFirst ("IdParticipant = " + CStr(rslead!ID) + " and Conclu ")
    If rssuivi.NoMatch Then
    rscli!Prospect = True
    rscli!Client = False
    Else
    rscli!Prospect = False
    rscli!Client = True
    End If
    rscli.Update
    End If
    End If
    rslead.MoveNext
    Loop 'While Not rslead.EOF
    End Sub
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      j'avais le dernier code, mais pas la base correspondante.
      oui, tu changes private sub en fonction.
      je pense que la casse n'a pas d'importance, vu la façon dont la table T_clients est définie.
      0
  17. patgame95 Messages postés 35 Statut Membre
     
    nos 2 messages se sont peut être croisés j'étais en train de le compléter avec le message d'erreur aprés mon essai
    je le remets ici

    Erreur compilation
    End Function attendu

    et la dernière ligne End Sub est surligné

    j'en ai profitè au dessus dernier post pour te mettre le code que j'ai rectifié on ne sait jamais mais enfin il ny a vait qu'un nom à changer
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      si tu remplaces sub par fonction au début, il faut remplacer end sub par end function en dessous.
      j'ai fait une erreur de logique dans le code, il refuse trop vite de créer de nouveaux clients, je vais corriger et t'envoyer.
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      voici:
      Option Compare Database
      Option Explicit
      
      Private Sub ajoutclients()
      Dim rslead As DAO.Recordset, rssuivi As DAO.Recordset, rscli As DAO.Recordset
      Dim clitest As String
      Set rslead = CurrentDb.OpenRecordset("Leads Videoconference")
      Set rssuivi = CurrentDb.OpenRecordset("Suivi Lead", dbOpenDynaset)
      Set rscli = CurrentDb.OpenRecordset("T_client", dbOpenDynaset)
      Do While Not rslead.EOF
          If rslead![Choix statut] = "Assiste" And Not (IsNull(rslead!NomWc)) Then
              clitest = "  NomCoache "
              If Not IsNull(rslead!NomWc) Then
                  clitest = clitest + " = '" + rslead!NomWc + "' "
              Else
                  clitest = clitest + " is null "
              End If
              clitest = clitest + " and PrenomClient "
              If Not IsNull(rslead!PrenomWc) Then
                  clitest = clitest + " = '" + rslead!PrenomWc + "' "
              Else
                  clitest = clitest + " is null "
              End If
              clitest = clitest + " and EMail "
              If Not IsNull(rslead!Mail) Then
                  clitest = clitest + " = '" + rslead!Mail + "' "
              Else
                  clitest = clitest + " is null "
              End If
              rscli.FindFirst (clitest)
              If rscli.NoMatch Then
                  rscli.AddNew
                  rscli!PrenomClient = rslead!PrenomWc
                  rscli!NomCoache = rslead!NomWc
                  rscli!EMail = rslead!Mail
                  rscli!CategorieClient = 2
                  rssuivi.FindFirst ("IdParticipant = " + CStr(rslead!ID) + " and Conclu ")
                  If rssuivi.NoMatch Then
                      rscli!Prospect = True
                      rscli!Client = False
                  Else
                      rscli!Prospect = False
                      rscli!Client = True
                  End If
                  rscli.Update
              End If
          End If
          rslead.MoveNext
      Loop 'While Not rslead.EOF
      End Sub
      
      0
    3. patgame95 Messages postés 35 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      une erreur dans le code

      la ligne presque a la fin

      rscli.Update

      surlignée en jaune

      le function du début et le End Function est bien mis

      j'ai rectifié aussi CStr(rslead!ID) + " and Conclu ") en IdParticipant

      je l'ai vu, je ne connais pas le code mais je jette un œil sur les champs au cas ou
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > patgame95 Messages postés 35 Statut Membre
       
      quelle erreur? tu précises où, mais pas le message d'erreur.
      0
    5. patgame95 Messages postés 35 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      désolé
      copie écran

      https://onedrive.live.com/redir?resid=962B5E3D3756BDFC!246170&authkey=!AKLzoZ0OepYxLj8&e=zv4XqB

      encore le coup du doublon de la table T_Client

      j'ai essayé j'ai enlevé sans doublon sur nomcoache T_ Client et mis indexé sur non

      ça passe mais trop bien car le doublon est passé avec le nouveau nom

      alors que seulement le nouveau nom doit être pésent dans T_Client

      le souci est là mais ???
      0
  18. patgame95 Messages postés 35 Statut Membre
     
    ça fonctionne j'ai mis le champ nomcoache et email en sans doublon

    par contre dans la table prénomclient n'a pas été pris: message ; risque de doublon... ?

    mais c'est passé sur table cleint j'ai laisse prenom en non indexé ?
    0