Situation de galère. Aidez-moi, Je suis en train de m'arracher les cheveux

Vivolenantais Messages postés 48 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 octobre 2005 - 30 déc. 2004 à 00:08
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 30 déc. 2004 à 18:20
Ca fait 2 jours que je pose des questions aux quelles on me donne des réponses qui me satisfont. Mais là je suis vraiment tomber sur un gros truc. Pour essayer de m'aider, je dois vous expliquer le contexte.
J'ai un projet dont le thème est "la réservation de siège d'un théâtre". Sur une première feuille est présentée le théâtre avec les places(les fameux label). Sur une deuxième est présentée la réservation d'une place avec le numéro de la place, le nom et le téléphone et un bouton "réserver". Le fameux lien est que lorsqu'on clique sur une place, la deuxième feuille s'affiche.
Mon problème se situeau niveau du code du bonton "Réserver". Je vous met ci-dessous exactement ce que j'ai mis pour "Réserver".

Private Sub cmdReservation_Click()
i = 0
Open App.Path & "\Reserv.txt" For Output As #1
Do While i < 48
Write #1, Val(lblPlace(i).Caption), txtNom(i).Text, Val(txtTel(i).Text)
i = i + 1
Loop
Close #1
End Sub

En lançant l'exécution, c a dire en cliquant sur une place puis en rentrant le nom et le tél, quand je clique sur "réserver", ca me surligne en jaune : Private Sub cmdReservation_Click()
et en bleu : lblPlace(i).Caption
et ca mécrit comme message d'erreur : Nombre d'arguments incorrects ou affectation de propriété incorrecte.

J'espère que j'ai réussi à me faire comprendre. Merci de votre aide.

13 réponses

DJsaadi95 Messages postés 21 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 9 mai 2005
30 déc. 2004 à 00:47
Essaye sa

Write #1, Val(lblPlace.Caption (i)), txtNom.Text (i), Val(txtTel.Text(i))
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 00:52
La boucle Do...Loop ne s'impose pas ici, avec une boucle For...Next tu y verras plus clair.
d'autre part si les Labels sont sur la première feuille et le bouton réserver sur la deuxième feuille, normal qu'ils soient pas reconnus.
remplace Form1 par le nom de ta feuille.

Private Sub cmdReservation_Click()
Dim i As Integer
Open App.Path & "\Reserv.txt" For Output As #1
For i = 0 to 47
Write #1, Val(Form1.lblPlace(i).Caption), Form1.txtNom(i).Text, Val(Form1.txtTel(i).Text)
Next
Close #1
End Sub


Daniel
0
Vivolenantais Messages postés 48 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 octobre 2005
30 déc. 2004 à 10:33
Maintenant, il me surligne le "txtNom" en bleu avec le message d'erreur. En fait, le bouton "Réserver" qui est sur la page 2, doit réserver le nom, le téléphone et la place qui sont aussi sur la page 2. Sachant que pour arriver sur cette page 2, je dois cliquer sur un label (une place), de la page 1.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 12:14
faut mettre le nom de la Forme correspondante, Form1 si c'est sur la première feuille, Form2 si c'est sur la deuxième feuille.
si c'est sur la même feuille que le bouton tu peux mettre soit le nom de la Forme, soit Me, soit rien.

Write #1, Val(Form1.lblPlace(i).Caption), Form2.txtNom(i).Text, Val(Form2.txtTel(i).Text)

Write #1, Val(Form1.lblPlace(i).Caption), Me.txtNom(i).Text, Val(Me.txtTel(i).Text)

Write #1, Val(Form1.lblPlace(i).Caption), txtNom(i).Text, Val(txtTel(i).Text)

Daniel
0

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

Posez votre question
Vivolenantais Messages postés 48 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 octobre 2005
30 déc. 2004 à 12:48
Ca marche mais j'ai été obligé d'enlevé les "i". Maintenant au lieu de me mettre l'information d'une réservation (place, nom, tél) dans le bloc notes, c a dire pour une seule place, ça m'affiche la même information mais pour les 48 places, alors que j'en veux qu'une. Et de plus, la fenêtre ne se ferme pas après. Comment faire ?

Voici mon code :

Private Sub cmdReservation_Click()
Open App.Path & "\Reserv.txt" For Output As #1
For i = 0 To 47
Print #1, Val(frmReservation.lblSiege(i).Caption), Me.txtNom.Text, Val(Me.txtTel.Text)
Next
Close #1
End Sub

