Connexion entre BDD Access et Excel(VBA) [Résolu/Fermé]

Signaler
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012
-
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
-
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

17 réponses

Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,

Modifiee pour Userform3

https://www.cjoint.com/?BFepLHaSjD3

A+
2
Merci

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

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
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+
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
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+
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
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
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Tout d'abord merci pour la rapidité de votre réponse !

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.
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,

Effectivement c'est du VB.net ;)
Merci beaucoup
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,

Merci j'essaye tout de suite ;)
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

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
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
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+
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,

Et dire que je galère dessus depuis quatre jours :)

A+
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,

' 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)
@+
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Oui pas de soucis ;)
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

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é ;)
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,
Le telechargement a bien marche. Pour CCM il y a https://www.cjoint.com/
Par contre j'aurais voulu avoir votre code de connexion a la base!

A+
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,
Le code de connexion a la base se trouve dans FormAjoutAT apres tout les commentaires avec les Si ! A partir de l'initialisation du formulaire

A+
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,
Je vous joint aussi la base de donnée que j'ai refait pour voir si il n'y avait pas un bug !
http://ww38.toofiles.com/fr/oip/documents/mdb/accidents.html

A+
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

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
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,
Votre base est en ACCESS 2000-2003, pourquoi vouliez vous utiliser un provider d'ACCESS 2010??????????????????????????
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,
Car initialement je l'avait créer en .accdb donc en Access 2010 ! A moins que je n'ai rien compris !
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,
Je ne peux pas l'ouvrir en ACCESS 2003. par contre je l'ouvre en ACCESS 2007.

A+
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

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():

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+
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
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
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

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 :)
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,
Ok, je voudrai savoir ce que vous voulez afficher a la fin des choix, parce que pour le moment (vu le contenu des tables), je ne vois pas!!!!!!!!!
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,
Enfete ce formulaire sert a Ajouter dans la table AT toutes plein d'information.
AT (num_at,date_at,heure_at,circonstances_at,nom_at,prenom_at,RT_INT,nom_employeur,num_centre,num_up,num_uep,num_equipe,num_manager,num_type,reserves,num_nature,num_siege,actions)
Comme sur la base de données que je vous avez envoyé,
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,
C'est pour enregistrer un nouvel evenement en s'aidant d'infos pres saisies(Comboboxs)!!

Question: pourquoi n'avez vous pas utilisez ACCESS plutot que EXCEL??????
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,
Oui voilà c'est ça ! J'ai beaucoup d'utilisateurs et je ne veux pas qu'il y ai beaucoup d'erreur!

J'ai essayer sous ACCESS mais je me suis ravisé car après avoir entré tout ce beaux monde dans la Bdd il faudra que jen fasse des tableaux, graphiques... etc sur beaucoup de feuille donc j'ai pensé que c'était mieux car après je transfert tout sur le tableur ...
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,
Ok, ca roule
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
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
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

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
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

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+
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,

Pour exécuté la requete il y a un code ?

exemple:
Private Sub CommandButton1_Click()  
  SQL = "INSERT INTO AT (num_Centre) Values ('" & Nnum_centre & "')"  
  conn.Execute SQL  
  conn.Close  
End Sub  

ou

<code>Private Sub CommandButton1_Click()
  'Init Combo_Centre
  SQL = "INSERT INTO AT (num_Centre) Values ('" & Nnum_centre & "')"
  rs.Open SQL, conn, 3, 3
End Sub


pour rester dans le meme style de programmation

</code>
Pour récupéréé les num_centre, num_up etc.. Ils sont dans les variables sauvegarder dans le module ? Numero_centre, Numero_UP etc ... ?

Oui.
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Bonjour,

Pour les DateTimePicker il faut les mettres sous quelle format dans les insert into ?
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Bonjour,
passez par une variable ex:
MaDate=Format(Me.DTPicker1.Value, "dd/mm/yyyy")
Messages postés
111
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
5 juillet 2012

Re,

Merci beaucou je teste tout de suite ;)

J'ai placé des optionBouton (radio) dans des frames pour RT_INT et pour Reserves
Comment savoir ce qui est cocher ?

A+
Messages postés
15370
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
13 octobre 2020
1 375
Re,

ex:
Private Sub CheckBox1_Click()
X = CheckBox1.Value
End Sub

X=vrai si cocher
X=faux si pas cocher