cs_Charlie
Messages postés110Date d'inscriptionjeudi 9 mai 2002StatutMembreDernière intervention11 mars 2010
-
15 juil. 2002 à 15:54
cs_Charlie
Messages postés110Date d'inscriptionjeudi 9 mai 2002StatutMembreDernière intervention11 mars 2010
-
16 juil. 2002 à 19:12
Allo...
J'utilise une base de donnée qui est ouverte a la fois par Excel et VB. Mon problème est que je ne sais pas comment couper la connexion a ma BD en Excel.
Car VB ouvre ma BD, par la suite c'est Excel pour retourner vers VB. Toutefois, quand j'essai de retourner vers VB il me marque un message d'erreur car la BD est déja ouverte. Mais une fois que j'ai importé mes données dans excel, j'ai pu besoin du lien mais je dois garder Excel ouvert.
Quoi faire a part sauvegarder le fichier et le ré-ouvrir???
skrol29
Messages postés114Date d'inscriptionvendredi 3 mai 2002StatutMembreDernière intervention17 novembre 2014 16 juil. 2002 à 17:47
Si tu donnait un peu + d'info peut être qu'on pourrait t'aider.
Quelle est cette base de donnée qui n'accepte qu'une seule connexion (Access ?).
Quelle méthode est utilisée pour lier Excel et la base ?
Private cmdado As New ADODB.command
Private rsProject As New ADODB.Recordset
Pour lire excel... je fais l'équivalent de cliquer sur: Données, Données Externes, Importer des données... (cette fonction n'est pas valide en Excel97...)
Voici ce qu'il fait...
project.pname=== chemin d'acces de ma BD
Dim Excel97 as Excel.application
With excel97.Application.ActiveWorkbook
.Sheets.Add
.ActiveSheet.Name = "All Class"
With .Sheets("All Class")
skrol29
Messages postés114Date d'inscriptionvendredi 3 mai 2002StatutMembreDernière intervention17 novembre 2014 16 juil. 2002 à 18:19
Ton problème vient du fait que Access n'est pas client/serveur. Il est obligé de gérer le multi-utilisateur par des vérrous de fichier.
Je vois 2 moyens pour te dépatouiler :
1/ modifier la chaîne de connexion Excel pour spécifier une lecture seule. Y'a des paramètres pour ça mais je sais plus lequel 'sorry).
2/ + propre : supprime le code généré par Excel et pilote le transfert de données en pilotant Excel depuis ton prog VB (avec OLE).
Explications : Excel utilise une connexion spéciale qui est ouverte et maintenue tant que le classeur est ouvert. C'est pratique pour un utilisateur neuneu, mais crée des complications pour les programmeurs.
Sous VB, tu peux créer une instance du moteur Excel (voir CreateObject), et piloter Excel avec un nouveau classeur ou un classeur déjà existante, exactement comme le faisait le code sous Excel. C'est le même language. Quand le job est fini, tu détruit l'instance.
cs_Charlie
Messages postés110Date d'inscriptionjeudi 9 mai 2002StatutMembreDernière intervention11 mars 20101 16 juil. 2002 à 18:27
Allo...
CE que tu me parle, avec le OLE... c'est d'ajouter une feuille excel dans une de mes forms...
Si c'est ca, ca cause un petit probleme car mon but est de convertir ma base de donné en fichier Excel pour faire plein de calculs et de stat et de tracer des graphs...
Alors, je ne peux pas vraiment ne pas utiliser excel dans toute sa puissance! C'est qu'il calcul pas mal plus vite que si je le ferais faire par mon programme par ailleurs.
Bye!
Vous n’avez pas trouvé la réponse que vous recherchez ?
skrol29
Messages postés114Date d'inscriptionvendredi 3 mai 2002StatutMembreDernière intervention17 novembre 2014 16 juil. 2002 à 18:51
>CE que tu me parle, avec le OLE... c'est d'ajouter >une feuille excel dans une de mes forms...
Non, non. Pas de l'OLE incorporée. Pas de feuille Excel dans tes forms. Beark caca.
Il s'agit de l'instruction
AppExcel = CreateObject("excel.application")
Tu peux aussi ajouter la Référence 'Microsoft Excel' à ton project, et le code suivant dans ta proc :
Dim AppExcel as Excel.Application
...
Set AppExcel = New Excel.Application 'charge Excel
...
Set AppExcel = Nothing 'décharge Excel
En ajoutant la référence, c'est + facile à programmer car l'environnement de prog te liste des propritétés et méthode d'Excel.
Maintenant, ta variable AppExcel contient un instance de la classe Excel entière. C'est à dire que tu peux faire depuis ton appli tout ce que tu faisait sous Excel, exctement de la même manière.
Par exemple :
AppExcel.ActiveWorkbook.Sheets.Add
Il te reste à remplir les cellules une par une.
Ha oui au fait : les graph existent aussi déjà sous Access. Ce sont les mêmes graph que sous Excel.
C'est peut être + simple.
cs_Charlie
Messages postés110Date d'inscriptionjeudi 9 mai 2002StatutMembreDernière intervention11 mars 20101 16 juil. 2002 à 19:12
C'est exactement de cette facon que je procède...
Au départ, j'ouvrais ma BD avec VB et je copiais les infos dans excel mais je me suis rendu compte que c'était beaucoup plus rapide (1min de moins) d'ouvrir la BD avec Excel meme si j'avais a interchanger des colonnes.
Faire une boucle qui parcours ma BD et qui acceder a mes recordset étais tres lent... 1min environ. Maintenant, j'importe mes données et je fais tout mes traitements en 45sec... Alors, le gain de temps est énorme!