VBA Excel : Boucle qui oublie des données ?
Résolu/Fermé
Phoenellion
Messages postés
116
Date d'inscription
dimanche 14 septembre 2008
Statut
Membre
Dernière intervention
30 août 2012
-
Modifié par Phoenellion le 17/02/2012 à 00:07
Amricain59 Messages postés 1 Date d'inscription dimanche 31 juillet 2022 Statut Membre Dernière intervention 31 juillet 2022 - 31 juil. 2022 à 14:34
Amricain59 Messages postés 1 Date d'inscription dimanche 31 juillet 2022 Statut Membre Dernière intervention 31 juillet 2022 - 31 juil. 2022 à 14:34
A voir également:
- VBA Excel : Boucle qui oublie des données ?
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
Géca
Messages postés
799
Date d'inscription
samedi 29 novembre 2003
Statut
Contributeur
Dernière intervention
29 juin 2015
106
17 févr. 2012 à 00:05
17 févr. 2012 à 00:05
Bonsoir,
Utilisez les points d'arrêt et espionnez les valeurs des variables afin de debugguer ce qui ne va pas.
--
Utilisez les points d'arrêt et espionnez les valeurs des variables afin de debugguer ce qui ne va pas.
--
Géca
Messages postés
799
Date d'inscription
samedi 29 novembre 2003
Statut
Contributeur
Dernière intervention
29 juin 2015
106
17 févr. 2012 à 01:09
17 févr. 2012 à 01:09
Plus je regarde votre code et plus je me dis que ça doit se faire en langage SQL.
Ça donnait quoi la requête en SQL ?
Conseil personnel : vous devriez migrer vos données vers un véritable serveur de bases de données.
--
Ça donnait quoi la requête en SQL ?
Conseil personnel : vous devriez migrer vos données vers un véritable serveur de bases de données.
--
Phoenellion
Messages postés
116
Date d'inscription
dimanche 14 septembre 2008
Statut
Membre
Dernière intervention
30 août 2012
33
Modifié par Phoenellion le 17/02/2012 à 04:12
Modifié par Phoenellion le 17/02/2012 à 04:12
En SQL, la requête donne :
Elle fonctionne pour peu que tout le fichier détail soit importé.
Et c'est toute la base du problème en fait. Initialement, ces données sont des sauvegarde d'un logiciel d'exploitation sotckées dans des BDD de type dBase (.dbf) mais je ne parviens pas à les importer dans Access car j'ai le message :
"Le type de base de donnée dBaseIII n'est pas installé ou ne gère pas l'opération sélectionnée"
ma commande est :
Du coup je fais une pirouette en l'important dans excel (2010) puis en important le classeur excel dans Access. mais Excel ne semble pas digérer la base de donnée et s'arrête à 1048572 lignes. (étrange vu que Microsoft assure qu'Excel 2010 n'est limité que par la mémoire vive, et de ce côté là, j'ai de quoi faire)
Il faut donc que je résolve mon problème d'importation directe du fichier dbf dans access.
Je pourrais pré enregistrer les importation et les exécuter avec :
Mais Outre le fait que cela m'oblige à préenregistrer une 50aine d'importations, je voudrais y parvenir en pur VBA car quand ce programme sera fonctionnel je compte le traduire en VB.
SELECT detail.NART, detail.QTE, Prépa_Facture.TYPFACT, Prépa_Facture.TIERS, Prépa_Facture.DATFACT INTO Prépa_DetFact FROM detail INNER JOIN Prépa_Facture ON detail.NUMFACT = Prépa_Facture.NUMFACT ORDER BY detail.NART, Prépa_Facture.DATFACT DESC;
Elle fonctionne pour peu que tout le fichier détail soit importé.
Et c'est toute la base du problème en fait. Initialement, ces données sont des sauvegarde d'un logiciel d'exploitation sotckées dans des BDD de type dBase (.dbf) mais je ne parviens pas à les importer dans Access car j'ai le message :
"Le type de base de donnée dBaseIII n'est pas installé ou ne gère pas l'opération sélectionnée"
ma commande est :
DoCmd.TransferDatabase acImport, "dBaseIII", Chemin_DBF, acTable, "detail.dbf", "Détail"
Du coup je fais une pirouette en l'important dans excel (2010) puis en important le classeur excel dans Access. mais Excel ne semble pas digérer la base de donnée et s'arrête à 1048572 lignes. (étrange vu que Microsoft assure qu'Excel 2010 n'est limité que par la mémoire vive, et de ce côté là, j'ai de quoi faire)
Il faut donc que je résolve mon problème d'importation directe du fichier dbf dans access.
Je pourrais pré enregistrer les importation et les exécuter avec :
DoCmd.RunSavedImportExport "Importation enregistrée"
Mais Outre le fait que cela m'oblige à préenregistrer une 50aine d'importations, je voudrais y parvenir en pur VBA car quand ce programme sera fonctionnel je compte le traduire en VB.
Géca
Messages postés
799
Date d'inscription
samedi 29 novembre 2003
Statut
Contributeur
Dernière intervention
29 juin 2015
106
17 févr. 2012 à 10:13
17 févr. 2012 à 10:13
Bonjour,
Vous devriez posez cette question d'importation de données d'une base dBase (.dbf) vers Access sur le forum base de données.
Votre script n'est pas faux, ce sont les données sur lesquels vous travaillez qui sont corrompues.
Pour finir, juste à titre de conseil sans être un expert base de données, au vu de la taille de vos tables vous devriez migrer vers une solution SQL Server ou MySQL ou PostgreSQL ou Oracle.
Vous devriez posez cette question d'importation de données d'une base dBase (.dbf) vers Access sur le forum base de données.
Votre script n'est pas faux, ce sont les données sur lesquels vous travaillez qui sont corrompues.
Pour finir, juste à titre de conseil sans être un expert base de données, au vu de la taille de vos tables vous devriez migrer vers une solution SQL Server ou MySQL ou PostgreSQL ou Oracle.
Phoenellion
Messages postés
116
Date d'inscription
dimanche 14 septembre 2008
Statut
Membre
Dernière intervention
30 août 2012
33
Modifié par Phoenellion le 19/02/2012 à 21:42
Modifié par Phoenellion le 19/02/2012 à 21:42
Bonjour,
merci pour vos conseils. Concernant le problème d'importation, c'est tout bête j'oubliais l'espace entre dBase et le numéro de version.
Quand à migrer vers du SQL, je crois que cela ne dépend pas de moi car je puise dans des bases de données déjà existantes. De plus, je n'ai aucune connaissance dans ce domaine, bien qu'après cette mésaventure, je pense que ce sera mon prochain objectif d'apprentissage.
Encore merci et bonne continuation.
merci pour vos conseils. Concernant le problème d'importation, c'est tout bête j'oubliais l'espace entre dBase et le numéro de version.
Quand à migrer vers du SQL, je crois que cela ne dépend pas de moi car je puise dans des bases de données déjà existantes. De plus, je n'ai aucune connaissance dans ce domaine, bien qu'après cette mésaventure, je pense que ce sera mon prochain objectif d'apprentissage.
Encore merci et bonne continuation.
Amricain59
Messages postés
1
Date d'inscription
dimanche 31 juillet 2022
Statut
Membre
Dernière intervention
31 juillet 2022
>
Phoenellion
Messages postés
116
Date d'inscription
dimanche 14 septembre 2008
Statut
Membre
Dernière intervention
30 août 2012
31 juil. 2022 à 14:34
31 juil. 2022 à 14:34
Bonjour Phoenellion,
Vous avez l'air de maitriser Dbase?
Je suis utilisateur de Dbase pour de la gestion de stock mais je ne trouve pas la table d'enregistrement dans laquelle le stock à été sauvegardé. Savez vous comment faire pour la retrouver ou bien pour en créer une nouvelle que je puisse y accéder.
Merci pour votre aide
Amricain
17 févr. 2012 à 00:14
je vais essayer ça, j'espère avoir la patience, vu le nombre de lignes :)
Je reviens quand j'ai du nouveau.
Merci
17 févr. 2012 à 00:56
j'ai changé z par une variable boolean puis espion si arrêt si vrai
j'espionne les variables numéro de facture dans les deux tableaux ainsi que la variable date.
j'ai lancé la procédure, mais comme il s'arrête à chaque z = vrai, ça reviens à faire du pas à pas.
en tenance F5 appuyé ça fait planter access (oO)
Si je lance la procédure juste en espionnant les variables des numéro de facture et de la date trouvée, Access "ne répond pas" dans qu'il n'a pas fini la boucle... Donc les valeurs espionnées ne sont pas affichées.
17 févr. 2012 à 01:29
Eh bien moral de l'histoire, je ne suis pas fou... il manque tout simplement une grande partie du fichier détail...
Le problème vient peut être du fait que j'importe une fichier DBF dans Excel avant de faire les traitements.
Là où je suis rassuré, c'est que je ne suis pas fou !
17 févr. 2012 à 01:32