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 :

Erreur code vba état/sous-états [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 161
    Points : 59
    Points
    59
    Par défaut Erreur code vba état/sous-états
    Bonjour àt ous, j'ai un problème sur du code vba je ne sais pas du tout d'où peut venir cette erreur.

    Alors en fait j'ai un état principal appelé Etat1. Sur ce cet état, j'ai deux sous-état: Détail_Mois_en_Cours_Pointage_Imputable et Détail_Mois_en_Cours_Pointage_Non_Imputable.

    A l'ouverture des sous-états, il y a du 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
    Public Sub MajReportImputable()
    Dim ND As Integer, j As Integer
    Dim DateJ As Date
     
    ND = DaysInMonth(Forms!Frm_Pointage!Mois, Forms!Frm_Pointage!An)
    DateJ = DateSerial(Forms!Frm_Pointage!An, Forms!Frm_Pointage!Mois, 1)
     
    'Reports!Détail_Mois_en_Cours_Pointage_Imputable!Titre.Caption = "Planning mensuel des heures imputables pour le mois de " & Format(DateJ, "mmmm yyyy")
     
    For j = 1 To ND
     
    Reports!Détail_Mois_en_Cours_Pointage_Imputable("Col" & j).Caption = UCase(Left(Format(DateJ, "ddd"), 1)) & vbCrLf & j
     
       If EstWeekEnd(DateJ) Or EstFerie(DateJ) Then
          Reports!Détail_Mois_en_Cours_Pointage_Imputable("Col" & j).BackColor = 13428479
          Reports!Détail_Mois_en_Cours_Pointage_Imputable("Jour" & j).BackColor = 13428479
          'Reports!Détail_Mois_en_Cours_Pointage_Imputable("Total" & j).BackColor = 13428479
       Else
          Reports!Détail_Mois_en_Cours_Pointage_Imputable("Col" & j).BackColor = 16761024
          Reports!Détail_Mois_en_Cours_Pointage_Imputable("Jour" & j).BackColor = vbWhite
          'Reports!Détail_Mois_en_Cours_Pointage_Imputable("Total" & j).BackColor = vbWhite
       End If
     
    DateJ = DateJ + 1
    Next j
     
    For j = 29 To ND
    Reports!Détail_Mois_en_Cours_Pointage_Imputable("Col" & j).Visible = True
    Reports!Détail_Mois_en_Cours_Pointage_Imputable("Jour" & j).Visible = True
    Next j
     
     
    For j = (ND + 1) To 31
    Reports!Détail_Mois_en_Cours_Pointage_Imputable("Col" & j).Visible = False
    Reports!Détail_Mois_en_Cours_Pointage_Imputable("Jour" & j).Visible = False
    Next j
     
    End Sub
    pour permettre la mise en forme. (Il y a la même chose à peu de chose près pour le sous-état non imputable). Cela marche parfaitement pour les sous-états.

    Quand j'ouvre séparement les sous-états la mise en page est la bonne, mais quand j'ouvre l'état principal non, j'ai donc mis du code sur l'ouverture de l'état principal:
    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
    Public Sub MajReport()
    Dim ND As Integer, j As Integer
    Dim DateJ As Date
    ND = DaysInMonth(Forms!Frm_Pointage!Mois, Forms!Frm_Pointage!An)
    DateJ = DateSerial(Forms!Frm_Pointage!An, Forms!Frm_Pointage!Mois, 1)
     
    Reports!État1!Titre.Caption = "Planning mensuel des heures pour le mois de " & Format(DateJ, "mmmm yyyy")
     
    For j = 1 To ND
     
    Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Col" & j).Caption = UCase(Left(Format(DateJ, "ddd"), 1)) & vbCrLf & j
    Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Col" & j).Caption = UCase(Left(Format(DateJ, "ddd"), 1)) & vbCrLf & j
     
       If EstWeekEnd(DateJ) Or EstFerie(DateJ) Then
          Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Col" & j).BackColor = 13428479
          Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Jour" & j).BackColor = 13428479
          Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Total" & j).BackColor = 13428479
          Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Col" & j).BackColor = 13428479
          Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Jour" & j).BackColor = 13428479
          Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Total" & j).BackColor = 13428479
       Else
          Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Col" & j).BackColor = 16761024
          Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Jour" & j).BackColor = vbWhite
          Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Total" & j).BackColor = vbWhite
          Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Col" & j).BackColor = 16761024
          Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Jour" & j).BackColor = vbWhite
          Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Total" & j).BackColor = vbWhite
       End If
     
    DateJ = DateJ + 1
    Next j
     
    For j = 29 To ND
    Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Col" & j).Visible = True
    Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Jour" & j).Visible = True
    Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Col" & j).Visible = True
    Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Jour" & j).Visible = True
    Next j
     
     
    For j = (ND + 1) To 31
    Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Col" & j).Visible = False
    Reports!État1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Jour" & j).Visible = False
    Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Col" & j).Visible = False
    Reports!État1.Détail_Mois_en_Cours_Pointage_Non_Imputable.Report("Jour" & j).Visible = False
    Next j
     
    End Sub
    Le problème se trouve apperement à la ligne 11 le débogueur me dit: erreur 2455: la référence d'une expression à la propriété Form/Report n'est pas valide

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 348
    Points : 19 593
    Points
    19 593
    Billets dans le blog
    65
    Par défaut
    Salut,

    Essaies de garder le code sur l'ouverture des sous-états, en utilisant le "raccourci " Me, qui désigne normalement ton sous-état actif:

    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
    Private Sub Report_Open(Cancel As Integer)
    Dim ND As Integer, j As Integer
    Dim DateJ As Date
     
    ND = DaysInMonth(Forms!Frm_Pointage!Mois, Forms!Frm_Pointage!An)
    DateJ = DateSerial(Forms!Frm_Pointage!An, Forms!Frm_Pointage!Mois, 1)
     
    'Reports!Détail_Mois_en_Cours_Pointage_Imputable!Titre.Caption = "Planning mensuel des heures imputables pour le mois de " & Format(DateJ, "mmmm yyyy")
     
    For j = 1 To ND
     
    Me("Col" & j).Caption = UCase(Left(Format(DateJ, "ddd"), 1)) & vbCrLf & j
     
       If EstWeekEnd(DateJ) Or EstFerie(DateJ) Then
          Me("Col" & j).BackColor = 13428479
          Me("Jour" & j).BackColor = 13428479
          'Reports!Détail_Mois_en_Cours_Pointage_Imputable("Total" & j).BackColor = 13428479
       Else
          Me("Col" & j).BackColor = 16761024
          Me("Jour" & j).BackColor = vbWhite
          'Reports!Détail_Mois_en_Cours_Pointage_Imputable("Total" & j).BackColor = vbWhite
       End If
     
    DateJ = DateJ + 1
    Next j
     
    For j = 29 To ND
    Me("Col" & j).Visible = True
    Me("Jour" & j).Visible = True
    Next j
     
     
    For j = (ND + 1) To 31
    Me("Col" & j).Visible = False
    Me("Jour" & j).Visible = False
    Next j
     
    End Sub
    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 161
    Points : 59
    Points
    59
    Par défaut
    User tout d'abord merci de ta réponse que j'ai essayé immédiatement.
    J'ai modifié le code pour les sous-états en mettant Me. Sa affiche bien les sous-états avec la mise en forme désirée. Mais sa ne change rien pour l'état principal, j'ai toujours l'erreur(quand je veux l'ourviri): Erreur 245 : la référence d'une expression à la propriété Form/report n'est pas valide à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Reports!Etat1.Détail_Mois_en_Cours_Pointage_Imputable.Report("Col" & j).Caption = UCase(Left(Format(DateJ, "ddd"), 1)) & vbCrLf & j

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 348
    Points : 19 593
    Points
    19 593
    Billets dans le blog
    65
    Par défaut
    Tu n'as pas besoin du code dans l'état principal, puisque c'est équivalent au code dans les sous-états

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 161
    Points : 59
    Points
    59
    Par défaut
    Non dans l'état principal la mise en forme ne se garde pas.
    Alors en fait c'est bon sa marche, j'ai simplement fermée et voulu rouviri la base (qui a planté) j'ai copié le fichier et c'est bon tout fonctionne à merveille.

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

Discussions similaires

  1. aperçu d'un sous état sous condition
    Par dodie84 dans le forum IHM
    Réponses: 1
    Dernier message: 29/04/2008, 13h59
  2. Sous état dans état
    Par Daniel87000 dans le forum IHM
    Réponses: 1
    Dernier message: 10/12/2007, 22h59
  3. Code VBA function fermeture état
    Par ThieBEN dans le forum VBA Access
    Réponses: 8
    Dernier message: 30/11/2007, 11h36
  4. Réponses: 6
    Dernier message: 09/06/2006, 00h19
  5. [CR] Rélier les paramétres d'un sous états à l'état principa
    Par sylviefrfr dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 14/03/2006, 10h50

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