Il faut rajouter en ligne 5 ceci Dim Fic as String.
Et normalement le code que je t'ai fourni permet de balayer tout le fichier texte.
Version imprimable
Il faut rajouter en ligne 5 ceci Dim Fic as String.
Et normalement le code que je t'ai fourni permet de balayer tout le fichier texte.
Bonjour,
Est ce que je pourrais avoir des indications concernant la création de la base ? Car en effet, ton code traite bien tout mes fichiers texte, mais il n'entre pas toutes les valeurs dans la base..
Sur cette capture on peut voir un fichier texte avec toutes ses références annexes:
Pièce jointe 179571
Or dans ma BDD pour la meme référence produit, je n'ai que ça:
Pièce jointe 179572
Tu constates bien que les données que le code entre dans la base ne concerne que la première ref_annexe.
Bonjour,
Une question vous n'avez pas mis d'index sur "Ref_Produit" et "Ref_Compo" !
Mes deux champs son indexés et obligatoire, de plus, le champ "ref_produit" est unique.
Mais pour une ref_produit je n'ai qu'une ref_compo, alors que je devrait en avoir plusieurs.. (un casse tête)
Les champs "ref_produit" et "ref_compo" ne doivent pas être unique.
Parfait ! Il ne me reste plus qu'a traiter ces données!
Je vais comparer Ref_Produit à Ref_produit.. Et regarder quelles sont les Ref_produits qui ont des Ref_Compos en communs
Merci de ton aide précieuse que tu m'as apporté jusque là !! Je reviendrais surement vers toi, c'est une bonne chose que tu partage tes connaissances !
Je viens de créer un TCD et je m'en demandais si il était possible de manière automatique de le remplir avec des 1 ? Je m'explique:
Chaque étiquettes de ligne correspond à une Ref_Produit
Chaque étiquettes de colonne correspond à une Ref_Compo (composant)
Je vais chercher automatiquement mes données depuis mon fichier Access dans lequel il y a ma BDD..
Ce que je voudrais faire c'est, pour toutes mes Ref_Produit si une des Ref_Compo est présente dans sa nomenclature, alors mettre un "1" à l'intersection de ma Ref_Produit et de ma Ref_Compo correspondante.
Fichier:
Pièce jointe 179588
Par exemple, ma Ref_Produit 400461F1 a dans sa nomenclature la Ref_Compo 3SCAF0333A. Alors je mets un "1" ...
Pièce jointe 179589
Tu peux le faire avec une requête analyse croisée dans Access...
Oui effectivement, j'ai éssayé..
Mais malheureusement cela ne fonctionne pas :
Pièce jointe 179592
Mon nombre de Ref_Compo étant très grand, Access a du mal ...
Je me suis rabattu sur Excel en pensant que ça serait possible
Tu auras le même problème, et en faisant l'inverse : ref_prod en colonne et ref_compo en ligne.
En faisant l'inverse même problème...
J'ai créer un TCD avec comme sources de données externes ma BDD... Peut être qu'une macro permettrai de faire ce que je veux..(mettre des "1")..
Je suis dans une impasse ! :/
J'ai trouvé une solution, dis moi si tu pense que ça peut marcher.
J'ai ajouté un champ dans ma BDD, j'en ai 4 (N° d'enregistrement, Ref_produit, Ref_compo, Valeur)
Je mets le doit sur "Valeur":
C'est un champ que j'ai défini comme "numérique", je lui est attribué une valeur par défaut à "1".
Ensuite depuis excel je créé un TCD avec comme données d'entrées celles de ma BDD via l'outil "changer la source de données". Du coup en étiquettes de lignes et de colonnes, je mets mes Refs..Et en valeur, "Valeur" sachant que j'ai modifié le paramètre des champs de valeurs à MAX.
Du coup j'obtient mon tableau croisé et j'ai un "1" lorsque ma Ref_compo est présente dans la composition de mon produit (de me Ref_produit).
Je sais pas si c'est du bidouillage ou si c'est correct ...
AperçuPièce jointe 179622
Le petit problème que je rencontre, c'est lorsque que je clique sur un "1" j'obtient ça :
Pièce jointe 179624
Or pour cette référence produit, ce composant est censé apparaître qu'une seule fois... Il est présent qu'une fois dans la nomenclature du produits correspondant :
Pièce jointe 179625
Il n'était pas nécessaire de mettre une nouvelle valeur, il suffisait de mettre Ref_compo en valeur et en mettant compter comme fonction de regroupement.
Salut,
J'ai modifié un peu ton code mais j'ai une erreur et je ne comprend pas pourquoi:
Voila le code
Au niveau du "Next" sous Line1, VBA me retourne une erreur "Next sans For".Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 If oFSO.FolderExists(Rep2) Then For Each oFl In oFSO.GetFolder(Rep2).Files Fic = Mid(oFl, 18) intFic = FreeFile Open Rep2 & "\" & Fic For Input As intFic ValRefProd = Replace(Fic, ".txt", "") If BoucleSurTabl(ValRefProd, Tb) = True Then GoTo Line1 Else While Not EOF(intFic) Line Input #intFic, strLigne If Mid(strLigne, 190, 3) = "Yes" Then ValRefAnn = Mid(strLigne, 28, 10) DoCmd.RunSQL "INSERT INTO COMMUNS (Ref_Produit, Ref_Compo) VALUES ('" & ValRefProd & "', '" & ValRefAnn & "')" Debug.Print ValRefAnn End If Wend Close intFic Line1: Next End If DoCmd.SetWarnings True
Alors qu'en réalité ce "Next" correspond au "For Each" juste au dessus.
Je pense que cest du au fait que j'ai ajouté certaines conditions... Du genre "If..."
Merci d'avance.
Bonjour,
Oui, mais tu as oublié semble-t-il un End If quelque part.
A mon avis, cela devrait être à la ligne 20 et correspondrait au IF de la ligne 8.
Cordialement,
Merci pour ta disponibilité et pour ta réponse!
J'ai d'autres questions, j'essaye d'y répondre par moi même et si je n'y arrive pas je reviendrais te demander un peu de ton temps.
Encore merci!