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 :

Afficher le contenu d'une table "erreur d'exécution 9, l'indice n'appartient pas à la selection" [AC-2013]


Sujet :

VBA Access

  1. #1
    Invité de passage
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Afficher le contenu d'une table "erreur d'exécution 9, l'indice n'appartient pas à la selection"
    Bonjour à toutes et à tous !

    Je souhaite que ce qui est contenu dans une des cellules de ma table soit répercuté dans un formulaire qui synthétise un nombre de visite médicale,

    Sauf que j'ai le message "erreur d'éxecution 9" qui s'affiche....

    Je suppose qu'il faut que j'agrandisse la zone de recherche du tableau mais comment faire ?

    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
    Option Compare Database
    Dim montab As Variant
     
     
    Private Sub Commande3_Click()
     
      Set oDb = CurrentDb
     
      Set Orst = oDb.OpenRecordset("Visite medicale", dbOpenTable)
     
      LngNbEnregistrement = Orst.RecordCount
      'Libération des objets
     
      Orst.Close
      oDb.Close
     
      Set Orst = Nothing
      Set oDb = Nothing
     
      Set Orst = Nothing
      Set oDb = Nothing
     
      Set oDb = CurrentDb
      Set Orst = oDb.OpenRecordset("Visite medicale", dbOpenForwardOnly, dbReadOnly)
     
      'Effectif
      ReDim montab(LngNbEnregistrement, 44)
      For i = 1 To LngNbEnregistrement
         For Y = 1 To 43
           If IsNull(Orst.Fields(Y - 1)) = False Then
             montab(i, Y) = Orst.Fields(Y - 1)
           End If
         Next Y
         Orst.MoveNext
      Next i
     
      Orst.Close
      oDb.Close
     
      Set Orst = Nothing
      Set oDb = Nothing
     
      Dim visimedSMR As Double
     
      For i = 1 To UBound(montab)
         If montab(i, 7) = "SMR" Then
           visimedSMR = visimedSMR + 1
        End If
     
        If montab(i, 7) = "Non SMR" Then
          visinonSMR = visinonSMR + 1
        End If
     
      Next i
      Me.PnonSMR.Value = visinonSMR
      Me.PSRM.Value = visimedSMR
     
    End Sub
    Voilà, j'aurais souhaité pouvoir rajouter une colonne de la table "visite médicale".

    Merci beaucoup !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 332
    Points : 23 787
    Points
    23 787
    Par défaut
    Bonjour.

    Peux-tu préciser sur quelle ligne tu as l'erreur ?

    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.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Invité de passage
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Bonjour !

    Merci pour ton retour inestimable !

    Je pense qu'il est mieux que je te mette tout le code, comme ça tu pourras mieux appréhender :

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    Option Compare Database
    Dim montab As Variant
    
    Private Sub Commande3_Click()
    
    Set oDb = CurrentDb
    
    Set Orst = oDb.OpenRecordset("Visite medicale", dbOpenTable)
    
    LngNbEnregistrement = Orst.RecordCount
    'Libération des objets
    
    Orst.Close
    oDb.Close
    
    Set Orst = Nothing
    Set oDb = Nothing
    
    Set Orst = Nothing
    Set oDb = Nothing
    
    Set oDb = CurrentDb
    Set Orst = oDb.OpenRecordset("Visite medicale", dbOpenForwardOnly, dbReadOnly)
    
    'Effectif
    ReDim montab(LngNbEnregistrement, 44)
    For i = 1 To LngNbEnregistrement
    For Y = 1 To 43
    If IsNull(Orst.Fields(Y - 1)) = False Then
    montab(i, Y) = Orst.Fields(Y - 1)
    End If
    Next Y
    Orst.MoveNext
    Next i
    
    Orst.Close
    oDb.Close
    
    Set Orst = Nothing
    Set oDb = Nothing
    
    'Vider les champs
    Me.PnonSMR = ""
    Me.PSRM = ""
    
    
    'Compter
    Dim Exaperio As Double
    Dim visinonSMR As Double
    Dim visimedSMR As Double
    Dim visiembauche As Double
    Dim préreprise As Double
    Dim préreprisemed As Double
    Dim préreprisesecu As Double
    Dim préreprisesal As Double
    Dim reprise As Double
    Dim reprisemater As Double
    Dim reprisemaladie As Double
    Dim reprisemalpro As Double
    Dim repriacci As Double
    Dim occasio As Double
    Dim occasalarié As Double
    Dim occademed As Double
    Dim occaentreprise As Double
    Dim occaurgence As Double
    Dim occautres As Double
    Dim etudeposteIDE As Double
    
    
                   'visites périodiques
                   
    For i = 1 To UBound(montab)
    If montab(i, 7) = "SMR" Then
    visimedSMR = visimedSMR + 1
    End If
    
    If montab(i, 7) = "Non SMR" Then
    visinonSMR = visinonSMR + 1
    End If
    
                  'Examens médicaux non périodiques
                            'Embauche
    If montab(i, 8) = "Visites d'embauche" Then
    visiembauche = visiembauche + 1
    End If
                            'Pré-reprise
    If montab(i, 8) = "Visite de pré-reprise" Then
    préreprise = préreprise + 1
    End If
                       
    If montab(i, 9) = "Médecin traitant" Then
    préreprisemed = préreprisemed + 1
    End If
    
    If montab(i, 9) = "Médecin-conseil de la sécurité sociale" Then
    préreprisesecu = préreprisesecu + 1
    End If
    
    If montab(i, 9) = "Salarié" Then
    préreprisesal = préreprisesal + 1
    End If
                            'Visite reprise
                            
    If montab(i, 8) = "Visite de reprise" Then
    reprise = reprise + 1
    End If
    
    If montab(i, 10) = "Après maternité" Then
    reprisemater = reprisemater + 1
    End If
    
    If montab(i, 10) = "Après maladie" Then
    reprisemaladie = reprisemaladie + 1
    End If
    
    If montab(i, 10) = "Après maladie professionelle" Then
    reprisemalpro = reprisemalpro + 1
    End If
    
    
    If montab(i, 10) = "Après accident du travail" Then
    repriacci = repriacci + 1
    End If
    
                                'Visite Occasionnel
                                
    If montab(i, 8) = "Visite occasionnelle" Then
    occasio = occasio + 1
    End If
    
    If montab(i, 11) = "Demande salarié" Then
    occasalarié = occasalarié + 1
    End If
    
    If montab(i, 11) = "Demande medecin" Then
    occademed = occademed + 1
    End If
    
    If montab(i, 11) = "Demande de l'entreprise" Then
    occaentreprise = occaentreprise + 1
    End If
    
    If montab(i, 11) = "Urgences" Then
    occaurgence = occaurgence + 1
    End If
    
    If montab(i, 11) = "Autres" Then
    occautres = occautres + 1
    End If
    
            'Décompte examens complémentaires
    
    If montab(i, 66) = "IDE" Then
    etudeposteIDE = etudeposteIDE + 1
    End If
    
    
    Next i
    Me.PnonSMR.Value = visinonSMR
    Me.PSRM.Value = visimedSMR
    Me.Totexampério.Value = visimedSMR + visinonSMR
    Me.visiembauche = visiembauche
    Me.visipréreprise.Value = préreprise
    Me.premedtraitant = préreprisemed
    Me.premedsecu = préreprisesecu
    Me.presalarié = préreprisesal
    Me.visireprise = reprise
    Me.reprimater = reprisemater
    Me.reprimaladie = reprisemaladie
    Me.reprimaladepro = reprisemalpro
    Me.repriaccident = repriacci
    Me.visiocca = occasio
    Me.occsalarié.Value = occasalarié
    Me.occmed = occademed
    Me.occaentreprise = occaentreprise
    Me.occurgences = occaurgence
    Me.occaautres = occautres
    Me.totnonpério = visiembauche + reprise + préreprise + occasio
    Me.Totexaclinique = visiembauche + reprise + préreprise + occasio + visimedSMR + visinonSMR
    Me.Totvislocide = eutudeposteIDE
    
    
    End Sub
    L'anomalie se porte sur ce que j'ai mis en rouge gras : la fonction est ligne 153 et les déclarations sont lignes 67 et 180.

    Pourtant j'ai bien déclaré, les libellés de champs sont corrects, le numéro de la colonne dans la table est respecté...

    Je pense que je dois agrandir la dimension du tableau pour que ma fonction lise davantage de colonnes, car j'ai l'impression que c'est bridé par cette partie du code, mais je ne sais pas comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ReDim montab(LngNbEnregistrement, 44)
    For i = 1 To LngNbEnregistrement
    For Y = 1 To 43
    If IsNull(Orst.Fields(Y - 1)) = False Then
    montab(i, Y) = Orst.Fields(Y - 1)
    End If
    Bref, c'est pas gagné et c'est pas facile du tout

    En te remerciant par avance pour ton précieux retour

  4. #4
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Ne sachant pas non plus à quelle ligne cela s'arrête, je te propose d'essayer 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
     
    Private Sub Commande3_Click()
    Dim Orst        As DAO.Recordset
    Dim visimedSMR  As Double
     
     
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenTable)
        Orst.MoveLast
        LngNbEnregistrement = Orst.RecordCount
     
     
        'Libération des objets
        Set Orst = Nothing
     
        ' Ouverture du nouveau recordset
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenForwardOnly, dbReadOnly)
     
         'Effectif
        ReDim montab(LngNbEnregistrement, 44)
        For I = 1 To LngNbEnregistrement
           For Y = 1 To 43
             If IsNull(Orst.Fields(Y - 1)) = False Then
               montab(I, Y) = Orst.Fields(Y - 1)
             End If
           Next Y
           Orst.MoveNext
        Next I
        Orst.Close
        Set Orst = Nothing
     
        For I = 1 To UBound(montab)
            If montab(I, 7) = "SMR" Then
                visimedSMR = visimedSMR + 1
            End If
     
            If montab(I, 7) = "Non SMR" Then
                visinonSMR = visinonSMR + 1
            End If
         Next I
     
         Me.PnonSMR.Value = visinonSMR
         Me.PSRM.Value = visimedSMR
     
    End Sub
    En espérant que cela fasse avancer les choses... :-)
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  5. #5
    Invité de passage
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par bernardmichel Voir le message
    Ne sachant pas non plus à quelle ligne cela s'arrête, je te propose d'essayer 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
     
    Private Sub Commande3_Click()
    Dim Orst        As DAO.Recordset
    Dim visimedSMR  As Double
     
     
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenTable)
        Orst.MoveLast
        LngNbEnregistrement = Orst.RecordCount
     
     
        'Libération des objets
        Set Orst = Nothing
     
        ' Ouverture du nouveau recordset
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenForwardOnly, dbReadOnly)
     
         'Effectif
        ReDim montab(LngNbEnregistrement, 44)
        For I = 1 To LngNbEnregistrement
           For Y = 1 To 43
             If IsNull(Orst.Fields(Y - 1)) = False Then
               montab(I, Y) = Orst.Fields(Y - 1)
             End If
           Next Y
           Orst.MoveNext
        Next I
        Orst.Close
        Set Orst = Nothing
     
        For I = 1 To UBound(montab)
            If montab(I, 7) = "SMR" Then
                visimedSMR = visimedSMR + 1
            End If
     
            If montab(I, 7) = "Non SMR" Then
                visinonSMR = visinonSMR + 1
            End If
         Next I
     
         Me.PnonSMR.Value = visinonSMR
         Me.PSRM.Value = visimedSMR
     
    End Sub
    En espérant que cela fasse avancer les choses... :-)

    Super ! Merci pour ton retour, le code marche bien, il est bien plus court, sauf que je génère toujours une anomalie quand je me réfère à la colonne 65 de ma table, il me met "erreur d'éxecution 9, l'indice..."

    Je ne comprends pas pourquoi il ne veut pas lire les colonnes qui sont au-dessus de la 11ème...

    Merci par avance pour ton précieux retour !


    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    Private Sub Commande3_Click()
    Dim Orst        As DAO.Recordset
    Dim Exaperio As Double
    Dim visinonSMR As Double
    Dim visimedSMR  As Double
    Dim visiembauche As Double
    Dim préreprise As Double
    Dim préreprisemed As Double
    Dim préreprisesecu As Double
    Dim préreprisesal As Double
    Dim reprise As Double
    Dim reprisemater As Double
    Dim reprisemaladie As Double
    Dim reprisemalpro As Double
    Dim repriacci As Double
    Dim occasio As Double
    Dim occasalarié As Double
    Dim occademed As Double
    Dim occaentreprise As Double
    Dim occaurgence As Double
    Dim occautres As Double
    Dim etudeposteIDE As Double
     
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenTable)
        Orst.MoveLast
        LngNbEnregistrement = Orst.RecordCount
     
     
        'Libération des objets
        Set Orst = Nothing
     
        ' Ouverture du nouveau recordset
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenForwardOnly, dbReadOnly)
     
         'Effectif
        ReDim montab(LngNbEnregistrement, 44)
        For i = 1 To LngNbEnregistrement
           For Y = 1 To 43
             If IsNull(Orst.Fields(Y - 1)) = False Then
               montab(i, Y) = Orst.Fields(Y - 1)
             End If
           Next Y
           Orst.MoveNext
        Next i
        Orst.Close
        Set Orst = Nothing
     
        For i = 1 To UBound(montab)
            If montab(i, 7) = "SMR" Then
                visimedSMR = visimedSMR + 1
            End If
     
            If montab(i, 7) = "Non SMR" Then
                visinonSMR = visinonSMR + 1
            End If
            
            If montab(i, 8) = "Visites d'embauche" Then
    visiembauche = visiembauche + 1
    End If
                            'Pré-reprise
    If montab(i, 8) = "Visite de pré-reprise" Then
    préreprise = préreprise + 1
    End If
                       
    If montab(i, 9) = "Médecin traitant" Then
    préreprisemed = préreprisemed + 1
    End If
    
    If montab(i, 9) = "Médecin-conseil de la sécurité sociale" Then
    préreprisesecu = préreprisesecu + 1
    End If
    
    If montab(i, 9) = "Salarié" Then
    préreprisesal = préreprisesal + 1
    End If
                            'Visite reprise
                            
    If montab(i, 8) = "Visite de reprise" Then
    reprise = reprise + 1
    End If
    
    If montab(i, 10) = "Après maternité" Then
    reprisemater = reprisemater + 1
    End If
    
    If montab(i, 10) = "Après maladie" Then
    reprisemaladie = reprisemaladie + 1
    End If
    
    If montab(i, 10) = "Après maladie professionelle" Then
    reprisemalpro = reprisemalpro + 1
    End If
    
    
    If montab(i, 10) = "Après accident du travail" Then
    repriacci = repriacci + 1
    End If
    
                                'Visite Occasionnel
                                
    If montab(i, 8) = "Visite occasionnelle" Then
    occasio = occasio + 1
    End If
    
    If montab(i, 11) = "Demande salarié" Then
    occasalarié = occasalarié + 1
    End If
    
    If montab(i, 11) = "Demande medecin" Then
    occademed = occademed + 1
    End If
    
    If montab(i, 11) = "Demande de l'entreprise" Then
    occaentreprise = occaentreprise + 1
    End If
    
    If montab(i, 11) = "Urgences" Then
    occaurgence = occaurgence + 1
    End If
    
    If montab(i, 11) = "Autres" Then
    occautres = occautres + 1
    End If
    
    
    If montab(i, 65) = "IDE" Then
    etudeposteIDE = etudeposteIDE + 1
    End If
    
         Next i
     
    Me.PnonSMR.Value = visinonSMR
    Me.PSRM.Value = visimedSMR
    Me.Totexampério.Value = visimedSMR + visinonSMR
    Me.visiembauche = visiembauche
    Me.visipréreprise.Value = préreprise
    Me.premedtraitant = préreprisemed
    Me.premedsecu = préreprisesecu
    Me.presalarié = préreprisesal
    Me.visireprise = reprise
    Me.reprimater = reprisemater
    Me.reprimaladie = reprisemaladie
    Me.reprimaladepro = reprisemalpro
    Me.repriaccident = repriacci
    Me.visiocca = occasio
    Me.occsalarié.Value = occasalarié
    Me.occmed = occademed
    Me.occaentreprise = occaentreprise
    Me.occurgences = occaurgence
    Me.occaautres = occautres
    Me.totnonpério = visiembauche + reprise + préreprise + occasio
    Me.Totexaclinique = visiembauche + reprise + préreprise + occasio + visimedSMR + visinonSMR
    Me.Totvislocide = eutudeposteIDE
     
    End Sub

  6. #6
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Hello !

    Voilà peut-être une réponse...
    cf. Commentaire ligne 21

    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
    84
    85
    86
    87
     
    Private Sub Commande3_Click()Dim Orst        As DAO.Recordset
    Dim Exaperio    As Double, visinonSMR       As Double, visimedSMR       As Double, visiembauche     As Double
    Dim préreprise  As Double, préreprisemed    As Double, préreprisesecu   As Double, préreprisesal    As Double
    Dim reprise     As Double, reprisemater     As Double, reprisemaladie   As Double, reprisemalpro    As Double
    Dim repriacci   As Double, occasio          As Double, occasalarié      As Double, occademed        As Double
    Dim occaurgence As Double, occautres        As Double, etudeposteIDE    As Double, occaentreprise   As Double
     
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenTable)
        Orst.MoveLast
        LngNbEnregistrement = Orst.RecordCount
        Set Orst = Nothing
     
        ' Ouverture du nouveau recordset
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenForwardOnly, dbReadOnly)
     
    ReDim montab(LngNbEnregistrement, 44)
     
         'Effectif
        For I = 1 To LngNbEnregistrement
            For Y = 1 To 43     ' N'est-ce pas ici l'erreur ?
                                ' Si tu souhaites que, plus bas, montab(I, 65) soit pris en compte
                                ' ne faudrait-il pas écrire For Y = 1 to 65 ?
     
                If IsNull(Orst.Fields(Y - 1)) = False Then
                    montab(I, Y) = Orst.Fields(Y - 1)
                End If
            Next Y
            Orst.MoveNext
        Next I
        Orst.Close
        Set Orst = Nothing
     
        For I = 1 To UBound(montab)
            If montab(I, 7) = "SMR" Then visimedSMR = visimedSMR + 1
            If montab(I, 7) = "Non SMR" Then visinonSMR = visinonSMR + 1
            If montab(I, 8) = "Visites d'embauche" Then visiembauche = visiembauche + 1
     
        ' Pré-reprise
            If montab(I, 8) = "Visite de pré-reprise" Then préreprise = préreprise + 1
            If montab(I, 9) = "Médecin traitant" Then préreprisemed = préreprisemed + 1
            If montab(I, 9) = "Médecin-conseil de la sécurité sociale" Then préreprisesecu = préreprisesecu + 1
            If montab(I, 9) = "Salarié" Then préreprisesal = préreprisesal + 1
     
     
        ' Visite reprise
            If montab(I, 8) = "Visite de reprise" Then reprise = reprise + 1
            If montab(I, 10) = "Après maternité" Then reprisemater = reprisemater + 1
            If montab(I, 10) = "Après maladie" Then reprisemaladie = reprisemaladie + 1
            If montab(I, 10) = "Après maladie professionelle" Then reprisemalpro = reprisemalpro + 1
            If montab(I, 10) = "Après accident du travail" Then repriacci = repriacci + 1
     
     
        ' Visite Occasionnel
            If montab(I, 8) = "Visite occasionnelle" Then occasio = occasio + 1
            If montab(I, 11) = "Demande salarié" Then occasalarié = occasalarié + 1
            If montab(I, 11) = "Demande medecin" Then occademed = occademed + 1
            If montab(I, 11) = "Demande de l'entreprise" Then occaentreprise = occaentreprise + 1
            If montab(I, 11) = "Urgences" Then occaurgence = occaurgence + 1
            If montab(I, 11) = "Autres" Then occautres = occautres + 1
            If montab(I, 65) = "IDE" Then etudeposteIDE = etudeposteIDE + 1
        Next I
     
        Me.PnonSMR.Value = visinonSMR
        Me.PSRM.Value = visimedSMR
        Me.Totexampério.Value = visimedSMR + visinonSMR
        Me.visiembauche = visiembauche
        Me.visipréreprise.Value = préreprise
        Me.premedtraitant = préreprisemed
        Me.premedsecu = préreprisesecu
        Me.presalarié = préreprisesal
        Me.visireprise = reprise
        Me.reprimater = reprisemater
        Me.reprimaladie = reprisemaladie
        Me.reprimaladepro = reprisemalpro
        Me.repriaccident = repriacci
        Me.visiocca = occasio
        Me.occsalarié.Value = occasalarié
        Me.occmed = occademed
        Me.occaentreprise = occaentreprise
        Me.occurgences = occaurgence
        Me.occaautres = occautres
        Me.totnonpério = visiembauche + reprise + préreprise + occasio
        Me.Totexaclinique = visiembauche + reprise + préreprise + occasio + visimedSMR + visinonSMR
        Me.Totvislocide = eutudeposteIDE
     
    End Sub
    Cordialement.
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  7. #7
    Invité de passage
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par bernardmichel Voir le message
    Hello !

    Voilà peut-être une réponse...
    cf. Commentaire ligne 21

    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
    84
    85
    86
    87
     
    Private Sub Commande3_Click()Dim Orst        As DAO.Recordset
    Dim Exaperio    As Double, visinonSMR       As Double, visimedSMR       As Double, visiembauche     As Double
    Dim préreprise  As Double, préreprisemed    As Double, préreprisesecu   As Double, préreprisesal    As Double
    Dim reprise     As Double, reprisemater     As Double, reprisemaladie   As Double, reprisemalpro    As Double
    Dim repriacci   As Double, occasio          As Double, occasalarié      As Double, occademed        As Double
    Dim occaurgence As Double, occautres        As Double, etudeposteIDE    As Double, occaentreprise   As Double
     
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenTable)
        Orst.MoveLast
        LngNbEnregistrement = Orst.RecordCount
        Set Orst = Nothing
     
        ' Ouverture du nouveau recordset
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenForwardOnly, dbReadOnly)
     
    ReDim montab(LngNbEnregistrement, 44)
     
         'Effectif
        For I = 1 To LngNbEnregistrement
            For Y = 1 To 43     ' N'est-ce pas ici l'erreur ?
                                ' Si tu souhaites que, plus bas, montab(I, 65) soit pris en compte
                                ' ne faudrait-il pas écrire For Y = 1 to 65 ?
     
                If IsNull(Orst.Fields(Y - 1)) = False Then
                    montab(I, Y) = Orst.Fields(Y - 1)
                End If
            Next Y
            Orst.MoveNext
        Next I
        Orst.Close
        Set Orst = Nothing
     
        For I = 1 To UBound(montab)
            If montab(I, 7) = "SMR" Then visimedSMR = visimedSMR + 1
            If montab(I, 7) = "Non SMR" Then visinonSMR = visinonSMR + 1
            If montab(I, 8) = "Visites d'embauche" Then visiembauche = visiembauche + 1
     
        ' Pré-reprise
            If montab(I, 8) = "Visite de pré-reprise" Then préreprise = préreprise + 1
            If montab(I, 9) = "Médecin traitant" Then préreprisemed = préreprisemed + 1
            If montab(I, 9) = "Médecin-conseil de la sécurité sociale" Then préreprisesecu = préreprisesecu + 1
            If montab(I, 9) = "Salarié" Then préreprisesal = préreprisesal + 1
     
     
        ' Visite reprise
            If montab(I, 8) = "Visite de reprise" Then reprise = reprise + 1
            If montab(I, 10) = "Après maternité" Then reprisemater = reprisemater + 1
            If montab(I, 10) = "Après maladie" Then reprisemaladie = reprisemaladie + 1
            If montab(I, 10) = "Après maladie professionelle" Then reprisemalpro = reprisemalpro + 1
            If montab(I, 10) = "Après accident du travail" Then repriacci = repriacci + 1
     
     
        ' Visite Occasionnel
            If montab(I, 8) = "Visite occasionnelle" Then occasio = occasio + 1
            If montab(I, 11) = "Demande salarié" Then occasalarié = occasalarié + 1
            If montab(I, 11) = "Demande medecin" Then occademed = occademed + 1
            If montab(I, 11) = "Demande de l'entreprise" Then occaentreprise = occaentreprise + 1
            If montab(I, 11) = "Urgences" Then occaurgence = occaurgence + 1
            If montab(I, 11) = "Autres" Then occautres = occautres + 1
            If montab(I, 65) = "IDE" Then etudeposteIDE = etudeposteIDE + 1
        Next I
     
        Me.PnonSMR.Value = visinonSMR
        Me.PSRM.Value = visimedSMR
        Me.Totexampério.Value = visimedSMR + visinonSMR
        Me.visiembauche = visiembauche
        Me.visipréreprise.Value = préreprise
        Me.premedtraitant = préreprisemed
        Me.premedsecu = préreprisesecu
        Me.presalarié = préreprisesal
        Me.visireprise = reprise
        Me.reprimater = reprisemater
        Me.reprimaladie = reprisemaladie
        Me.reprimaladepro = reprisemalpro
        Me.repriaccident = repriacci
        Me.visiocca = occasio
        Me.occsalarié.Value = occasalarié
        Me.occmed = occademed
        Me.occaentreprise = occaentreprise
        Me.occurgences = occaurgence
        Me.occaautres = occautres
        Me.totnonpério = visiembauche + reprise + préreprise + occasio
        Me.Totexaclinique = visiembauche + reprise + préreprise + occasio + visimedSMR + visinonSMR
        Me.Totvislocide = eutudeposteIDE
     
    End Sub
    Cordialement.
    Merci pour ton retour

    En effet, je pensais que cela était lié à ce nombre qui n'était pas assez élevé, sauf que, lorsque je le modifie pour y mettre 66, j'obtiens à la ligne 40 (j'ai mis en rouge dans le code) l'erreur d'éxecution 9...

    Je suis un peu perdu... Je ne sais pas à quoi correspond cette ligne.. Merci pour ton retour

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    Private Sub Commande3_Click()
    Dim Orst        As DAO.Recordset
    Dim Exaperio As Double
    Dim visinonSMR As Double
    Dim visimedSMR  As Double
    Dim visiembauche As Double
    Dim préreprise As Double
    Dim préreprisemed As Double
    Dim préreprisesecu As Double
    Dim préreprisesal As Double
    Dim reprise As Double
    Dim reprisemater As Double
    Dim reprisemaladie As Double
    Dim reprisemalpro As Double
    Dim repriacci As Double
    Dim occasio As Double
    Dim occasalarié As Double
    Dim occademed As Double
    Dim occaentreprise As Double
    Dim occaurgence As Double
    Dim occautres As Double
    Dim etudeposteIDE As Double
     
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenTable)
        Orst.MoveLast
        LngNbEnregistrement = Orst.RecordCount
     
     
        'Libération des objets
        Set Orst = Nothing
     
        ' Ouverture du nouveau recordset
        Set Orst = CurrentDb.OpenRecordset("Visite medicale", dbOpenForwardOnly, dbReadOnly)
     
         'Effectif
        ReDim montab(LngNbEnregistrement, 44)
        For i = 1 To LngNbEnregistrement
           For Y = 1 To 65
             If IsNull(Orst.Fields(Y - 1)) = False Then
               montab(i, Y) = Orst.Fields(Y - 1)
             End If
           Next Y
           Orst.MoveNext
        Next i
        Orst.Close
        Set Orst = Nothing
     
        For i = 1 To UBound(montab)
            If montab(i, 7) = "SMR" Then
                visimedSMR = visimedSMR + 1
            End If
     
            If montab(i, 7) = "Non SMR" Then
                visinonSMR = visinonSMR + 1
            End If
            
            If montab(i, 8) = "Visites d'embauche" Then
    visiembauche = visiembauche + 1
    End If
                            'Pré-reprise
    If montab(i, 8) = "Visite de pré-reprise" Then
    préreprise = préreprise + 1
    End If
                       
    If montab(i, 9) = "Médecin traitant" Then
    préreprisemed = préreprisemed + 1
    End If
    
    If montab(i, 9) = "Médecin-conseil de la sécurité sociale" Then
    préreprisesecu = préreprisesecu + 1
    End If
    
    If montab(i, 9) = "Salarié" Then
    préreprisesal = préreprisesal + 1
    End If
                            'Visite reprise
                            
    If montab(i, 8) = "Visite de reprise" Then
    reprise = reprise + 1
    End If
    
    If montab(i, 10) = "Après maternité" Then
    reprisemater = reprisemater + 1
    End If
    
    If montab(i, 10) = "Après maladie" Then
    reprisemaladie = reprisemaladie + 1
    End If
    
    If montab(i, 10) = "Après maladie professionelle" Then
    reprisemalpro = reprisemalpro + 1
    End If
    
    
    If montab(i, 10) = "Après accident du travail" Then
    repriacci = repriacci + 1
    End If
    
                                'Visite Occasionnel
                                
    If montab(i, 8) = "Visite occasionnelle" Then
    occasio = occasio + 1
    End If
    
    If montab(i, 11) = "Demande salarié" Then
    occasalarié = occasalarié + 1
    End If
    
    If montab(i, 11) = "Demande medecin" Then
    occademed = occademed + 1
    End If
    
    If montab(i, 11) = "Demande de l'entreprise" Then
    occaentreprise = occaentreprise + 1
    End If
    
    If montab(i, 11) = "Urgences" Then
    occaurgence = occaurgence + 1
    End If
    
    If montab(i, 11) = "Autres" Then
    occautres = occautres + 1
    End If
    
    
    If montab(i, 65) = "IDE" Then
    etudeposteIDE = etudeposteIDE + 1
    End If
    
         Next i
     
    Me.PnonSMR.Value = visinonSMR
    Me.PSRM.Value = visimedSMR
    Me.Totexampério.Value = visimedSMR + visinonSMR
    Me.visiembauche = visiembauche
    Me.visipréreprise.Value = préreprise
    Me.premedtraitant = préreprisemed
    Me.premedsecu = préreprisesecu
    Me.presalarié = préreprisesal
    Me.visireprise = reprise
    Me.reprimater = reprisemater
    Me.reprimaladie = reprisemaladie
    Me.reprimaladepro = reprisemalpro
    Me.repriaccident = repriacci
    Me.visiocca = occasio
    Me.occsalarié.Value = occasalarié
    Me.occmed = occademed
    Me.occaentreprise = occaentreprise
    Me.occurgences = occaurgence
    Me.occaautres = occautres
    Me.totnonpério = visiembauche + reprise + préreprise + occasio
    Me.Totexaclinique = visiembauche + reprise + préreprise + occasio + visimedSMR + visinonSMR
    Me.Totvislocide = eutudeposteIDE
     
    End Sub

  8. #8
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Hello !

    Si ce n'est pas une bdd confidentielle, peux-tu me l'envoyer ?
    De visu et avec les données ce sera certainement plus simple à résoudre...

    Cordialement.
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  9. #9
    Invité de passage
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci pour l'aide Bernard !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur d'Exécution 9' : L'indice n'appartient pas à la selection
    Par Sara86 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/04/2013, 17h28
  2. Réponses: 13
    Dernier message: 27/04/2012, 10h57
  3. erreur d'exécution 9, l'indice n'appartient pas à la sélection
    Par Quentin15 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/06/2011, 17h34
  4. [XL-2007] Erreur d'exécution '9' : l'indice n'appartient pas à la sélection
    Par Akhane dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/02/2011, 21h04
  5. Erreur d'execution '9'. L'indice n'appartient pas à la selection
    Par goby45 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/02/2010, 15h09

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