Bonjour tout le monde,

Je suis en train de coder un programme en VBA afin d'actualiser automatiquement une base de données et lors de la compilation de mon code, excel me répond qu'il y a une "erreur de compilation : Sub ou Function non définie". Je ne comprends pas pk il me répond cela et ou se trouve l'erreur, j'ai beau chercher sur internet, je ne trouve pas la solution.

Voici le code en question qui pose problème :

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
'procedure that update the database by treating all the new datas
Sub updateall()
 
For i = 0 To number_of_line - 3
 
determinetypeofpatient (i)
 
    If typeofpatient = "newpatient" Then
            patientnew (i)
 
    ElseIf typeofpatient = "existingpatient" Then
            patientexisting (i)
 
    Else
            MsgBox "Error with the patient number " & i & "." & Chr(10) & "Please, deal with it manually."
 
    End If
 
Next i
 
End Sub
 
'procedure that decides if the patient whose number of line is "values" is new or not and return a string "newpatient" or "existingpatient"
Sub determinetypeofpatient(ByVal values As Integer)
 
Dim typeofpatient As String
Dim positionlinepatientexisting As Integer
 
For i = 0 To number_of_line_in_the_database - 3
    If base(i, positioncolumndatabase - 1) = table(values - 3, positioncolumn - 1) Then
        typeofpatient = existingpatient
        positionlinepatientexisting = i
        Exit For
 
    ElseIf i = number_of_line_in_the_database - 3 Then
        typeofpatient = newpatient
 
    Else
 
    End If
 
Next i
 
End Sub
Qq remarques sur mon code :
  • number_of_line et number_of_line_in_the_database sont des integer déclarés en début de module
  • patientexisting (i)et patientnew(i) sont des procédures du reste de mon code qui prennent comme argument un integer (i)
  • base et table sont 2 tableaux que j'ai crée auparavant (les bornes des boucles sont bonnes)


Lorsqu'excel m'indique l'erreur, il en profite pour surligner en jaune la ligne suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Sub determinetypeofpatient(ByVal values As Integer)
J'espère que vous pourrez m'aider à trouver l'erreur ! Car vraiment je ne sais pas quoi faire.

J'en profite pour poser une question assez simple. Si on veut utiliser un tableau dans plusieurs procédures, faut-il nécessairement le déclarer en début de module ou le fait de le déclarer dans une procédure ne pose pas de problème ?

Merci à vous