VBA ACCESS : erreur 3251, pourquoi?

Résolu/Fermé
Oukapaka
Messages postés
112
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
- 1 juin 2012 à 11:20
blux
Messages postés
24076
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 mai 2022
- 8 juin 2012 à 13:57
Bonjour,

Voici le petit bout de code qui m'ennuie énormément. Le but est de sélectionner les données de la colonne F et de créer autant de fichier qu'il y a de données différentes (si ce sont les mêmes, elles iraient dans le même fichier)
Mais je me tape l'erreur 3251 qui dit l'opération n'est pas autorisée... un petit coup de main?

On Error Resume Next

'boucle qui prend chaque pfc pour l'insérer dans un fichier unique avec son nom de rattachement et son ERD ID
Dim F As DAO.Field
Dim G As DAO.Field
Dim DB As DAO.Database
Dim rst As Recordset
    Set DB = CurrentDb()
    Set rst = CurrentDb.OpenRecordset("fum&pfc")
    Set G = rst.Fields![ERD Id]
    Set F = rst.Fields![Rattaché à Id]
            rst.MoveFirst
                While Not rst.EOF
                    For Each F In DB
                        DoCmd.TransferText acExportDelim, "FUM_IMPORT", "FUM_" + F + "_" + G + "_31122011.txt", "C:\Documents and Settings\sghn4628\Desktop\Sujet PFC\FUM_" + F + "_" + G + "_31122011.txt"
                    Next
                Wend
            rst.MoveNext
    rst.Close
            
End Sub


2 réponses

blux
Messages postés
24076
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 mai 2022
3 190
1 juin 2012 à 11:25
Salut,

quelle ligne sort l'erreur ?
0
Oukapaka
Messages postés
112
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5
1 juin 2012 à 16:27
Salut blux, merci de t'interesser à mon sujet =)
Cette erreur sort juste après le For Each
0
blux
Messages postés
24076
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 mai 2022
3 190
1 juin 2012 à 16:38
Si tu fais un msgbox de F et de G, il dit quoi ?
0
Oukapaka
Messages postés
112
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5
Modifié par Oukapaka le 1/06/2012 à 16:53
Il me donne les valeurs cherchées correctement, c'est la syntaxe du for each F In Db ou rst qui ne passe pas d'après ce que je lis à chaque fois. Enfin il me donne la première valeur du tableau puisqu'il commence mais en rentre pas dans la boucle, donc je n'ai aucune suite
0
blux
Messages postés
24076
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 mai 2022
3 190
1 juin 2012 à 17:12
Je n'aurais pas fait comme ça, y'a un peu trop de mélange.
Je virerais le foreach (la boucle est déjà faite avec while), la définition des deux champs, de la base et j'attaquerais en direct :

DoCmd.TransferText acExportDelim, "FUM_IMPORT", "FUM_" +rst.fields[rattaché à Id] + "_" + rst.fields[ERD Id] ....
0
Oukapaka
Messages postés
112
Date d'inscription
jeudi 30 septembre 2010
Statut
Membre
Dernière intervention
22 août 2016
5
Modifié par Oukapaka le 1/06/2012 à 17:18
La boucle me semblait obligatoire parce que dans ce fichier (200.000 lignes) j'dois les regrouper par paquet de X fichiers, X étant = select distinct de F et G (ces données sont les memes, je dois juste les sortir dans le nom du fichier de sortie d'ou les deux champs à déclarer). Je viens quand même de tester et on me parle d'une incompatibilité de type, je ne comprends pas tout à fait pourquoi ou j'ai des types déclarés n'étant pas compatibles
0
blux
Messages postés
24076
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
23 mai 2022
3 190
1 juin 2012 à 17:21
Je n'ai donc pas compris ce que tu souhaites faire précisément parce que l'histoire de dire que si les données sont identiques elles vont dans le même fichier, ça ne marchera pas, les fichiers en sortie seront écrits une bonne fois pour toute. Toute donnée identique conduirait à la création d'un fichier réécrasant l'existant. Il n'y a pas d'append...
0