Merci
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 13:03
j'ai pas tout compris où sont ces informations: place, nom, téléphone. la place doit corespondre au numéro de Label sur lequel on clique, mais où sont le nom et le numéro de téléphone.
parce que là tu écris le fichier à chaque fois que l'on clique avec le même nom et le numéro de téléphone ????
quand on clique sur un Label, tu fais apparaître la deuxième forme avec Form2.Show et ensuite tu la caches avec Form2.Hide.
à la fin pas oublier de décharger avec Unload Form2.

Daniel
0
Vivolenantais Messages postés 48 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 octobre 2005
30 déc. 2004 à 13:44
Pour la fermeture ok.
Sur une feuille, il y a 48 labels qui représentent 48 places à réserver.
Sur une deuxième feuille, il y a le numéro de la place qui s'affiche, et on doit rentrer les informations sur le client qui réserve, c a dire son nom et son téléphone et le bouton "Réserver".
Et quand je clique sur "Réserver", les informations rentrés doivent aller dans un fichiers .txt.
Le problème est que lorsque je clique sur "Réserver", au lieu de me mettre dans .txt : 4, "Martinez", 014254240254024
Ca me met : 1, "Martinez", 014254240254024
2, "Martinez", 014254240254024
jusqu'a 48

et voici comment je l'ai codée :

Private Sub cmdReservation_Click()
Open App.Path & "\Reserv.txt" For Output As #1
For i = 0 To 47
Print #1, Val(frmReservation.lblSiege(i).Caption), Me.txtNom.Text, Val(Me.txtTel.Text)
Next
Close #1
End Sub
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 14:44
c 'est parce que la méthode n'est pas bonne, il faut que tu réserve le nom et le numéro de téléphone pour chaque personne et n'écrire le fichier qu'à la fin.

----- Forme principale -----
Option Explicit

Dim Nom()   As String
Dim Tel()   As String

Private Sub Form_Load()
    ReDim Nom(47)
    ReDim Tel(47)
End Sub

Private Sub Lblsiege_Click(Index As Integer)
    Form2.Show 1
    Nom(Index) = Form2.txtNom
    Tel(Index) = Form2.txtTel
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Dim i As Integer
    Open App.Path & "\Reserv.txt" For Output As #1
    For i = 0 To 47
        Print #1, Val(lblsiege(i).Caption), Nom(i), Val(Tel(i))
        Next
    Close #1
End Sub


----- Forme secondaire -----
Option Explicit

Private Sub cmdReservation_Click()
    Me.Hide
End Sub


Daniel
0
Vivolenantais Messages postés 48 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 octobre 2005
30 déc. 2004 à 15:23
Et est-ce que ta méthode marche aussi avec un tableau dans le quel on met un type et donc des variables. Si oui, tu peux me donner le code que tu penses être bon, parceque si possible je dois le faire avec un tableau. J'avais commencé.
Le tableau, je l'ai défini dans le 1er form. Mais je sais pas si c'est bon, sachant que mon code est :

Private Type Siege
Place As Integer
Nom As String
Tel As Integer
End Type
Dim siTabSiege(0 To 47) As Siege

Et que la place, le nom et le tel se trouve dans le 2e form
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 15:37
ce que je comprends pas c'est à quoi correspond les 48 Labels, est-ce que ça correspond à la place ?

Private Sub Lblsiege_Click(Index As Integer)
Form2.Show 1
siTabSiege(Index).Place = Form2.txtPlace
siTabSiege(Index).Nom = Form2.txtNom
siTabSiege(Index).Tel = Form2.txtTel
End Sub

Daniel
0
Vivolenantais Messages postés 48 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 12 octobre 2005
30 déc. 2004 à 15:45
Les 48 labels correspondent à 48 places. Donc j'ai fait marché avec des index comme tu t'en doutes, c a dire de 0 à 47. Je vais voir si ça marche. Si j'ai un problème, je renverrai un message.
Merci
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
30 déc. 2004 à 18:17
A Gobillot créateur d'application en ligne
hip hip hourra
madbob
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 18:20
quoi donc ?
pourquoi tu met encore les tables txtPlace(), txtNom(), txtTel()
ça fait double emploi avec siTabSiege...

Daniel
0
Rejoignez-nous