none
La référence d'objet n'est pas définie à une instance d'un objet. RRS feed

  • Question

  • Bonjour

     

    Dans le code ci-dessous, j’ai un souci avec la ligne au deuxième appel de la procédure createTable().

     

    La procédure createTable est appelé à l’ouverture du formulaire par la procédure Form_Planning_Load(), et  tout est OK.

    A l’appel de la procédure par click sur un des boutons (procédure BTN_Previous_Click et BTN_Next_Click) j’ai le message d’erreur suivant :

    « La référence d'objet n'est pas définie à une instance d'un objet. » pour la ligne :

    DGV_Planning.Columns("Day" & nMyDay).HeaderText = DateManagement.dayName(dStartdate.AddDays(nMyDay - 1), True) & " " & myDate.Day

     

    Code des procédures.

     

    #Region "Gestion des boutons"

        Private Sub BTN_Previous_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_Previous.Click

            nCurrentMonth -= 1

            If nCurrentMonth < 1 Then

                nCurrentYear -= 1

                nCurrentMonth = 12

            End If

            Label_Month.Text = MonthName(nCurrentMonth) & " " & nCurrentYear

            DGV_Planning.Columns.Clear()

            createTable()

     

        End Sub

     

        Private Sub BTN_Next_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_Next.Click

            nCurrentMonth += 1

            If nCurrentMonth > 12 Then

                nCurrentYear += 1

                nCurrentMonth = 1

            End If

            Label_Month.Text = MonthName(nCurrentMonth) & " " & nCurrentYear

            DGV_Planning.Columns.Clear()

            createTable()

     

        End Sub

     

    #End Region     ' Fin de gestion des boutons

     

        Private Sub Form_Planning_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load, MyBase.Activated

            'Me.MinimizeBox = False

            'Me.MaximizeBox = False

            Label_Month.Text = sCurrentMonth & " " & Year(dCurrentDate)

     

            createTable()

     

        End Sub

     

        Private Sub createTable()

            Dim myDate As Date = New Date(nCurrentYear, nCurrentMonth, 1)

            Dim dStartdate As Date = New Date(nCurrentYear, nCurrentMonth, 1).AddDays(Form_Main.nDaysTransition * (-1))

            Dim dEndDate As Date

            Dim nLDOM As Integer = DateManagement.lastDayOfMonth(New Date(nCurrentYear, nCurrentMonth, 1))

     

            dEndDate = New Date(nCurrentYear, nCurrentMonth, DateManagement.lastDayOfMonth(New Date(nCurrentYear, nCurrentMonth, 1))).AddDays(Form_Main.nDaysTransition)

     

            Dim nMyDay As Integer

            Dim nNbDay As Integer = DateDiff(DateInterval.Day, dStartdate, dEndDate) + 1

     

            For nMyDay = 1 To nNbDay

                myDate = dStartdate.AddDays(nMyDay - 1)

                DGV_Planning.Columns("Day" & nMyDay).HeaderText = DateManagement.dayName(dStartdate.AddDays(nMyDay - 1), True) & " " & myDate.Day

                DGV_Planning.Columns("Day" & nMyDay).Width = 35

                If Month(myDate) <> nCurrentMonth Then

                    Me.DGV_Planning.Columns("Day" & nMyDay).DefaultCellStyle.BackColor = Color.Gray

                Else

                    If myDate.DayOfWeek > 4 Then

                        Me.DGV_Planning.Columns("Day" & nMyDay).DefaultCellStyle.BackColor = Color.Orange

                    End If

                End If

                If Me.DGV_Planning.Columns("Day" & nMyDay).Visible = False Then

                    Me.DGV_Planning.Columns("Day" & nMyDay).Visible = True

                End If

            Next

            If nNbDay + 1 < 40 Then

                For nMyDay = nNbDay + 1 To 40

                    Me.DGV_Planning.Columns("Day" & nMyDay).Visible = False

                Next

            End If

        End Sub

     

    Remerciements,


    Jean PERIGNY, Développeur
    mardi 11 mai 2010 05:45

Réponses

  • Bonjour Jean,

    La ligne incriminée contient plusieurs objet, il faudrait la décomposer pour vérifier l'état de chacun au moment ou l'erreur se produit. Le débugage serrait d'autant plus simple.


    Jérémy Jeanson MCP http://blogs.codes-sources.com/JeremyJeanson/ (French or English Spoken)
    • Marqué comme réponse jperigny mardi 11 mai 2010 11:00
    mardi 11 mai 2010 09:39

Toutes les réponses

  • Bonjour Jean,

    La ligne incriminée contient plusieurs objet, il faudrait la décomposer pour vérifier l'état de chacun au moment ou l'erreur se produit. Le débugage serrait d'autant plus simple.


    Jérémy Jeanson MCP http://blogs.codes-sources.com/JeremyJeanson/ (French or English Spoken)
    • Marqué comme réponse jperigny mardi 11 mai 2010 11:00
    mardi 11 mai 2010 09:39
  • Bonjour,

    Merci beaucoup, je viens de résoudre le problème. J'ai ré-écrit le code, cela ne me plaisait pas non plus.

    Mais, Vous m'aidez quand même beaucoup.

    remerciements,


    Jean PERIGNY, Développeur
    mardi 11 mai 2010 11:00