Besoin d'aide. sauvegarder une table dans un fichier Excel (le plus simplement p [Résolu]

Signaler
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
-
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
-
Bonjours

J'ai un problème pour passer du code VBA à VB6.
Je m'explique.

J'ai une Base de données sous Access. Mes formulaires (mon code) je l'ai écrit en VB6.
Dans ma base de données, j'ai une table journal. Sous VB, j'arrive à faire afficher le contenu et imprimer. Le journal est supprimer automatiquement chaque 2 mois si pas d'erreurs dans la société.
Il m'a été demandé de codé la sauvegarde du journal dans une feuille Excel avant la suppression. J'ai pu le faire sous VBA (Access). Mais, ce n'ai pas pratique de d'ouvrir Access à chaque fois qu'on veut sauvegarder le journal. Et surtout que ce n'est que pour cela.
Voici le code VBA que j'utilise:

Private Sub CmdSave_Click()
DoCmd.OpenTable "journal"
DoCmd.RunCommand acCmdOutputToExcel
DoCmd.Close acTable, "journal"

End Sub

Y aurai t'il un moyen aussi simple pour l'écrire en VB6. (La table étant très lourde, passer par une boucle fait planter le système.)

Autre chose, (sans vouloir abuser) je sais qu'on peu ouvrir un état dans Access à partir de VB, sans ouvrir la base. J'ai vu ce code sur le site il ya un bon Bou de temps, mais ne le retrouve plus. Si quelqu'un a le code, ou une idée du code..!


Merci.

13 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
salut,
pour convertir, aussi simple, non. mais cette source peut peut-être t'aider :
http://www.vbfrance.com/code.aspx?id=32114

et pour le bout de code état, peut-être celui-ci ?


'http://www.vbfrance.com/code.aspx?id=308
Public Sub Imprimer(NomDoc As String, Optional Preview As Boolean = False)
Dim AppAccess As Access.Application
Dim strDB As String
Dim strReportName As String
On Error GoTo gerr
' Position de la base de donnée
strDB = "C:\GiteVB\gite.mdb"
Set AppAccess = New Access.Application
' Open database in Microsoft Access.
AppAccess.OpenCurrentDatabase strDB

If Preview Then
AppAccess.Visible = True
AppAccess.DoCmd.OpenReport NomDoc, acViewPreview, , "Id_Rens =" & GvarIdDemande
Else
AppAccess.DoCmd.OpenReport NomDoc, , , "Id_Rens =" & GvarIdDemande
MouseWait False
MsgBox "Clickez OK quand l'impression de " & NomDoc & _
" sera terminée"
AppAccess.CloseCurrentDatabase
End If

Set AppAccess = Nothing
Exit Sub
gerr:
Select Case Err.Number
Case 0
Case 2501
Resume Next
Case Else
MsgBox "Erreur non gérée " & vbCrLf & Err.Number & " " & Err.Description
End Select
End Sub


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>

++
PCPT [AFCK]
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
re,
pour ce cas de figure, il faut un vrai chemin.
tu lances vraiment l'application access.
le chemin ".\...." n'existe pas.
copie le chemin correspondant au chemin de ton appli et je te le convertirai
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
si ton appli est dans le dossier "logicièle"
strDB = App.Path & "\Base de donnée\Introx Manut.mdb"
++
PCPT [AFCK]
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
que la base soit dans "Logicièle" ou dans "INTROX MANUT", le chemin indiqué plus haut en gras sera bon.
en en public, oui, tu pourras.
par contre, tu devras l'initialiser dans ton Sub principal. pas possible en constante (puisque App.Path).
++
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
désolé, moi pas comprendre....
pourquoi veux-tu initialiser plusieurs fois?!


si j'ai bien compris, tu as plusieurs Form.
disons Form_Main pour la première. plusieurs d'entre-elles ont besoin de ce chemin.
tu crées un module (Mod_Main par exemple) dans lequel tu déclares alors ta variable et tu lances ta form principale....
puis dans ton projet ... menu Projet > propriétés de projet_machin
et dans "objet de démarrage" tu choisies Sub Main.

voici le contenu du module




' --------
' Mod_Main
' --------
'
Option Explicit
'
Public strDB As String
'
'
' *- LANCEUR DE L'APPLI / MODULE DE DEMARRAGE -*
Public Sub Main()
strDB = App.Path & "\Base de donnée\Introx Manut.mdb"
Form_Main.Show
End Sub


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


