Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

(re-debutant) usage de MonthCalendar et fichier

12 réponses
Avatar
alainL
Bonjour,
J'ai joué un peu "dans le temps" avec VB4 mais j'ai tout oublié et VB
Express me déboussole encore plus !
J'ai sur une feuille MonthCalendar, et deux labels.
Je voudrais récupérer le nom de la variable date selected afin de la réduire
à mmjj . (au lancement et après changement)
Je sais bricoler ds une chaine mais où trouver le nom de celle utilisée et
où saisir le code ?

Ensuite, avec ma valeur mmjj, je dois aller chercher des données
correspondantes dans un fichier texte et les afficher ds les labels. Ca, ça
devrait aller... une fois parti !
Merci pour le coup de pouce.
alainL

10 réponses

1 2
Avatar
Jean-Noël
Bonjour Alain,
je bricole aussi en VB6, et j'essaie en Dotnet.
Ci-dessous un exemple que j'ai fait avec le controle MonthView dans VB6 (Je
ne sais pas si c'est le même, mais ça devrait ressembler)

Dim SepDate as String = séparateur de date définit dans ton système : un .
ou un /

'Positionne le calendrier sur la date que tu donnes (Ici Date courante du
système)
MonthView.Value = Date

... Logique d'attente sélection d'une date par l'utilisateur

'Récupère la date sélectionnée par l'utilsateur dans le MonthView
DateRecuperee = CStr(MonthView.Month) & SepDate & CStr(MonthView.Day)

J'espère que ça t'aide.
Sinon dommage.

"alainL" a écrit dans le message de news:
474c3cb2$0$21151$
Bonjour,
J'ai joué un peu "dans le temps" avec VB4 mais j'ai tout oublié et VB
Express me déboussole encore plus !
J'ai sur une feuille MonthCalendar, et deux labels.
Je voudrais récupérer le nom de la variable date selected afin de la
réduire à mmjj . (au lancement et après changement)
Je sais bricoler ds une chaine mais où trouver le nom de celle utilisée et
où saisir le code ?

Ensuite, avec ma valeur mmjj, je dois aller chercher des données
correspondantes dans un fichier texte et les afficher ds les labels. Ca,
ça devrait aller... une fois parti !
Merci pour le coup de pouce.
alainL


Avatar
Gilles TOURREAU
Le Tue, 27 Nov 2007 16:50:11 +0100, alainL a
écrit:

Bonjour,
J'ai joué un peu "dans le temps" avec VB4 mais j'ai tout oublié et VB
Express me déboussole encore plus !
J'ai sur une feuille MonthCalendar, et deux labels.



Ok

Je voudrais récupérer le nom de la variable date selected afin de la
réduire à mmjj . (au lancement et après changement)



Votre question n'est pas très clair... Pouvez vous être plus explicit ?
C'est quoi pour vous "le nom de la variable date selected" ?
C'est quoi pour vois "réduire à mmjj"

Je sais bricoler ds une chaine mais où trouver le nom de celle utilisée
et où saisir le code ?



........... ????


Ensuite, avec ma valeur mmjj, je dois aller chercher des données
correspondantes dans un fichier texte et les afficher ds les labels. Ca,
ça devrait aller... une fois parti !
Merci pour le coup de pouce.
alainL



Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
alainL
"Gilles TOURREAU" a écrit dans le message de groupe
de discussion :
.............
Je voudrais récupérer le nom de la variable date selected afin de la
réduire à mmjj . (au lancement et après changement)



Votre question n'est pas très claire... Pouvez vous être plus explicit ?
C'est quoi pour vous "le nom de la variable date selected" ?
C'est quoi pour vois "réduire à mmjj"



Lorsque s'affiche le calendrier du mois, une date est sélectionnée (par
défaut, celle du jour, mais on peut changer avec la souris)
Ca doit bien donner quelque part un code du style: "date/29/2007"

Je sais bricoler ds une chaine (en VB4, mais ça devrait aller) mais où
trouver le nom de celle utilisée et où saisir le code ?


........... ????



En récupérant cette chaine, je peux convertir en un "index" qui donnera
1129....
Mais ce bout de code (conversion, ouverture fichier recherche lecture
écriture.. ) je le tape où ?

Public Class Form1
Ici ?
Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Ici ?
End Sub



