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 06/07/2011, 16h33   #1
Nouveau Membre du Club
 
Inscription : mai 2009
Messages : 124
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 124
Points : 26
Points : 26
Par défaut problème avec "erreur 7" mémoire insuffisante

bonjour à tous,

voici mon 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
Private Sub comp_Click()
 
    Dim sql As Recordset
    Dim col As New Collection
    Dim ctl As Control
    Dim str As String
    Dim i As Integer, j As Integer
    DoCmd.OpenForm "Selection des compétences", acDesign
    For Each ctrl In [Form_Selection des compétences].Controls
        MsgBox ctrl.Name
        If ctrl.ControlType = acCheckBox Then
            DeleteControl "Selection des compétences", ctrl.Name
        End If
        If ctrl.ControlType = acLabel Then
            DeleteControl "Selection des compétences", ctrl.Name
        End If
    Next
    i = 0
    Set sql = CurrentDb().OpenRecordset("select * from competence_salle")
    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop
    sql.Close
    Set sql = Nothing
    Set sql = CurrentDb().OpenRecordset("select * from competence_cuisine")
    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop
    sql.Close
    Set sql = Nothing
    Set sql = CurrentDb().OpenRecordset("select * from competence_maintenance")
    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop
    sql.Close
    Set sql = Nothing
    Set sql = CurrentDb().OpenRecordset("select * from competence_reception")
    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop
    sql.Close
    Set sql = Nothing
    Set sql = CurrentDb().OpenRecordset("select * from competence_etage")
    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop
    sql.Close
    Set sql = Nothing
    For i = 1 To col.Count
        Set ctl = Application.CreateControl("Selection des compétences", acCheckBox, , , Control & CStr(i), 500, i * 500)
        Set ctl = Nothing
        Set ctl = Application.CreateControl("Selection des compétences", acLabel, , , col(i), 950, i * 500)
        Set ctl = Nothing
    Next i
    DoCmd.OpenForm "Selection des compétences", acNormal
End Sub
lorsque je clique sur le bouton de mon formulaire et que le code s’exécute il déclenche l'erreur 7 à la ligne

Code :
1
2
 
For Each ctrl In [Form_Selection des compétences].Controls
avez vous une solution pour pallier au problème ?
merci d'avance
rominous41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 17h30   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
J'essayerai le code suivant :

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Private Sub comp_Click()
 
    Dim sql As Recordset
    Dim col As New Collection
    Dim ctl As Control
    Dim str As String
    Dim i As Integer, j As Integer
    dim f as [Form_Selection des compétences]
    DoCmd.OpenForm "Selection des compétences", acDesign
    set f=forms("Selection des compétences")

    For Each ctrl In f.Controls
        MsgBox ctrl.Name

        If ctrl.ControlType = acCheckBox Then
            DeleteControl "Selection des compétences", ctrl.Name
        End If

        If ctrl.ControlType = acLabel Then
            DeleteControl "Selection des compétences", ctrl.Name
        End If

    Next ctrl

    set f=nothing

    i = 0
    Set sql = CurrentDb().OpenRecordset("select * from competence_salle")

    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop

    sql.Close
    Set sql = Nothing
    Set sql = CurrentDb().OpenRecordset("select * from competence_cuisine")

    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop

    sql.Close
    Set sql = Nothing
    Set sql = CurrentDb().OpenRecordset("select * from competence_maintenance")

    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop

    sql.Close
    Set sql = Nothing
    Set sql = CurrentDb().OpenRecordset("select * from competence_reception")
    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop
    sql.Close
    Set sql = Nothing
    Set sql = CurrentDb().OpenRecordset("select * from competence_etage")
    Do While Not sql.EOF
        str = sql!competence
        col.Add str
        sql.MoveNext
    Loop
    sql.Close
    Set sql = Nothing

    For i = 1 To col.Count
        Set ctl = Application.CreateControl("Selection des compétences", acCheckBox, , , Control & CStr(i), 500, i * 500)
        Set ctl = Nothing
        Set ctl = Application.CreateControl("Selection des compétences", acLabel, , , col(i), 950, i * 500)
        Set ctl = Nothing
    Next i

    DoCmd.OpenForm "Selection des compétences", acNormal
End Sub
Je pense que ton problème vient du fait que sur
Code :
For Each ctrl In [Form_Selection des compétences].Controls
Access essaye d'ouvrir une deuxième instance de ton formulaire "Selection des compétences".

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 10h48   #3
Nouveau Membre du Club
 
Inscription : mai 2009
Messages : 124
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 124
Points : 26
Points : 26
Mais pour pouvoir faire utilisé ton astuce il faut qu'il existe déjà un formulaire de type [Form_Selection des compétences] non ?
rominous41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 10h58   #4
Nouveau Membre du Club
 
Inscription : mai 2009
Messages : 124
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 124
Points : 26
Points : 26
lorsque j'utilise ton code il me déclenche une erreur à la ligne

Code :
1
2
 
set f=forms("Selection des compétences")
Avec comme message d'erreur : "Microsoft Access ne trouve pas le formulaire 'Sélection des compétences' auquel il est fait référence dans une expréssion de macro ou un code Visual Basic"

je comprends pas trop l'erreur là non plus
rominous41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 13h49   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Citation:
Envoyé par rominous41 Voir le message
Mais pour pouvoir faire utilisé ton astuce il faut qu'il existe déjà un formulaire de type [Form_Selection des compétences] non ?
Oui mais dans ton code tu as juste à définir une variable de type [Form_Selection des compétences]. L'assignation se fera plus tard. Note qu'on pourrait utiliser une variable de type Form et cela marcherait aussi.

Pour la seconde erreur, vérifie le nom de ton formulaire. Le message d'erreur dit 'Sélection des compétences' mais mon code appelle "Selection des compétences". Personnellement pour éviter ce genre de problèmes je ne mets jamais d'accent dans mes noms d'objet. Je garde mes accents pour le contenu des étiquettes et des titres.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r 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 21h33.


 
 
 
 
Partenaires

Hébergement Web