Ouverture popup pour faire un rappel par rapport a un nombre de jour

cs_niblon Messages postés 59 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 20 septembre 2011 - 9 nov. 2010 à 23:35
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 15 nov. 2010 à 10:43
Bonsoir a tous

Je voudrais savoir comment faire pour faire apparaitre un popup a X nombre de jour avant la date determiner.

Je m'explique pour le controle technique d'une voiture ,je voudrais que mon application me rappel avec un popup par exemple 15jours restant ,10jours restant,3jours restant et enfin 1 journee restant, avant la date du prochain controle technique ,(mon application devra etre en route biensur)
c'est une application ou je stock les infos des cartes grise de mes clients avec les dates de controle technique ,et je voudrais avoir la possibilite d'avoir un popup de rappel pour le controle technque , pour m'eviter de regarder les dates de mes clients une par une.

Si quelqu'un a une piste ou une solution ,je suis preneur.
Merci d'avance
@+Niblon

11 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 nov. 2010 à 00:44
Salut
Où stock tu les infos dans une base de donnée ?
Dans ce cas écris une requette donnant le nombres de jour pour chaque client et ensuite
affiche la réponse avec un datagrid un truc de ce genre
0
cs_niblon Messages postés 59 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 20 septembre 2011
10 nov. 2010 à 00:58
j'ai oublier de preciser j'enregistrer dans un fichier.
la date du controle technique et la date du future controle technique

Merci d'avance
@+Niblon
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 nov. 2010 à 11:09
Salut
il manque des précisions.
le fichier est un fichier txt un document excel ?
comment les données sont écrits
quelle est la structure du fichier ?
0
cs_niblon Messages postés 59 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 20 septembre 2011
10 nov. 2010 à 23:47
Bonsoir ShayW

alors le fichier est au format txt.les date sont enregistrer en dur ex 10/11/2010,les informations sont enregistrer les une en dessous des autres

Niblon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 nov. 2010 à 10:44
Salut
j'ai besoin plus de précision le mieux serait d'envoyer un exemple du fichier ou si ce n'est pas possible
quelles données contient chaque ligne du fichier
par ex
nom prénom item3 item4
entre chaque item y a t'il un espace ou un tiret?
lorsqu'on lit un fichier txt on lit ligne par ligne et la ligne lue dans un string mais si je ne sais pas les données de to fichier txt je ne
peux pas décomposer le string

Au fait ça pousse les cactus
0
cs_niblon Messages postés 59 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 20 septembre 2011
11 nov. 2010 à 21:36
Salut ,

voici un exemple de fichier :

Dupont
16 rue de paris
75000
Paris
0677777777
renault
megane
Essence
abs
Vitre electrique av
19/01/2001
19/01/2003

j'enregistre sur mon fichier avec ce code la :
 Private Sub btn_Enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Enregistrer.Click
        SaveFileDialog.FileName = txt_NomClient.Text
        SaveFileDialog.Filter = "Fichiers scg|*.scg"
        SaveFileDialog.InitialDirectory = ""
        If SaveFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim sw As New System.IO.StreamWriter(SaveFileDialog.FileName)
                       sw.WriteLine(txt_nom.Text)
            sw.WriteLine(txt_adresse.Text)
            sw.WriteLine(txt_codepostal.Text)
            sw.WriteLine(txt_ville.Text)
            sw.WriteLine(txt_telephone.Text)
            sw.WriteLine(txt_Marque.Text)
            sw.WriteLine(txt_Model.Text)
            sw.WriteLine(txt_Motorisation.Text)
            sw.WriteLine(txt_datedemiseencirculation.Text)
            sw.WriteLine(txt_datecontroletechnique.Text)
            sw.WriteLine(txt_Prochaincontroletechnique.Text)
                       sw.Flush()
        End If
            End Sub

sinon oui sa pousse calmement mais surement

Merci d'avance
Niblon
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 nov. 2010 à 21:59
Bonsoir

Tu as un fichier pour chaque personne ?
et tous les fichiers se terminent par .scg?
donc tu en as des centaines
pourquoi tu n'enregistre pas les données dans une
b d ?
0
cs_niblon Messages postés 59 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 20 septembre 2011
11 nov. 2010 à 22:09
Bonsoir ,

oui un pour chaque client mais vu que je viens juste d'ouvrir ma boite , je n'ai pas beaucoup de client aussi
oui tout les fichiers ce termine en .scg

Pour la base de donnée c'est pour plus tard deja j'essaie de mieux comprendre le codage et surtout ne parlant anglais je traduit ce que je trouvez donc je mets plus de temps , cela fais 1 ans que je developpe une de mes application je la code quand j'ai du temps de libre et surtout quand j'arrive a trouver des bout de code simpa .(car j'avais deja tester sur une appli avec 4 tables mais je n'ai jamais reussi a faire ce que je voulais j'ai du renoncer pour le moment)

Niblon
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 nov. 2010 à 02:41
Salut

A ta form ajoute un picturebox nommé details
un bouton nommé fermer
 Imports System.IO

Public Class FormNiblon

    Private Structure dataclient
        Public informationclient() As String
    End Structure

    Private labelname() As System.Windows.Forms.Label
    Private labelmessage() As System.Windows.Forms.Label

    Private listclient() As dataclient
    Private myfont As New Font("arial", 12, FontStyle.Bold, GraphicsUnit.Pixel)
    Private listfiles() As String
    Private Sub GetAllFileSCG()
        Dim iter As Integer
        Dim pathdirectory As String
        'pathdirectory : le path du répertoir des fichier scg
        pathdirectory = "E:\ReadFile"
        Dim di As New IO.DirectoryInfo(pathdirectory)
        Dim aryFi As IO.FileInfo() = di.GetFiles("*.scg")
        Dim fi As IO.FileInfo
        iter = 0
        ReDim listfiles(iter)
        For Each fi In aryFi
            ReDim Preserve listfiles(iter)
            listfiles(iter) = fi.FullName
            iter = iter + 1
        Next
    End Sub
    Private Sub FormNiblon_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.AutoScroll = True
        Me.AutoScrollMinSize = New Point(Me.Width - 10, Me.Height - 10)
        GetAllFileSCG()
        GetdataAllFiles()
        initlabels()
        details.BackColor = Color.Beige
        details.Width = 250
        details.Height = 350
        details.Visible = False

        fermer.Visible = False
    End Sub
    Private Sub GetdataAllFiles()
        Dim nfile As Integer
        Dim iter As Integer
        Dim iterinformation As Integer
        ReDim listclient(0)

        For iter = 0 To listfiles.Length - 1
            nfile = FreeFile()
            FileOpen(nfile, listfiles(iter), OpenMode.Input)
            ReDim Preserve listclient(iter)
            iterinformation = 0
            ReDim listclient(iter).informationclient(iterinformation)
            Do While Not EOF(nfile)
                ReDim Preserve listclient(iter).informationclient(iterinformation)
                listclient(iter).informationclient(iterinformation) = LineInput(nfile)
                iterinformation = iterinformation + 1
            Loop
            FileClose(nfile)

        Next
    End Sub

    Private Sub initlabels()
        Dim iter As Byte

        'Prépare le box pour les messages

        ReDim labelname(listclient.Length - 1)
        ReDim labelmessage(listclient.Length - 1)
        For iter = 0 To listclient.Length - 1
            labelname(iter) = New Label
            labelname(iter).Anchor = AnchorStyles.None
            labelname(iter).Tag = CStr(iter)
            labelname(iter).BorderStyle = BorderStyle.Fixed3D
            labelname(iter).Margin = New Windows.Forms.Padding(0)
            labelname(iter).BackColor = Color.Wheat
            labelname(iter).Font = myfont
            labelname(iter).TextAlign = ContentAlignment.BottomLeft
            labelname(iter).ForeColor = Color.Black
            AddHandler labelname(iter).Click, AddressOf labelname_click
            Me.Controls.Add(labelname(iter))
            labelmessage(iter) = New Label
            labelmessage(iter).Anchor = AnchorStyles.None
            labelmessage(iter).Tag = CStr(iter)
            labelmessage(iter).BorderStyle = BorderStyle.Fixed3D
            labelmessage(iter).Margin = New Windows.Forms.Padding(0)
            labelmessage(iter).BackColor = Color.LemonChiffon
            labelmessage(iter).Font = myfont
            labelmessage(iter).TextAlign = ContentAlignment.BottomLeft
            labelmessage(iter).ForeColor = Color.Black
            Me.Controls.Add(labelmessage(iter))
        Next

    End Sub

    Private Sub displaydata()

        Dim g As Graphics = labelmessage(0).CreateGraphics
        Dim s As SizeF
        Dim iter As Integer
        Dim leftx As Integer
        Dim topy As Integer
        Dim njours As String
        leftx = 6
        topy = 6
        
        For iter = 0 To listclient.Length - 1
            labelname(iter).Text = listclient(iter).informationclient(0)
            labelname(iter).Left = leftx
            labelname(iter).Top = topy
            njours = DateDiff(DateInterval.Day, Now, CDate(listclient(iter).informationclient(listclient(iter).informationclient.Length - 1)))
            
            If njours = 0 Then
                labelmessage(iter).Text = "prochain control aujourd'hui"
            Else
                If njours = 1 Then
                    labelmessage(iter).Text = "prochain control demain"
                Else
                    labelmessage(iter).Text = "prochain control dans :" & njours & " jours"
                End If
            End If
            s = g.MeasureString(labelmessage(iter).Text, labelmessage(iter).Font)
            labelmessage(iter).Width = s.Width
            'labelmessage(iter).Text = labelmessage(iter).Text
            labelmessage(iter).Left = labelname(iter).Right + 1
            labelmessage(iter).Top = labelname(iter).Top '+ (labelmessage(iter).PreferredHeight - labelname(iter).PreferredHeight) / 2
            topy = labelmessage(iter).Bottom + 3
            labelmessage(iter).Visible = True
            labelname(iter).Visible = True

        Next
    End Sub
    
    Private Sub me_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        displaydata()
    End Sub

    Private Sub labelname_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim g As Graphics = labelmessage(0).CreateGraphics
        Dim s As SizeF
        Dim labeldetails() As Windows.Forms.Label
        Dim maxwidth As Integer
        Dim h As Integer
        Dim iter As Integer

        ReDim labeldetails(listclient(sender.tag).informationclient.Length - 1)
        details.Controls.Clear()
        h = 0
        maxwidth = 0
        For iter = 0 To listclient(sender.tag).informationclient.Length - 1
            labeldetails(iter) = New Label
            With labeldetails(iter)
                .TextAlign = ContentAlignment.BottomLeft
                .ForeColor = Color.Black
                .BorderStyle = BorderStyle.None
                .BackColor = Color.Transparent
                .Anchor = AnchorStyles.None
                .Font = myfont
                .Text = listclient(sender.tag).informationclient(iter)
            End With
            labeldetails(iter).Left = 1
            If iter = 0 Then
                labeldetails(iter).Top = 1
            Else
                labeldetails(iter).Top = labeldetails(iter - 1).Bottom
            End If
            s = g.MeasureString(labeldetails(iter).Text, labeldetails(iter).Font)
            labeldetails(iter).Width = s.Width + 6
            If s.Width > maxwidth Then
                maxwidth = s.Width + 6
            End If
            h = h + s.Height
            details.Controls.Add(labeldetails(iter))
        Next
        details.Anchor = AnchorStyles.None
        details.Left = labelmessage(sender.tag).Right + 10
        details.Top = 6
        fermer.Top = details.Height - fermer.Height
        fermer.Left = details.Left + 10
        fermer.Visible = True
        details.Visible = True
    End Sub
    
    
    
    Private Sub fermer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles fermer.Click
        details.Visible = False
        fermer.Visible = False
    End Sub
End Class
0
cs_niblon Messages postés 59 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 20 septembre 2011
15 nov. 2010 à 01:25
Bonsoir ShayW

merci pour ce code mais j'ai une erreur lors de l'execution de l'application

voici le code je n'y ai presque pas toucher :
Imports System.IO

Public Class FormNiblon

    Private Structure dataclient
        Public informationclient() As String
    End Structure

    Private labelname() As System.Windows.Forms.Label
    Private labelmessage() As System.Windows.Forms.Label

    Private listclient() As dataclient
    Private myfont As New Font("arial", 12, FontStyle.Bold, GraphicsUnit.Pixel)
    Private listfiles() As String
    Private Sub GetAllFileSCG()
        Dim iter As Integer
        Dim pathdirectory As String
        'pathdirectory : le path du répertoir des fichier scg
        pathdirectory = "E:\test"
        Dim di As New IO.DirectoryInfo(pathdirectory)
        Dim aryFi As IO.FileInfo() = di.GetFiles("*.scg")
        Dim fi As IO.FileInfo
        iter = 0
        ReDim listfiles(iter)
        For Each fi In aryFi
            ReDim Preserve listfiles(iter)
            listfiles(iter) = fi.FullName
            iter = iter + 1
        Next
    End Sub
    Private Sub FormNiblon_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.AutoScroll = True
        Me.AutoScrollMinSize = New Point(Me.Width - 10, Me.Height - 10)
        GetAllFileSCG()
        GetdataAllFiles()
        initlabels()
        details.BackColor = Color.Beige
        details.Width = 250
        details.Height = 350
        details.Visible = False

        fermer.Visible = False
    End Sub
    Private Sub GetdataAllFiles()
        Dim nfile As Integer
        Dim iter As Integer
        Dim iterinformation As Integer
        ReDim listclient(0)

        For iter = 0 To listfiles.Length - 1
            nfile = FreeFile()
            FileOpen(nfile, listfiles(iter), OpenMode.Input)
            ReDim Preserve listclient(iter)
            iterinformation = 0
            ReDim listclient(iter).informationclient(iterinformation)
            Do While Not EOF(nfile)
                ReDim Preserve listclient(iter).informationclient(iterinformation)
                listclient(iter).informationclient(iterinformation) = LineInput(nfile)
                iterinformation = iterinformation + 1
            Loop
            FileClose(nfile)

        Next
    End Sub
    Private Sub initlabels()
        Dim iter As Byte

        'Prépare le box pour les messages

        ReDim labelname(listclient.Length - 1)
        ReDim labelmessage(listclient.Length - 1)
        For iter = 0 To listclient.Length - 1
            labelname(iter) = New Label
            labelname(iter).Anchor = AnchorStyles.None
            labelname(iter).Tag = CStr(iter)
            labelname(iter).BorderStyle = BorderStyle.Fixed3D
            labelname(iter).Margin = New Windows.Forms.Padding(0)
            labelname(iter).BackColor = Color.Wheat
            labelname(iter).Font = myfont
            labelname(iter).TextAlign = ContentAlignment.BottomLeft
            labelname(iter).ForeColor = Color.Black
            AddHandler labelname(iter).Click, AddressOf labelname_click
            Me.Controls.Add(labelname(iter))
            labelmessage(iter) = New Label
            labelmessage(iter).Anchor = AnchorStyles.None
            labelmessage(iter).Tag = CStr(iter)
            labelmessage(iter).BorderStyle = BorderStyle.Fixed3D
            labelmessage(iter).Margin = New Windows.Forms.Padding(0)
            labelmessage(iter).BackColor = Color.LemonChiffon
            labelmessage(iter).Font = myfont
            labelmessage(iter).TextAlign = ContentAlignment.BottomLeft
            labelmessage(iter).ForeColor = Color.Black
            Me.Controls.Add(labelmessage(iter))
        Next

    End Sub
    Private Sub displaydata()

        Dim g As Graphics = labelmessage(0).CreateGraphics
        Dim s As SizeF
        Dim iter As Integer
        Dim leftx As Integer
        Dim topy As Integer
        Dim njours As String
        leftx = 6
        topy = 6

        For iter = 0 To listclient.Length - 1
            labelname(iter).Text = listclient(iter).informationclient(0)
            labelname(iter).Left = leftx
            labelname(iter).Top = topy
            njours = DateDiff(DateInterval.Day, Now, CDate(listclient(iter).informationclient(listclient(iter).informationclient.Length - 1)))

            If njours = 0 Then
                labelmessage(iter).Text = "prochain controle technique aujourd'hui"
            Else
                If njours = 1 Then
                    labelmessage(iter).Text = "prochain controle technique demain"
                Else
                    labelmessage(iter).Text = "prochain controle technique dans :" & njours & " jours"
                End If
            End If
            s = g.MeasureString(labelmessage(iter).Text, labelmessage(iter).Font)
            labelmessage(iter).Width = s.Width
            'labelmessage(iter).Text = labelmessage(iter).Text
            labelmessage(iter).Left = labelname(iter).Right + 1
            labelmessage(iter).Top = labelname(iter).Top '+ (labelmessage(iter).PreferredHeight - labelname(iter).PreferredHeight) / 2
            topy = labelmessage(iter).Bottom + 3
            labelmessage(iter).Visible = True
            labelname(iter).Visible = True

        Next
    End Sub
    Private Sub me_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        displaydata()
    End Sub
    Private Sub labelname_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim g As Graphics = labelmessage(0).CreateGraphics
        Dim s As SizeF
        Dim labeldetails() As Windows.Forms.Label
        Dim maxwidth As Integer
        Dim h As Integer
        Dim iter As Integer

        ReDim labeldetails(listclient(sender.tag).informationclient.Length - 1)
        details.Controls.Clear()
        h = 0
        maxwidth = 0
        For iter = 0 To listclient(sender.tag).informationclient.Length - 1
            labeldetails(iter) = New Label
            With labeldetails(iter)
                .TextAlign = ContentAlignment.BottomLeft
                .ForeColor = Color.Black
                .BorderStyle = BorderStyle.None
                .BackColor = Color.Transparent
                .Anchor = AnchorStyles.None
                .Font = myfont
                .Text = listclient(sender.tag).informationclient(iter)
            End With
            labeldetails(iter).Left = 1
            If iter = 0 Then
                labeldetails(iter).Top = 1
            Else
                labeldetails(iter).Top = labeldetails(iter - 1).Bottom
            End If
            s = g.MeasureString(labeldetails(iter).Text, labeldetails(iter).Font)
            labeldetails(iter).Width = s.Width + 6
            If s.Width > maxwidth Then
                maxwidth = s.Width + 6
            End If
            h = h + s.Height
            details.Controls.Add(labeldetails(iter))
        Next
        details.Anchor = AnchorStyles.None
        details.Left = labelmessage(sender.tag).Right + 10
        details.Top = 6
        fermer.Top = details.Height - fermer.Height
        fermer.Left = details.Left + 10
        fermer.Visible = True
        details.Visible = True
    End Sub
    Private Sub EnregistrerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EnregistrerToolStripMenuItem.Click
        SaveFileDialog.FileName = txt_NomClient.Text
        SaveFileDialog.Filter = "Fichiers scg|*.scg"
        SaveFileDialog.InitialDirectory = "E:\test"
        If SaveFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim sw As New System.IO.StreamWriter(SaveFileDialog.FileName)
            sw.WriteLine(txt_nom.Text)
            sw.WriteLine(txt_adresse.Text)
            sw.WriteLine(txt_codepostal.Text)
            sw.WriteLine(txt_ville.Text)
            sw.WriteLine(txt_telephone.Text)
            sw.WriteLine(txt_marque.Text)
            sw.WriteLine(txt_model.Text)
            sw.WriteLine(txt_motorisation.Text)
            sw.WriteLine(txt_datemiseencirculation.Text)
            sw.WriteLine(txt_datedecontroletechnique.Text)
            sw.WriteLine(txt_dateprochaincontroetechnique.Text)
            sw.Flush()
        End If
    End Sub
    Private Sub OuvrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OuvrirToolStripMenuItem.Click
        OpenFileDialog.FileName = txt_NomClient.Text
        OpenFileDialog.Filter = "Fichiers scg|*.scg"
        OpenFileDialog.InitialDirectory = "E:\test"
        If OpenFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim sr As New System.IO.StreamReader(OpenFileDialog.FileName)
            txt_nom.Text = sr.ReadLine
            txt_adresse.Text = sr.ReadLine
            txt_codepostal.Text = sr.ReadLine
            txt_ville.Text = sr.ReadLine
            txt_telephone.Text = sr.ReadLine
            txt_marque.Text = sr.ReadLine
            txt_model.Text = sr.ReadLine
            txt_motorisation.Text = sr.ReadLine
            txt_datemiseencirculation.Text = sr.ReadLine
            txt_datedecontroletechnique.Text = sr.ReadLine
            txt_dateprochaincontroetechnique.Text = sr.ReadLine
            '  sr.Flush()
        End If
    End Sub
    Private Sub fermer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles fermer.Click
        details.Visible = False
        fermer.Visible = False
    End Sub


End Class



l'erreur est la suivante : la reference d'objet n'est pas definie a une instance d'un objet.
sur cette ligne la
 Dim g As Graphics = labelmessage(0).CreateGraphics



A tu une solution ou j'ai fais un louper quelque pars ? je suis partis d'un nouveau projet j'y ai intergrer les 12 label et 12 textbox, un bouton fermer et un picturebox nomme details.

Merci d'avance
Niblon
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 nov. 2010 à 10:43
Salut
Oui j'ai compris rien de grave
Il faut effacer les 12 labels et les 12 textbox
de ta form
Ta form doit contenir seulement
un picturebox nommé detail (e sans accent)
et un command_button nommé fermer

tous les autres controls sont chargés en realtime
pendant l'execution du programme.
Si tout marche bien tu dois obtenir la liste
des clients et à coté l'annonce du prochain control
Si tu cliques sur le nom du client un picturebox
doit s'ouvrir avec tous les coordonnés du client

je te conseille vivement de faire un BD
ou meme tu pourrais conserver toutes les données avec l'excel
la méthode d'ouvrir à chaque fois un nouveau fichier pour un nouveau client c'est risqué. Pour sauvgarder le fichier tu lui donnes un nom il faut vérifier si le nom n'existe pas déja si
tu confirme le nouveau fichier va etre etre à la
place de celui qui existe
comment fais tu pour mettre à jour les fichiers?
par ex changer l'addresse d'un client ?
0
Rejoignez-nous