Ensuite, avec ma valeur mmjj, je dois aller chercher des données
correspondantes dans un fichier texte et les afficher ds les labels.





Dans un fichier texte indépendant déjà construit, je cherche la valeur 1129
dans la première colonne... je lis les données dans les deux ou trois autres
colonnes de la ligne... et j'affiche dans mes labels "Saint Truc" et
"anniversaire de mon petit fils" par exemple.....


Merci d'avoir pris en compte mon SOS !

alain
Avatar
alainL
"alainL" a écrit dans le message de groupe de
discussion : 474f2563$0$21144$


"Gilles TOURREAU" a écrit dans le message de
groupe de discussion :
.............
Je voudrais récupérer le nom de la variable date selected afin de la
réduire à mmjj . (au lancement et après changement)



Votre question n'est pas très claire... Pouvez vous être plus explicit ?





En fait, je voudrais refaire un prg que j'avais bidouillé en VB4 il y a
longtemps et qui, du jour au lendemain, n'a plus tourné sur mon XP2 (alors
qu'il tourne tjs sur un autre PC lui aussi sous XP2)
Je n'ai pas compris : le message "error loading from file" n'est pas
explicite !
J'ai retrouvé le code (fichier.frm) du vieux prg mais je ne sais pas le
récupérer avec VBstudio2005.
alain
Avatar
Gilles TOURREAU
Le Thu, 29 Nov 2007 21:47:28 +0100, alainL a
écrit:



"Gilles TOURREAU" a écrit dans le message de
groupe de discussion :
.............
Je voudrais récupérer le nom de la variable date selected afin de la
réduire à mmjj . (au lancement et après changement)



Votre question n'est pas très claire... Pouvez vous être plus explicit ?
C'est quoi pour vous "le nom de la variable date selected" ?
C'est quoi pour vois "réduire à mmjj"



Lorsque s'affiche le calendrier du mois, une date est sélectionnée (par
défaut, celle du jour, mais on peut changer avec la souris)
Ca doit bien donner quelque part un code du style: "date/29/2007"



Oui la propriété SelectionStart et SelectionEnd vous donne l'intervalle
sélectionné dans le MonthCalendar.
Si il y a qu'une seule date sélectionnée SelectionStart = SelectionEnd


Je sais bricoler ds une chaine (en VB4, mais ça devrait aller) mais où
trouver le nom de celle utilisée et où saisir le code ?


........... ????



En récupérant cette chaine, je peux convertir en un "index" qui donnera
1129....



SelectionStart et SelectionEnd renvoi des types DateTime... A partir de çà
vous pouvez extraire ce que vous voulez :
SelectionStart.Hour
SelectionStart.Minute
SelectionStart.Day
....

Mais ce bout de code (conversion, ouverture fichier recherche lecture
écriture.. ) je le tape où ?

Public Class Form1
Ici ?
Private Sub DateTimePicker1_ValueChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs)
Ici ?
End Sub



Vous parlez de quel contrôle en fait ? De MonthCalendar ou de
DateTimePicker ?

Dans le cas du MonthCalendar il faut utiliser l'événement DateChanged :

Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.DateRangeEventArgs)

End Sub

Dans cette méthode vous pouvez récuperer les 2 dates de l'intervalle
sélectionné via e.Start et e.End ou alors directement via les propriétés
SelectionStart et SelectionEnd de votre contrôle...




Ensuite, avec ma valeur mmjj, je dois aller chercher des données
correspondantes dans un fichier texte et les afficher ds les labels.





Dans un fichier texte indépendant déjà construit, je cherche la valeur
1129 dans la première colonne... je lis les données dans les deux ou
trois autres colonnes de la ligne... et j'affiche dans mes labels "Saint
Truc" et "anniversaire de mon petit fils" par exemple.....



Quel est la structure de votre fichier texte ? Est-ce que les "colonnes"
sont séparées par un ";", un espace,... ? Est-ce que ce sont des colonnes
de taille fixe ?



Merci d'avoir pris en compte mon SOS !

alain



Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
alainL
"Gilles TOURREAU" a écrit dans le message de groupe
de discussion :
Le Thu, 29 Nov 2007 21:47:28 +0100, alainL a
écrit:

.........................................


Vous parlez de quel contrôle en fait ? De MonthCalendar ou de
DateTimePicker ?

.............



L'objet ouvert sur ma page est MonthCalendar.
J'ai tapé ça:
Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object, ByVal
e As System.Windows.Forms.DateRangeEventArgs) Handles
MonthCalendar1.DateChanged
MoisChoisi = MonthCalendar1.SelectionStart.Month
JourChoisi = MonthCalendar1.SelectionStart.Day
RichTextBox1.Text = JourChoisi
End Sub

déclaré MoisChoisi et JourChoisi as string... (public new components)

mais je ne récupère rien sauf message d'erreur.

Ensuite, avec ma valeur mmjj, je dois aller chercher des données
correspondantes dans un fichier texte et les afficher ds les labels.





Dans un fichier texte indépendant déjà construit, je cherche la valeur
1129 dans la première colonne... je lis les données dans les deux ou
trois autres colonnes de la ligne... et j'affiche dans mes labels "Saint
Truc" et "anniversaire de mon petit fils" par exemple.....



Quel est la structure de votre fichier texte ? Est-ce que les "colonnes"
sont séparées par un ";", un espace,... ? Est-ce que ce sont des colonnes
de taille fixe ?



Fichier txt, séparateur : la virgule , colonnes de largeur non définie ,
Utilisé en VB4: avec :
fic = FreeFile
fichier = rep & "Fetes.txt"
Open fichier For Input As fic
Do While Not EOF(fic)
Input #fic, jr, saint, fete, jours, note1, note2

Alain
Avatar
alainL
"Gilles TOURREAU" a écrit dans le message de groupe
de discussion :
Le Fri, 30 Nov 2007 17:15:44 +0100, alainL a
écrit:


....................>
Le code suivant fonctionne sans problème chez moi :



Merci, c'est super ! J'ai entré ça :
_______________________________________________________________________________________________________________________________________
Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object, ByVal
e As System.Windows.Forms.DateRangeEventArgs) Handles
MonthCalendar1.DateChanged
Dim MoisChoisi As String
Dim JourChoisi As String

MoisChoisi = MonthCalendar1.SelectionStart.Month
If Len(MoisChoisi) = 1 Then
MoisChoisi = "0" & MoisChoisi
End If

JourChoisi = MonthCalendar1.SelectionStart.Day
If Len(JourChoisi) = 1 Then
JourChoisi = "0" & JourChoisi
End If

TextBox1.Text = "Numero du jour : " & MoisChoisi & JourChoisi

