Gestion de base de données .mdb

borisdu59

XLDnaute Nouveau
Lu ter tous.

Je fais appel à vous because je patine.
Le sujet n'est pas très original: une gestion de base de données avec excel.

Le contexte en premier lieu...
En fais j'ai créé deux questionnaires avec excel. Ce sont des questionnaire type qcm et question ouverte.
Ce que je veut faire, c'est extraire les infos du questionnaire, indexer le tout dans une base de données access.
Je traite les infos grâce avec des macro écrite en VB.

En fait j'ai besoin de lire dans la base de donner le numéro du dernier questionnaire pour pouvoir attribuer le numéro du prochain questionnaire de manière entièrement automatique.
Pour ce faire, je charge la base de données dans une feuille. Celle-ci est triée par ordre croissant de numéro de fiche. Je descend tout le tableau, je prend la dernière valeur de numéro de fiche, je l'incrémente de 1.
Cette valeur est entrer dans le questionnaire.
Ce que voudrais faire, c'est indiquer le chemin de la base de données au démarrage, de façon à pour continuer à utiliser le programme en changeant d'emplacement la base de données

Voila le (gros) bout de code que j'ai fait:

Private Sub fiche_client_Click()
'
'
' paramtrage pour entrer info dans BdD
'

' feuille à ouvrir
'
Sheets("BdD_tmp_client").Visible = True
Sheets("BdD_client").Visible = True
Sheets("fiche_client").Visible = True

' Mise en forme BdD_tmp
'
Sheets("BdD_tmp_client").Select
Cells.Select
Application.CutCopyMode = False
Selection.ClearContents
Selection.QueryTable.Delete
Range("A1").Select


' Chargement de la BdD
'
Sheets("BdD_tmp_client").Activate
Range("A1").Activate

With ActiveSheet.QueryTables.add(Connection:=Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=Chemin_BdD_c." _
), Array( _
"mdb;DefaultDir=G:\Service technique clients\Projet document création produit\formulaire\fiches\SQL;DriverId=25;FIL=MS Access;Max" _
), Array("BufferSize=2048;PageTimeout=5;")), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT Table1.Numéro_fiche, Table1.Client, Table1.Nom_rapporteur, Table1.Type_de_machine, Table1.Domaine, Table1.Equipement_démarché, Table1.Mots_clé, Table1.Date_de_création, Table1.WT_RECID" & Chr(13) & "" & Chr(10) & "FROM Ta" _
, "ble1 Table1" & Chr(13) & "" & Chr(10) & "ORDER BY Table1.Numéro_fiche")
.Name = "Lancer la requête à partir de MS Access Database"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With


' Création du numéro de fiche
'
Sheets("BdD_tmp_client").Select
ActiveSheet.Range("A1").Offset(ActiveSheet.Range("A1").CurrentRegion.Rows.Count, 0).Select
ActiveCell.Offset(0, 0) = ActiveCell.Offset(-1, 0).Value + 1
ActiveCell.Offset(0, 0).Activate
Selection.Copy
Sheets("fiche_client").Select
Range("F7").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False


' création date
'
Sheets("BdD_client").Select
Range("A1").Select
Selection.Copy
Sheets("fiche_client").Select
Range("E5").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

' effacement des données temporaire
'
Sheets("BdD_tmp_client").Select
Cells.Select
Application.CutCopyMode = False
Selection.ClearContents
Selection.QueryTable.Delete
Range("A1").Select

' mise en forme du tableau
'
Sheets("BdD_client").Select
Range("B3,L5").Select
Selection.ClearContents

' fermer les feuilles
'
Sheets("Démarage").Visible = False
Sheets("fiche_idée").Visible = False
Sheets("BdD_tmp_client").Visible = False
Sheets("BdD_client").Visible = False
Sheets("BdD_tmp_idée").Visible = False
Sheets("BdD_idée").Visible = False
Sheets("menu").Visible = False

' feuille active
'
Sheets("fiche_client").Activate
Range("N3").Activate

Unload Me

End Sub

Pour créer le chemin j'ai trouver ce bout de code sur internénet

Private Sub Chemin_BdD_idée_Click()

Dim Fenetre As String

Fenetre = Application.GetOpenFilename _
(FileFilter:="Tous les fichiers (*.*),*.* ", _
Title:="Sélectionnez un fichier")

Chemin_BdD_i = Left(Fenetre, InStrRev(Fenetre, "\", -1))

Démarage.Hide

MsgBox ("Le Chemin a bien été modifié")


Démarage.Show

End Sub

Et je remplace le chemin dans la première fonction par Chemin_BdD_i. Et miracle: ... ça marche pas.
La base de données s'appelle fiche_SQL.mdb
Quand je la selectionne avec la fenêtre et que je cherche à charger la base de données dans une feuille, j'ai un message d'erreur qui me dis que la base de donnée Chemin.BdD_i.mdb est introuvable.


PLEASE HELP

Merci de votre attention
 

JNP

XLDnaute Barbatruc
Re : Gestion de base de données .mdb

Bonjour BorisDu59 et bienvenue :cool:,
A mon avis, tu échange entre 2 sub une variable qui n'est pas publique... Essaie de mettre en début d'un module
Code:
Public MonChemin As String
Bon courage :cool:
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof