Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 19h10   #1
Invité de passage
 
Jérémy
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Jérémy

Informations forums :
Inscription : février 2011
Messages : 5
Points : 0
Points : 0
Par défaut "Pas de feuille de données active"

Bonjour,
Novice dans Access ou plus exactement VBA d'access, je vous sollicite pour que vous puissiez m'aider à comprendre mon erreur sachant que je ne sais pas du tout d'où elle vient.

Alors je suis en train de créer un formulaire où on peut rentrer des données dedans qui sera ensuite enregistrer dans plusieurs tables et tables intermédiaire.
Pour le moment c'est bon, ça j'ai réussi à le faire.
Ensuite, je voudrais qu'on puisse modifier les données enregistrées dans différentes tables, pour cela, je vais genérer les informations dans un formulaire, sauf que j'ai un message d'erreur qui apparait, c'est celui ci :
Erreur d'éxecution '2484' :
Pas de feuille de données actives


Or, j'ai bien ouvert la feuille de calcul et quand je fais le programme en mode débogage pas à pas, l'erreur n'apparait pas!!!!

Je suis vraiment perdu là, c'est pour cela que je viens vous demander votre aide.
Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub RecupChamps2()
Dim NomC As String, FF2 As Object, NumTrouv As Integer, Rst3 As Object
DoCmd.OpenTable "Personne/Activités_Sportives", acViewNormal, acEdit ' Permet d'activité la table
Set Rst3 = Screen.ActiveDatasheet.Recordset 'Permet d'enregistrer les données
Do
 
NumTrouv = Rst3.Fields("Num_Personnes").Value
If NumTrouv = Numéro_Pers Then Exit Do
Rst3.MoveNext
Loop Until Rst3.EOF
 
   DonMemb2.RemoveAll
  For Each FF2 In Rst3.Fields
    NomC = FF2.Name
    DonMemb2.Add NomC, FF2.Value
    Next
DoCmd.Close , , acSaveYes
 
End Sub
J'espère que vous pouvez m'aider

PS : je suis novice, je pense que mon morceau de code ne respecte pas trop le nomenclature de la programmation, alors je m'excuse d'avance lol
jérémy39700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 21h07   #2
Invité de passage
 
Jérémy
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Jérémy

Informations forums :
Inscription : février 2011
Messages : 5
Points : 0
Points : 0
Alors il semblerait que le problème vienne du faite que j'ai un formulaire d'ouvert et que, quand j'ouvre une table, la table ne peut être activé ou se mettre "en premier plan" à cause du formulaire ouvert.
Le problème c'est qu'avant le code, je ne peux pas fermer ce formulaire car j'ai rentrer des données dedans.

Est ce que vous pouvez m'aider svp?
- J'ai essayer d'ouvrir une deuxième connection ADODB mais ça ne marche pas....
- J'ai essayer de fermer le formulaire, pareil ....

J'attends vos conseil, merci
jérémy39700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 03h56   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Excuses moi, mais j'ai du mal à comprendre ton code.

Pourquoi ouvrir une table ?
Pourquoi ne pas baser ton formulaire sur cette table et modifier les données dans le formulaire ? Cela se répercutera dans ta table.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 11h57   #4
Invité de passage
 
Jérémy
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Jérémy

Informations forums :
Inscription : février 2011
Messages : 5
Points : 0
Points : 0
J'ai résolu mon problème, mais merci quand même.
En faite, mon formulaire rempli deux tables. Pour remplir les deux tables, il y en une où j'utilise ADODB et l'autre où je passe par l'ouverture de la table + un recordset.

Mais pour modifier les informations rentrées, j'ai pas réussi a faire la même chose. J'ai donc voulu ouvrir deux connections ADODB, une pour une table et l'autre pour l'autre table. Sauf que j'ai pas réussi (c'est normal d'ailleur?)

En faite, j'ai réussi à ouvrir une deuxième connection, mais d'une manière peu conventionnel je pense (je passe par l'object Command et ensuite par le recordset)

voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'----------------------------------------RecupChamps2 dans table personne/Activité--
Sub RecupChampsNuméro2()
Dim NomC As String, FF2 As Object, NumTrouv As Integer
Dim Num_Personnes
 
 
Set Connex = CurrentProject.Connection 'Connexion à ADODB
Set Rst4 = New ADODB.Command 'connexion à ADODB
Set Rst4.ActiveConnection = CurrentProject.Connection 'connexion à ADODB
Rst4.CommandType = adCmdTable 'connexion à la table
Rst4.CommandText = "Personne_Activités" 'On donne le nom de la table
Set Res = Rst4.Execute 'On exécute l'objet Command
 
Res.Close 'On ferme Res
Set Res = Nothing 'on vite Res
Set Res = New ADODB.Recordset 'On met le recordset
Res.Open "SELECT * From Personne_Activités ", Connex, adOpenDynamic, adLockOptimistic, adCmdText 'On ouvre en SQL la table
Res.MoveFirst
 
 
Do
NumTrouv = Res.Fields("Num_Personnes").Value ' NumTrouv correspond à la ligne de la table
If NumTrouv = Numéro_Pers Then Exit Do 'si la ligne de la table est égale à Numéro_Pers alors on quitte la boucle
Res.MoveNext 'Sinon on descend la ligne
Loop 'Until Res.EOF 'quitte la boucle si on arrive à la fin de la table
 
DonMemb2.RemoveAll 'on vide le tableau DonMemb2
For Each FF2 In Res.Fields 'Boucle permettant de rentrer les données de la table dans le tableau DonMemb2
NomC = FF2.Name
DonMemb2.Add NomC, FF2.Value
Next
End Sub
jérémy39700 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h03.


 
 
 
 
Partenaires

Hébergement Web