End Sub
_____________________________________________________________________________________________________________________________________
Impeccable.... mais comment faire pour que le jour sélectionné à l'ouverture
(aujourd'hui donc) soit utilisé lui aussi. Car là, la procédure ne se
déclenche que si on "Change" calendar.

Je vais maintenant tenter les accès au fichier de données...


Cordialement

--
Alain L
Mon village en Haute-Soule (rando, pêche, flore...): http://jarailet.club.fr
Carnet de voyages: http://jarailet.club.fr/Randobal
Avatar
Gilles TOURREAU
Le Fri, 30 Nov 2007 17:15:44 +0100, alainL a
écrit:



"Gilles TOURREAU" a écrit dans le message de
groupe de discussion :
Le Thu, 29 Nov 2007 21:47:28 +0100, alainL
a écrit:

.........................................


Vous parlez de quel contrôle en fait ? De MonthCalendar ou de
DateTimePicker ?

.............



L'objet ouvert sur ma page est MonthCalendar.
J'ai tapé ça:
Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles
MonthCalendar1.DateChanged
MoisChoisi = MonthCalendar1.SelectionStart.Month
JourChoisi = MonthCalendar1.SelectionStart.Day
RichTextBox1.Text = JourChoisi
End Sub

déclaré MoisChoisi et JourChoisi as string... (public new components)

mais je ne récupère rien sauf message d'erreur.



Pouvez préciser le message d'erreur ?

Le code suivant fonctionne sans problème chez moi :

Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles
MonthCalendar1.DateChanged
Dim MoisChoisi As String
Dim JourChoisi As String

MoisChoisi = MonthCalendar1.SelectionStart.Month
JourChoisi = MonthCalendar1.SelectionStart.Day
RichTextBox1.Text = JourChoisi
End Sub


Ensuite, avec ma valeur mmjj, je dois aller chercher des données
correspondantes dans un fichier texte et les afficher ds les labels.





Dans un fichier texte indépendant déjà construit, je cherche la valeur
1129 dans la première colonne... je lis les données dans les deux ou
trois autres colonnes de la ligne... et j'affiche dans mes labels
"Saint Truc" et "anniversaire de mon petit fils" par exemple.....



Quel est la structure de votre fichier texte ? Est-ce que les
"colonnes" sont séparées par un ";", un espace,... ? Est-ce que ce sont
des colonnes de taille fixe ?



Fichier txt, séparateur : la virgule , colonnes de largeur non définie ,
Utilisé en VB4: avec :
fic = FreeFile
fichier = rep & "Fetes.txt"
Open fichier For Input As fic
Do While Not EOF(fic)
Input #fic, jr, saint, fete, jours, note1, note2



Pas de problème :

Mettre :
Imports System.IO tout en haut de votre fichier source VB

et utilisez le code suivant :

Using sr As StreamReader = New StreamReader("C:MonFichier.txt")
Dim ligne As String
Dim tab() As String

'Lire la première ligne
ligne = sr.ReadLine()

'Tantque ligne différent de null, cad tantqu'il y a quelque chose à
lire
While ligne <> Nothing

'récupérer un tableau de toutes les sous-chaines séparées par une
virgule
tab = ligne.Split(",")

'utiliser tab(0) pour la 1ère colonne, tab(1) pour la seconde...etc
... = tab(0)
... = tab(1)
...

'Lire une autre ligne
ligne = sr.ReadLine()
End While

End Using


Alain



Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Gilles TOURREAU
Le Fri, 30 Nov 2007 21:07:58 +0100, alainL a
écrit:



"Gilles TOURREAU" a écrit dans le message de
groupe de discussion :
Le Fri, 30 Nov 2007 17:15:44 +0100, alainL
a écrit:


....................>
Le code suivant fonctionne sans problème chez moi :



Merci, c'est super ! J'ai entré ça :
_______________________________________________________________________________________________________________________________________
Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles
MonthCalendar1.DateChanged
Dim MoisChoisi As String
Dim JourChoisi As String

MoisChoisi = MonthCalendar1.SelectionStart.Month
If Len(MoisChoisi) = 1 Then
MoisChoisi = "0" & MoisChoisi
End If

JourChoisi = MonthCalendar1.SelectionStart.Day
If Len(JourChoisi) = 1 Then
JourChoisi = "0" & JourChoisi
End If

TextBox1.Text = "Numero du jour : " & MoisChoisi & JourChoisi

End Sub
_____________________________________________________________________________________________________________________________________
Impeccable.... mais comment faire pour que le jour sélectionné à
l'ouverture (aujourd'hui donc) soit utilisé lui aussi. Car là, la
procédure ne se déclenche que si on "Change" calendar.

Je vais maintenant tenter les accès au fichier de données...


Cordialement




Le plus simple est de mettre, tout votre code dans une fonction :

Private Sub Rafraichir()

Dim MoisChoisi As string
....
....
TextBox1.Text = "Numero du jour : " & MoisChoisi & JourChoisi

End Sub

et dans DateChanged vous appelez cette fonction :
Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles
MonthCalendar1.DateChanged
Rafraichir()
End Sub

Et vous traiter l'événement Load de la Form et vous ajoutez aussi un appel
un autre appel à cette fonction

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
alainL
"Gilles TOURREAU" a écrit dans le message de groupe
de discussion :
Le Fri, 30 Nov 2007 21:07:58 +0100, alainL a
écrit:


et dans DateChanged vous appelez cette fonction :
Private Sub MonthCalendar1_DateChanged(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.DateRangeEventArgs) Handles
MonthCalendar1.DateChanged
Rafraichir()
End Sub

Et vous traiter l'événement Load de la Form et vous ajoutez aussi un appel
un autre appel à cette fonction




Merci, merci, j'avance ! Lecture du fichier et sortie des données voulues
OK :-))))
Il va me rester à introduire la recherche de la date de Pâques .. et
l'affichage modifiable des notes du jour.

Mais comment traiter Form1_Load ? J'ai essayé ça mais c'est pas bon :
Private Sub Form1_Load ()
Rafraichir()
End sub

cordialement
alain
1 2