IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise à jour de fichier excel via une BDD Access


Sujet :

Macros et VBA Excel

  1. #41
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour
    Citation Envoyé par iliaseyah Voir le message
    Je pense que tu n'as pas bien compris, si on est dans le cas d'un TB, il faut "juste" supprimer le suffixe. Pour tous les autres cas (faces "F" ) en plus de se séparer du suffixe il faut également fusionner les deux sous-produits.
    As-tu au moins testé !
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  2. #42
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    HAHA, je vais être honnête..
    Je dois avouer que non, je n'ai pas eu une minute à moi. Mais je test tout de suite et je te dis

  3. #43
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Petit problème d’exécution pour la deuxième requête, je pensais que le problème était dans le nom de la première requête(vu qu'elle lui fait appel???).
    Pourtant j'ai bien créé et enregistré comme il le faut la première requête, enfin je suppose.

    Nom : pbrequete.PNG
Affichages : 97
Taille : 95,0 Ko

  4. #44
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Bonjour 78chris,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCTROW Couples0.Ref_Produit, Couples0.Racine0 FROM Couples0 INNER JOIN Couples0 AS CommunsRacine2_1 ON Couples0.Racine0 = CommunsRacine2_1.Racine0 HERE (((Couples0.Ref_Produit)<>[CommunsRacine2_1]![ref_produit]));
    J'essaye de debugger la requête mais j'ai du mal
    Si j'ai à un peu près compris:
    On sélectionne Ref_Produit dans la table Couples0 créée précédemment puis Racine0 dans cette même table, on fait donc le lien avec Couples0. On renomme ensuite Racine0 de la table Couples0 en CommunsRacine2_1.

    Jusqu'ici ça va.
    Ensuite l'autre partie de la requête me donne plus de mal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Couples0.Racine0 = CommunsRacine2_1.Racine0 HERE (((Couples0.Ref_Produit)<>[CommunsRacine2_1]![ref_produit]));

  5. #45
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    Il manque le W de WHERE qui a sauté lors de ma copie. Par ailleurs l'alias est mal choisi (résidu de mes divers tests)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCTROW Couples0.Ref_Produit, Couples0.Racine0 FROM Couples0 INNER JOIN Couples0 AS Couples0_1 ON Couples0.Racine0 = Couples0_1.Racine0 WHERE (((Couples0.Ref_Produit)<>[Couples0_1]![ref_produit]));
    Pour la dernière il faut ajouter DISTINCT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT Communs.*, IIf(Right([Communs]![ref_produit],2)="TB",Left([Communs]![Ref_produit],Len([Communs]![ref_produit])-2),IIf([Couples]![Racine0] Is Null,[Communs]![Ref_produit],[Couples]![Racine0])) AS Racine
    FROM Communs LEFT JOIN Couples ON Communs.Ref_Produit = Couples.Ref_Produit;
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  6. #46
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Juste pour être sur, la première requête se nomme "Couples0" et la deuxième "Couples" ?

    ça à l'air correcte, je vais tester. mais il ya un truc que je trouve bizarre..

    Nom : test.PNG
Affichages : 88
Taille : 6,9 Ko

    Ici pour ce produit c'est le cas à peu près partout, pourquoi il y a encore le "F" dans la colonne de droite (Racine) ?

    Nom : test3.PNG
Affichages : 89
Taille : 5,6 Ko

    Là on perd carrément l'indice du produit,
    Alors qu'initialement il n'est pas considéré comme un produit du type "double faces" (F1/F2, B1/B2, D1/D2, E1/E2..)

  7. #47
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Re

    Le principe était d'assimiler les éléments ayant plusieurs faces (cf. #27) d'où ma notion de couples pas de tronquer tous les caractères de fin de chaîne.

    J'ai d'ailleurs signalé (cf. #33) qu'on trouvait des F1 sans F2...

    Re

    J'ai mal saisi ta remarque. C'est le contraire. On en revient à ce que j'ai évoqué au #33, il faut analyser les 2 derniers caractères : le dernier doit être un chiffre et l'avant dernier une lettre.
    Cela complique ainsi la 1ère requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT Communs.Ref_Produit, Left([communs]![ref_produit],Len([communs]![ref_produit])-2) AS Racine0 FROM Communs WHERE (((Asc(Right([ref_produit],1)))>=48 And (Asc(Right([ref_produit],1)))<=57) AND ((Asc(Mid([ref_produit],Len([ref_produit])-1,1))>=48 And Asc(Mid([ref_produit],Len([ref_produit])-1,1))<=57)=False));
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  8. #48
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Re,

    Je suis désolé, je me suis surement mal expliqué.

    En fait dans cette base on peut classer en trois grandes famille les différents produits:

    - Ceux qui ont cette fameuse notion de "double faces" (F1/F2, B1/B2, D1/D2, E1/E2..)
    - Les autres qui n'ont pas de "double faces", ont cependant un indice. Sur ces produits on ne fait rien car on a pas besoin de les fusionner vu qu'ils ont qu'une face.
    - Puis les produits qui finissent par "TB", ici il suffit juste de supprimer "TB" (ils ont une double faces, mais c'est la même donc il n'y a rien a faire...)

    Pour ceux qui n'ont qu'une face il faut agir comme avec "TB" supprimer la notion de face... En réalité ils ont une autre face mais qui intervient plus loin dans le procédé de fabrication donc on peut considérer qu'ils ont qu'une face.

    N'hésite pas à me demander plus de détails.

    Citation Envoyé par 78chris Voir le message
    Re

    J'ai mal saisi ta remarque. C'est le contraire. On en revient à ce que j'ai évoqué au #33, il faut analyser les 2 derniers caractères : le dernier doit être un chiffre et l'avant dernier une lettre.
    Cela complique ainsi la 1ère requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT Communs.Ref_Produit, Left([communs]![ref_produit],Len([communs]![ref_produit])-2) AS Racine0 FROM Communs WHERE (((Asc(Right([ref_produit],1)))>=48 And (Asc(Right([ref_produit],1)))<=57) AND ((Asc(Mid([ref_produit],Len([ref_produit])-1,1))>=48 And Asc(Mid([ref_produit],Len([ref_produit])-1,1))<=57)=False));
    Oui il faut analyser les deux derniers caractères, si le produit est de la forme "xxxxxF1/2"

    Je vais tester

  9. #49
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Re

    Je t'ai donné la solution pour ne pas tronquer par contre, je vais en rester là. J'ai passer beaucoup (trop) de temps sur ce problème.

    L'association des couples est faite, la terminaison TB est supprimée. Pour le reste les règles sont trop floues il me semble pour savoir quoi enlever.

    J'avais déjà signalé le cas des F1 sans F2 mais tu n'avais pas répondu sur ce point.

    Bidouiller des chaînes qui ne semblent pas voir de structure logique est assez aléatoire et on peut y passer beaucoup de temps pour un résultat non optimum...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  10. #50
    Membre du Club
    Homme Profil pro
    Développeur Info-Indus
    Inscrit en
    Avril 2015
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Info-Indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 202
    Points : 42
    Points
    42
    Par défaut
    Oui je confirme, le nom des produits n'est pas standardisé et ça pose beaucoup de problèmes.
    Je suis très reconnaissant que tu m'es accordé autant de temps et je t'en remercie..
    Malheureusement je ne peux procédé que comme ça en "bidouillant", du coup je vais essayer de manipuler tes requête en travaillant au corps les chaînes de caractères, encore merci.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [AC-2010] Ouverture d'un fichier excel via une base access
    Par yliadis dans le forum Access
    Réponses: 4
    Dernier message: 07/10/2014, 16h47
  2. [AC-2003] Erreur importation fichier Excel dans une BDD
    Par Contrec dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/08/2009, 14h59
  3. extraction d'un fichier excel dans une BDD SQL server
    Par saraenim dans le forum Développement
    Réponses: 4
    Dernier message: 03/10/2008, 13h58
  4. Réponses: 45
    Dernier message: 14/02/2008, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo