VBA ACCESS : erreur 3251, pourquoi?

Résolu
Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   -  
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   -
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 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Salut,

quelle ligne sort l'erreur ?
0
Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   5
 
Salut blux, merci de t'interesser à mon sujet =)
Cette erreur sort juste après le For Each
0
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Si tu fais un msgbox de F et de G, il dit quoi ?
0
Oukapaka Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   5
 
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 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
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   Statut Membre Dernière intervention   5
 
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 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
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