et pour ensuite utiliser strDB, bah il est déjà initialisé.
tu peux (si envie) l'utiliser en ajoutant Mod_Main.strDB mais c'est facultatif^^

voilà ;)

ps : pouahaa, mieux vaut ne pas compter
++
PCPT [AFCK]
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
1
Re salut Pcpt.

Le lien vers la source 32114 est plus que ce dont j'avais besoin. J'ai pris la partie qui résout mon problème, et le reste du code, je l'étudie. (Bonne source. Merci)

Pour ma seconde question, c'est bien la source que j'avais vu. Elle fonctionne.

Toujours satisfait avec toi :) (en tout cas jusqu'à présent) :)

Allé, Merci pour l'aide, et bonne programmation
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
1
la, je j'abuse, mais ne comprend pas le problème.

' Position de la base de donnée
strDB = "C:\GiteVB\gite.mdb" '''''''''ICI PROBLEME
Set AppAccess = New Access.Application
' Open database in Microsoft Access.
AppAccess.OpenCurrentDatabase strDB


lorsque je met le chemin complet de la base, tout marche.:
C:\WINDOWS\Buisness\GLOBAL MANUTENTION\Gestion Débarquement Marchandise\htmlTour\Logicièle\Base de donnée\Introx Manut.mdb

c'est long je sait. en plus, chez le client, ce n'est pas le chemin.
quand je fait cela:
.\Base de donnée\Introx Manut.mdb

j'ai une ereur qui dit que le fichier n'a pa pu etre ouvert, car il est manquant, ou ouvert par un autre utilateur.

je ne sais pas si dans ce cas on ne peut pas utiliser ce. pourant, quand j'utilise cette même ligne de code pour ma connexion ADO, ca passe.

tu me dira peut être de déclarer le chemin dans un module en public, et d'utiliser ainsi que la variable, mais ca passe pas non plus.

ya t'il une manière spécial pour la déclaration des chemins???
et dans mon cas, ai je fais une erreur.

Merci encore
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
1
OK, Compris.
pour: "copie le chemin correspondant au chemin de ton appli et je te le convertirai " je voi pas ce que tu ve dire. mais, voici le chemins.

chez moi:

C:\WINDOWS\Buisness\GLOBAL MANUTENTION\Gestion Débarquement Marchandise\htmlTour\Logicièle\Base de donnée\Introx Manut.mdb

Chez le client:

C:\Program Files\INTROX MANUT\Base de donnée\Introx Manut.mdb

Merci
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
1
J'avais pas rafraichit.
je vais voir cela. j'avais pas utilisé, parce que je pensais que ca équivaut au .\
apparemment pas.

Mais, dans ce cas, si je déclare StrDB comme variable public, il me suffit d'ecrire StrDB dans les autres commande, et ca passe!! ?

je pose la question parce que je ne suis pas a la maison, et n'ai pas VB sous la main. si non, avec le chemin complet ca passait pas par déclaration.
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
1
je rentrerai a la maison un jour ou l'autre!! ma question n'a pas a être poser. je vais, et j'essai. si ca passe pas, je demande.

Merci pour l'aide.

Bonne soirée
et bonne programation.
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
1
je voi maintenant la différence avec le .\
dans ce cas, je suis obliger de l'initialiser pour chaque comande. mais pas grave, du moment que sa marche.

COmbien de fois que sa fais que je te remercie?? :)

Merci.
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
1
OUI, c'est cela que je comptais faire
Mais c'est quand tu m'as dit:
"par contre, tu devras l'initialiser dans ton Sub principal. pas possible en constante (puisque App.Path)."

j'avais mal compris. c'est pourtant claire.

Heureusement que tu es la. Tu mâches presque le code pour me le donner. Avec ma fatigue, j'aurais tout mélangé.

La je pense que le tout est OK. en tout cas pour le moment. J'essaierai de ne plus ouvrir ce poste :)

Bonne programmation
Et si comme ici, l'heur du dinée, bonne appétit
A+
Messages postés
294
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
9 mars 2006
1
bon voila, je t'ai mis tout plein de verts, c'est pas parceque j'aime la coleur, mais juste que tes réponses pourais aider d'autre. (certains ne lisent que les reponses acceptés)

Moi je viens de tester, et c'est propre.

Pour ta dernière explication, je viens de la relire. elle est bien expliquée, facile à comprendre (et c'est tout toi.) mais, je ne suis certe pas expert, mais pas si débutant lol.

Merci pour tout.

On se verra peut être sur un autre poste.

A+