Erreur : seuls des commentaires peuvent apparaitre apres end sub...
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017
-
31 déc. 2008 à 14:09
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017
-
3 janv. 2009 à 10:23
Mon programme sous vba access marchait parfaitement jusqu'a maintenant, je rajoutais quelques modifs du genre à vérifier si tous les champs étaient remplis, etc, et puis tout d'un coup il s'est mis à faire cette erreur en lisant la procédure de démarrage : "Seuls des commentaires peuvent apparaitre après End Sub, end function ou end property".
Mon programme est composé de plusieurs procédures, à l'ouverture form_open se déclenche et appelle une procédure nommée "ouverture", il la suit, puis bug sur le public sub de la procédure suivante en me faisant cette erreur...
Je ne sais pas comment résoudre ça?? Pour moi cette erreur n'a pas lieu d'etre, il est normal qu'après un "End Sub" d'une procédure, apparaisse le "public sub' d'une aute procédure, et pas forcément des commentaires...
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017 31 déc. 2008 à 14:46
Tout ce que vous dites me parait logique, mais j'ai vérifié plusieurs fois, il n'y a absolument rien entre 2 procédures, j'ai beau relire mon programme de long en large, je ne vois pas...
Est-ce que ça pourrait venir d'autre chose, quelque chose à l'intérieur d'une procédure?...
En fait il bug à la première procédure qui suit, alors que normalement il ne devrait meme pas essayer de la lire puisqu'au démarrage, la procédure suivante n'est pas appelée... Pourquoi le programme ne s'arreterait-il pas au End Sub de la procédure d'ouverture? Il bug quand il essaye d'aller plus loin alors qu'il n'a pas à le faire!!
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 31 déc. 2008 à 15:44
en effet je ne vois pas de code parasite non plus
par contre dans la procédure Ouverture, VBA doit tiquer sur les with imbriqués
essaye comme çà :
'------------------------------------------
'Code de l'ouverture du formulaire
'Initialise les Treeview, listview et l'utilisateur en
cours
'------------------------------------------
Public Sub
Ouverture()
Set DTB = CurrentDb
Set TbUtilisateur = DTB.OpenRecordset("Utilisateur")
Set TbPhoto = DTB.OpenRecordset("Photo")
Set TbFacture = DTB.OpenRecordset("Facture")
Set TbLigneFacture = DTB.OpenRecordset("Ligne_Facture")
Set TbCompoFacture = DTB.OpenRecordset("CompositionFacture")
Set TbTag = DTB.OpenRecordset("Tag")
Set TbAchat = DTB.OpenRecordset("Achat")
Set TbFormat = DTB.OpenRecordset("Format")
'on identifie
l'utilisateur qui a ouvert le formulaire
Dim admin As Boolean 'variable pour savoir si
l'utilisateur est administrateur
Identifiant = Forms("Formulaire1").Tag
Form_Formulaire1.NomUtilisateur.Value =
Identifiant
'si l'utilisateur n'est
pas un administrateur, on désactive les boutons relatifs à
l'administrateur
TbUtilisateur.MoveFirst
While Not TbUtilisateur.EOF
If TbUtilisateur(0) = Identifiant Then
admin = TbUtilisateur(4)
TbUtilisateur.MoveLast
Else
TbUtilisateur.MoveNext
End If
Wend
'si l'utilisateur
n'est pas un admin
Ajouter_adhérent.Enabled = admin
LoadPhotos.Enabled = admin
Presents_Photo.Enabled = admin
Supprimer.Enabled = admin
RAZ.Enabled = admin
'Initialisation du dossier des photos avec le chemin
absolu
DossierRacine = "C:\Photos"
'--------------------------------
'Code pour construire le treeview
'--------------------------------
Dim DP As String, NomRepCourt As String
Dim oFSO As Scripting.FileSystemObject
Dim Racine As Scripting.Folder
Dim oFl As File
'Instanciation du FSO
Set oFSO = New Scripting.FileSystemObject
'Accède au répertoire du départ de
recherche
Set Racine = oFSO.GetFolder(DossierRacine)
'Calcul du nom court du nom du répertoire racine de
l'arborescence des photos
NomRepCourt = NomCourt(Racine.Path)
'Initialisation du treeview
With TreeView1
.Style = tvwTreelinesPlusMinusPictureText
.LineStyle = tvwRootLines
.Nodes.Clear
.Nodes.Add , , Racine.Path, NomRepCourt
.Nodes(Racine.Path).Expanded = True
End With
'Construction
récursive du Treeview
ExplorerDossiers Racine
'----------------------------
'fin code pour construire le treeview
'----------------------------
'Initialisation des colonnes du ListView des
adhérents
With ListView1.ColumnHeaders
.Clear 'Supprime les anciens
entêtes
'Ajout des
colonnes
.Add , , "Personne"
.Add , , "Promotion"
End With
With ListView1
.View = lvwReport 'affichage en mode
Rapport
.GridLines = True 'affichage d'un
quadrillage
.FullRowSelect = True 'Sélection des lignes
complètes
.Checkboxes = True
'.Sorted =
True
End With
Dim i As Integer
i = 0
TbUtilisateur.MoveFirst
With ListView1
.ListItems.Clear
While Not TbUtilisateur.EOF 'on parcourt
l'ensemble des enregistrements de la table
Utilisateur
i = i + 1
.ListItems.Add , , TbUtilisateur(0) 'on entre
le nom des adhérents
.ListItems(i).ListSubItems.Add , , TbUtilisateur(2) 'et leur
numero de promo
TbUtilisateur.MoveNext
Wend
End With
'Initialisation des colones du ListView des phtotos
commandées
With ListView2.ColumnHeaders
.Clear 'Supprime les anciens
entêtes
'Ajout des
colonnes
.Add , , "Photo"
.Add , , "Quantité"
.Add , , "Format"
End With
With ListView2
.View = lvwReport 'affichage en mode
Rapport
.GridLines = True 'affichage d'un
quadrillage
.FullRowSelect = True 'Sélection des lignes
complètes
.Checkboxes = False
'.Sorted =
True
End With
'Initialisation des CombosBox de quantité et de
format
Dim j As Integer
For j = 1 To 10
ComboBox1.AddItem j
Next j
While Not TbFormat.EOF
If TbFormat(3) Then ComboBox2.AddItem TbFormat(1)
TbFormat.MoveNext
Wend
ComboBox1.Value = "1"
ComboBox2.Value = "10x15"
Set oFl = Nothing
Set Racine = Nothing
Set oFSO = Nothing
End Sub
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017 31 déc. 2008 à 16:06
J'ai modifié les With, et j'ai enlevé la procédure form_open, le programme bug en ouvrant la procédure "Ouverture".(s'arrete sur le point d'arret Public Sub Ouverture)
Qu'est-ce que tu entends par vérifier le formulaire1 et le form_formulaire1?
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 31 déc. 2008 à 16:06
Salut
L'erreur vient peut-être de la Sub située avant celle-ci. Erreurs fréquentes :
- Oubli du En Sub de la précédente
- End Sub à la place de End Function
- End Sub à la place de Exit Sub
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 31 déc. 2008 à 16:19
essaye d'exécuter ton code en pas à pas [F8]
l'erreur doit venir du contenu de la sub Ouverture, ou d'un userform auquel elle fait référence (cf la fin de mon dernier post)
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017 31 déc. 2008 à 16:53
Ok après recherche, c'est l'appel de la procédure ExplorerDossiers qui bug, quand la prcédure ouverture essaie de construire le treeview.
Mais encore une fois, je ne trouve pas pourquoi...
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017 31 déc. 2008 à 17:13
Ok j'ai déplacé la procédure ExplorerDossiers en bas du code (pour m'assurer qu'il n'y a bien plus rien d'écrit après son end Sub"
Maintenant la procédure Ouverture bug a l'appel de la fonction NomCourt, alors qu'avant ça fonctionnait...
je ne comprends rien!
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 janv. 2009 à 02:17
Re
Comme te le suggère PCPT, créé un point d'arrêt sur la ligne d'appel de ta procédure puis continue en avançant avec F8, tu finiras par tomber sur LA ligne qui créé le problème et qui se répercute sur la ligne d'appel de la Sub (en fonction de la gestion d'erreur, inexistante ou non autorisée dans les Options de ton IDE)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
elfifie
Messages postés19Date d'inscriptionsamedi 27 décembre 2008StatutMembreDernière intervention17 octobre 2017 3 janv. 2009 à 10:23
Bon en fait j'ai déplacé les procédures successivement en bas du code, au fur et à mesure que l'erreur se déplaçait sur la procédure suivante.
Au bout d'un moment l'erreur a disparu.
Cependant quand je rajoute des procédures, il faut que je fasse attention ou je les place : si je ne les mets pas à la fin l'erreur recommence.
Bon voila, au final ça marche mais ça reste incompréhensible...
Merci de votre aide.