Connexion entre BDD Access et Excel(VBA)
Résolu
Bull_0125
Messages postés
111
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans le cadre de mon BTS SIO où je suis en 1re année je dois créer une base de données et des formulaires sous excel pour parcourir la base de données et à termes créer des graphiques etc.. Et maintenant que j'ai créé mes différents USERFORM je bute sur la connection entre mon code VB dans l'userform et ma base de données ACCESS. D'habitude je travaille sous visual studio en VB6 et là le code change ça me perturbe...
J'aimerais savoir si le code de connection devra etre dans toutes les procédures "Private Sub[...]End Sub" car je vais faire le liens entre mon code et Excel pour beaucoup de choses... appuyer sur diff boutons, liste déroulantes, redirection.. etc
J'ai eu beau chercher sur le net, je n'ai pas trouvé de solution.
Si une âme charitable en a une, je luis serais éternellement reconnaissant.
Par avance,
Merci.
Adresse supprimée par Modération CCM
Dans le cadre de mon BTS SIO où je suis en 1re année je dois créer une base de données et des formulaires sous excel pour parcourir la base de données et à termes créer des graphiques etc.. Et maintenant que j'ai créé mes différents USERFORM je bute sur la connection entre mon code VB dans l'userform et ma base de données ACCESS. D'habitude je travaille sous visual studio en VB6 et là le code change ça me perturbe...
J'aimerais savoir si le code de connection devra etre dans toutes les procédures "Private Sub[...]End Sub" car je vais faire le liens entre mon code et Excel pour beaucoup de choses... appuyer sur diff boutons, liste déroulantes, redirection.. etc
J'ai eu beau chercher sur le net, je n'ai pas trouvé de solution.
Si une âme charitable en a une, je luis serais éternellement reconnaissant.
Par avance,
Merci.
Adresse supprimée par Modération CCM
A voir également:
- Vba excel access
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
17 réponses
Bonjour,
Quelle type de connexion faites vous: ADO,DAO.......
Il y a quelques differences de definition de variable entre VBA et VB6. L'utilisation reste la meme.
A+
Quelle type de connexion faites vous: ADO,DAO.......
Il y a quelques differences de definition de variable entre VBA et VB6. L'utilisation reste la meme.
A+
Re,
Ce n'est pas du VB6, mais du VB.net et la il y a un peu plus de differences avec du VBA. je vous cherche un exemple dans mes archives.
A+
Ce n'est pas du VB6, mais du VB.net et la il y a un peu plus de differences avec du VBA. je vous cherche un exemple dans mes archives.
A+
Re,
un exemple simple de connexion ADO
UserForm3: un exemple de connexion DAO (ne marche pas avec la base fourni, changez le chemin et le nom de table,etc...)
https://www.cjoint.com/?BFeluZurenz
Bon courage
un exemple simple de connexion ADO
UserForm3: un exemple de connexion DAO (ne marche pas avec la base fourni, changez le chemin et le nom de table,etc...)
https://www.cjoint.com/?BFeluZurenz
Bon courage
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tout d'abord merci pour la rapidité de votre réponse !
Habituellement je procède comme cela :
Donc je pense rester sur une connexion ADO.net
Encore Merci de prendre de votre temps pour moi :)
Cordialement
Lilian.
Habituellement je procède comme cela :
Imports.System.Data.OleDb Dim cnn as new OledbConnection 'Connexion a une bdd Dim cmd as new oledbCommand 'Faire des requêtes sur une bdd Dim drr as oledbdatareader 'Récupéré le jeu d'enregistrement de la requête Dim existeenreg as boolean 'Pour tester si il y a un enregistrement cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="MA_BDD" cnn.open() cmd.commandText="Ma requete SQL" cmd.Connection.cnn 'Pour situer ma Bdd drr = cmd.ExecuteReader() 'Executer la requête et récupéré en mémoire existeenreg = drr.read while existeenreg = TRUE blablabla.. End While drr.close() cnn.close()
Donc je pense rester sur une connexion ADO.net
Encore Merci de prendre de votre temps pour moi :)
Cordialement
Lilian.
Re,
Tout cela est très bien expliqué mais je ne comprend pas plusieurs choses... Et j'ai quelques questions!
Première Question : J'utilise Microsoft Access 2010 donc le provider reste : Microsoft.ACE.OLEDB.12.0 ou il a évolué ?
Deuxième question : Que signifie le TBon_RST.Fields(4) dans le userform1
Pour ce qui est des difficultés de compréhension c'est dans l'userform3 car je ne comprend pas le liens vers la fiche méthode et je ne comprend pas dans le DO ce que représente le feuille.range( "A" & i )=enregis("type_bon") Je me doute que A représente la colonne et i le nombre passage dans la boucle.. Mais vu que je ne peux pas visualiser ce que fait ce userform3 j'ai un peu de mal a comprendre cela ...
Merci d'avance
@+
Lilian
Tout cela est très bien expliqué mais je ne comprend pas plusieurs choses... Et j'ai quelques questions!
Première Question : J'utilise Microsoft Access 2010 donc le provider reste : Microsoft.ACE.OLEDB.12.0 ou il a évolué ?
Deuxième question : Que signifie le TBon_RST.Fields(4) dans le userform1
Pour ce qui est des difficultés de compréhension c'est dans l'userform3 car je ne comprend pas le liens vers la fiche méthode et je ne comprend pas dans le DO ce que représente le feuille.range( "A" & i )=enregis("type_bon") Je me doute que A représente la colonne et i le nombre passage dans la boucle.. Mais vu que je ne peux pas visualiser ce que fait ce userform3 j'ai un peu de mal a comprendre cela ...
Merci d'avance
@+
Lilian
Re,
Première Question : J'utilise Microsoft Access 2010 donc le provider reste : Microsoft.ACE.OLEDB.12.0 ou il a évolué ?
Microsoft.ACE.OLEDB.14.0 pour 2010
TBon_RST.Fields(4)
TBon_RST est l'objet recordset et .Fields(4) est le contenu du 5eme champ de la table (Redacteur)
x = TBon_RST.Fields(4)
ou
y = TBon_RST.Fields("Redacteur")
ou
Z = TBon_RST.Fields![Redacteur]
C'est la meme chose.
Pour l'exemple en dao je regarde pour que cela marche avec la base Bon....
A+
Première Question : J'utilise Microsoft Access 2010 donc le provider reste : Microsoft.ACE.OLEDB.12.0 ou il a évolué ?
Microsoft.ACE.OLEDB.14.0 pour 2010
TBon_RST.Fields(4)
TBon_RST est l'objet recordset et .Fields(4) est le contenu du 5eme champ de la table (Redacteur)
x = TBon_RST.Fields(4)
ou
y = TBon_RST.Fields("Redacteur")
ou
Z = TBon_RST.Fields![Redacteur]
C'est la meme chose.
Pour l'exemple en dao je regarde pour que cela marche avec la base Bon....
A+
Re,
Lorsque je tape cela un message d'erreur apparaît...
"Erreur d'éxécution '3706': Provider Cannot be found. It may not be properly installed"
De même que si je met "Microsoft.ACE.OLEDB.12.0"
Si je met "Microsoft.jet.OLEDB.4.0" un autre message d'erreur apparaît...
"Erreur d'éxécution '-2147468259(80004005)':
Format de base de données('C:\TEST\AccidentsAT.accdb') non reconnu
Help me (encore une fois)
@+
' Initialisation du Formulaire Private Sub UserForm_Initialize() RdoNon = True RdoRT = True Set Mabase = CreateObject("ADODB.Connection") Set TBon_RST = CreateObject("ADODB.Recordset") 'Définition du Provider (outils de développement de bdd) Mabase.Provider = "Microsoft.ACE.OLEDB.14.0" Mabase.Open "data source =C:\TEST\AccidentsAT.accdb" Me.BtnValider.Enabled = True Me.BtnQuitt.Enabled = True Me.BtnValidAjoutActions.Enabled = True Me.BtnValidAjoutAnalyses.Enabled = True
Lorsque je tape cela un message d'erreur apparaît...
"Erreur d'éxécution '3706': Provider Cannot be found. It may not be properly installed"
De même que si je met "Microsoft.ACE.OLEDB.12.0"
Si je met "Microsoft.jet.OLEDB.4.0" un autre message d'erreur apparaît...
"Erreur d'éxécution '-2147468259(80004005)':
Format de base de données('C:\TEST\AccidentsAT.accdb') non reconnu
Help me (encore une fois)
@+
Bonjour, Bonjour,
Mauvaise nouvelle dès le matin.. Ca ne marche pas j'ai toujours pas ! J'ai essayer avec Access:
- Ouvert
- Après fermeture
- Avec ma base ouverte
Lorsque hier j'ai testé avec votre base de donnée en .mdb tout fonctionné parfaitement d'ailleurs pour son chemin de Data Source je les ai mis au même endroit ..
Je viens d'essayer de modifier l'extension .accdb en .mdb car je me suis dit si l'autre fichier marche après tout .. Mais sa aurait été trop simple :D ça ne marches pas non plus
Mauvaise nouvelle dès le matin.. Ca ne marche pas j'ai toujours pas ! J'ai essayer avec Access:
- Ouvert
- Après fermeture
- Avec ma base ouverte
Lorsque hier j'ai testé avec votre base de donnée en .mdb tout fonctionné parfaitement d'ailleurs pour son chemin de Data Source je les ai mis au même endroit ..
Je viens d'essayer de modifier l'extension .accdb en .mdb car je me suis dit si l'autre fichier marche après tout .. Mais sa aurait été trop simple :D ça ne marches pas non plus
Re,
Alors Voilà le Classeur
http://ww38.toofiles.com/fr/oip/documents/xlsm/accidentsat2.html
Dites moi si le téléchargement marche car je ne suis pas habitué ;)
Alors Voilà le Classeur
http://ww38.toofiles.com/fr/oip/documents/xlsm/accidentsat2.html
Dites moi si le téléchargement marche car je ne suis pas habitué ;)
Re,
Je viens de passé par un énorme systeme D :) ! Je m'explique...
Je me suis dit que vu que votre base de donnée marché mais pas la mienne donc j'ai fait une copie de votre fichier et à l'intérieur j'ai importer ma base de données, j'ai renommé le fichier et enregistrer sous Access 2003 .mdb donc dans le code j'ai laissé le "Microsoft.jet.OLEDB.4.0" avec le lien vers ma base ! Et là SURPRISE :D ça à l'air de marché ... :)
Je vous tient au courant
Merci pour tout
Je viens de passé par un énorme systeme D :) ! Je m'explique...
Je me suis dit que vu que votre base de donnée marché mais pas la mienne donc j'ai fait une copie de votre fichier et à l'intérieur j'ai importer ma base de données, j'ai renommé le fichier et enregistrer sous Access 2003 .mdb donc dans le code j'ai laissé le "Microsoft.jet.OLEDB.4.0" avec le lien vers ma base ! Et là SURPRISE :D ça à l'air de marché ... :)
Je vous tient au courant
Merci pour tout
Re,
J'aurai encore deux questions si sa vous interesse :) (J'espère d'ailleurs):
Première question:
A quoi sert nom = "R"
Ensuite Deuxième question :
Lorsque j'appuie sur un bouton je voudrai que ça effectue ma requête SQL j'ai tapé ceci dans ma procédure du bouton_click():
Mais un message d'erreur s'affiche : Erreur d'éxécution '424' : Objet Requis
Help me je patoge dans la semoule
A+
J'aurai encore deux questions si sa vous interesse :) (J'espère d'ailleurs):
Première question:
A quoi sert nom = "R"
Ensuite Deuxième question :
Lorsque j'appuie sur un bouton je voudrai que ça effectue ma requête SQL j'ai tapé ceci dans ma procédure du bouton_click():
TBon_RST.Open "Select nom_centre from Centre", Mabase existeenreg = TBon_RST.EOF While existeenreg = False x = TBon_RST.Fields("nom_centre") CboCentre.AddItem "x" TBon_RST.movement Wend
Mais un message d'erreur s'affiche : Erreur d'éxécution '424' : Objet Requis
Help me je patoge dans la semoule
A+
Re,
Première question:
A quoi sert nom = "R"
'ouverture avec requete et variable
nom = "R"
TBon_RST.Open "select * from BdD_Bon a where a.Redacteur='" & nom & "'", Mabase
Je recupere les enregistrements ayant "R" dans le champ Redacteur. Cette variable nom peut etre ecrite par programme.
Ensuite Deuxième question :
TBon_RST.movement----------> TBon_RST.MoveNext
Code modifie
TBon_RST.Open "Select nom_centre from Centre", Mabase
While TBon_RST.EOF = False
CboCentre.AddItem TBon_RST.Fields("nom_centre")
TBon_RST.MoveNext
Wend
Bon courage
Première question:
A quoi sert nom = "R"
'ouverture avec requete et variable
nom = "R"
TBon_RST.Open "select * from BdD_Bon a where a.Redacteur='" & nom & "'", Mabase
Je recupere les enregistrements ayant "R" dans le champ Redacteur. Cette variable nom peut etre ecrite par programme.
Ensuite Deuxième question :
TBon_RST.movement----------> TBon_RST.MoveNext
Code modifie
TBon_RST.Open "Select nom_centre from Centre", Mabase
While TBon_RST.EOF = False
CboCentre.AddItem TBon_RST.Fields("nom_centre")
TBon_RST.MoveNext
Wend
Bon courage
Bonjour,
Encore une fois merci ! Je ne sais pas ce que je ferai sans vous !
Comme je l'ai dit dans l'autre sujet je veux faire des listes déroulantes restreinte pour évité les erreurs des utilisateurs .. Je pense procédé en faisant des If mais bon j'ai du boulot :)
Encore une fois merci ! Je ne sais pas ce que je ferai sans vous !
Comme je l'ai dit dans l'autre sujet je veux faire des listes déroulantes restreinte pour évité les erreurs des utilisateurs .. Je pense procédé en faisant des If mais bon j'ai du boulot :)
Re,
Enfete l'idée c'est que l'utilisateur choisi un Centre dans la liste déroulante, puis par rapport au centre choisi, il choisi un sous centre, puis par rapport au sous centre il choisi son sous sous centre . Pour réaliser cela j'ai créer 3 tables distinctes
Centre (num_Centre,nom_centre)
Sous centre(num_sscentre,nomsous_centre,num_centre)
Sous sous Centre (numsous_sscentre,nomsous_sscentre,num_sscentre)
Elle sont donc relié entre elle..
Je pensais faire des If ..
Si dans le cbobox il choisit un centre alors
on voit que son sous centre dans l'autre cbobox
Si il choisi un sous centre alors
il peut choisir qu'un sous-sous centre!
Je sais pas si vous m'avez compris ...
A+
Enfete l'idée c'est que l'utilisateur choisi un Centre dans la liste déroulante, puis par rapport au centre choisi, il choisi un sous centre, puis par rapport au sous centre il choisi son sous sous centre . Pour réaliser cela j'ai créer 3 tables distinctes
Centre (num_Centre,nom_centre)
Sous centre(num_sscentre,nomsous_centre,num_centre)
Sous sous Centre (numsous_sscentre,nomsous_sscentre,num_sscentre)
Elle sont donc relié entre elle..
Je pensais faire des If ..
Si dans le cbobox il choisit un centre alors
on voit que son sous centre dans l'autre cbobox
Si il choisi un sous centre alors
il peut choisir qu'un sous-sous centre!
Je sais pas si vous m'avez compris ...
A+
Re,
UF4
https://www.cjoint.com/?BFgkjo8j7Fp
Vous avez une autre facon de connecter une base access assez intéressante que j'utilise de temps en temps.
Bon courage
UF4
https://www.cjoint.com/?BFgkjo8j7Fp
Vous avez une autre facon de connecter une base access assez intéressante que j'utilise de temps en temps.
Bon courage
Re,
Un avant gout de ce qui vous attend.....
https://www.cjoint.com/?BFgug5Xlvzy
Je continuerai demain (pour le nom manager, il faut cogiter un peu).
Les equipes sont definies a quel endroit?
Les champs RT_INT, reserves et actions (case a cocher) servent a quoi?
A demain
Un avant gout de ce qui vous attend.....
https://www.cjoint.com/?BFgug5Xlvzy
Je continuerai demain (pour le nom manager, il faut cogiter un peu).
Les equipes sont definies a quel endroit?
Les champs RT_INT, reserves et actions (case a cocher) servent a quoi?
A demain
Bonjour, Bonjour :)
Le nom Manager est une liste déroulante de la table MANAGERS(num_manager,nom_manager) je l'ai déja créer ;)
Le champ RT_INT sert a savoir si c'est un Intérim, Si c'est un Intérim il sera cocher!
Le champ reserves sert à savoir si son accidents est avéré ou non, il y a un droit de reserves pour dire par exemple qu'il la fait exprès.. etc
Le champ Actions sert a dire si oui ou non il y a des actions pour cet accident car pour chaque accident il y a des actions qui viendront après pour ne plus qu'il y est cet accident ;)
A bientôt
Le nom Manager est une liste déroulante de la table MANAGERS(num_manager,nom_manager) je l'ai déja créer ;)
Le champ RT_INT sert a savoir si c'est un Intérim, Si c'est un Intérim il sera cocher!
Le champ reserves sert à savoir si son accidents est avéré ou non, il y a un droit de reserves pour dire par exemple qu'il la fait exprès.. etc
Le champ Actions sert a dire si oui ou non il y a des actions pour cet accident car pour chaque accident il y a des actions qui viendront après pour ne plus qu'il y est cet accident ;)
A bientôt
Re,
Merci beaucoup pour toutes ces belles lignes :) Tout fonctionne comme je l'avait souhaitées, il ne me reste qu'a créer la procédure du bouton Valider :)
A+
Merci beaucoup pour toutes ces belles lignes :) Tout fonctionne comme je l'avait souhaitées, il ne me reste qu'a créer la procédure du bouton Valider :)
A+
Re,
Comment avez vous liez les managers a UEP, puisqu'il faut passer par deux tables?
Avec une table MANAGER_UEP (num_manager, num_uep)
num_manager est clé primaire
num_uep est clé primaire
Elle fonctionne en duo et sont reliées a leurs table respectivent
Tout est préparé pour les textbox et les radioboutons...
J'ai penser faire
Mais ça ne marche pas ... LOL (comme d'habitude)
A+
Comment avez vous liez les managers a UEP, puisqu'il faut passer par deux tables?
Avec une table MANAGER_UEP (num_manager, num_uep)
num_manager est clé primaire
num_uep est clé primaire
Elle fonctionne en duo et sont reliées a leurs table respectivent
Tout est préparé pour les textbox et les radioboutons...
J'ai penser faire
SQL = "Insert into AT ('num_centre,...') values ('Numero_Centre...')" rs.Open SQL, conn, 3, 3
Mais ça ne marche pas ... LOL (comme d'habitude)
A+
Re,
exemple: sql
SQL= "INSERT INTO AT ('" & Champs(1) & "','" & Champs(2) & _
"','" & Champs(3) & "','" & Champs(4) & _
"','" & Champs(5) & "','" & Champs(6) & _
"','" & Champs(7) & "','" & Champs(8) & _
"','" & Champs(9) & "','" & Champs(10) & _
"','" & Champs(11) & "','" & Champs(12) & _
"','" & Champs(13) & "','" & Champs(14) & _
"') Values ('" & Value1(1) & "','" & Value1(2) & "','" & _
Value1(3) & "','" & Value1(4) & "','" & _
Value1(5) & "','" & Value1(6) & "','" & _
Value1(7) & "','" & Value1(8) & "','" & _
Value1(9) & "','" & Value1(10) & "','" & _
Value1(11) & "','" & Value1(12) & "','" & _
Value1(13) & "','" & Value1(14) & "')"
exemple pur access:
Bon courage
exemple: sql
SQL= "INSERT INTO AT ('" & Champs(1) & "','" & Champs(2) & _
"','" & Champs(3) & "','" & Champs(4) & _
"','" & Champs(5) & "','" & Champs(6) & _
"','" & Champs(7) & "','" & Champs(8) & _
"','" & Champs(9) & "','" & Champs(10) & _
"','" & Champs(11) & "','" & Champs(12) & _
"','" & Champs(13) & "','" & Champs(14) & _
"') Values ('" & Value1(1) & "','" & Value1(2) & "','" & _
Value1(3) & "','" & Value1(4) & "','" & _
Value1(5) & "','" & Value1(6) & "','" & _
Value1(7) & "','" & Value1(8) & "','" & _
Value1(9) & "','" & Value1(10) & "','" & _
Value1(11) & "','" & Value1(12) & "','" & _
Value1(13) & "','" & Value1(14) & "')"
exemple pur access:
With rstCommConfigs .AddNew !JDate = TxtDateIntText !JJDate = Date !JHeure = Time !Presse = TxtBoxLigneText & TxtBoxPresseText !Prev_Dep = "D" !DTV = "D" !Intervenant = TxtBoxIntervenantText !DTVE = TextBox6Text !DTVC = TextBox16Text !Ligne = Left$(PresseSelect, 1) .Update .Close End With
Bon courage