IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

problème avec "erreur 7" mémoire insuffisante


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 129
    Points : 62
    Points
    62
    Par défaut problème avec "erreur 7" mémoire insuffisante
    bonjour à tous,

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    For Each ctrl In [Form_Selection des compétences].Controls
    avez vous une solution pour pallier au problème ?
    merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    J'essayerai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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+

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 129
    Points : 62
    Points
    62
    Par défaut
    Mais pour pouvoir faire utilisé ton astuce il faut qu'il existe déjà un formulaire de type [Form_Selection des compétences] non ?

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 129
    Points : 62
    Points
    62
    Par défaut
    lorsque j'utilise ton code il me déclenche une erreur à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    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+

Discussions similaires

  1. [vba] Problème avec MoveNext - Erreur de collection ?
    Par ancel17 dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/05/2007, 17h17
  2. Problème avec une erreur d'exception inconnue
    Par yoyo72 dans le forum Delphi
    Réponses: 5
    Dernier message: 09/08/2006, 11h52
  3. Problème avec l'erreur 3464 sur access
    Par somalien10 dans le forum Access
    Réponses: 10
    Dernier message: 16/05/2006, 09h30
  4. Problème avec sizeof(...) : erreur de taille
    Par Invité dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 06/05/2006, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo