Declaration d'un tableau

cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008 - 13 août 2005 à 19:09
cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008 - 15 août 2005 à 10:34
Bonjour à tous, <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />





je débute en VB , dans mon application il y a deux feuillets je déclare mon tableau a trois dimensions par l’instruction « DIM » dans ma première feuille quand je passe dans ma deuxième feuilles toutes mes données repasse à zéro voulez-vous me dire comment qu’on fait pour garder les données de la première feuille avec un exemple ?





Merci d’avance

Alain

16 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
13 août 2005 à 19:28
Salut,
Si tu veux que tes variables soient connues dans tout ton projet, déclare-les en Public dans un module.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
13 août 2005 à 19:32
Ou alors, tu les déclares en Public au niveau général de ta form et chaque fis que tu voudras les utiliser, il faudra les préfixer avec le nom de leur form container :

dans form1 :
Public mavar as integer

dans form2
msgbox form1.mavar

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
13 août 2005 à 20:06
Public pour un tableau dans une forme ça marche pas.

donc module obligatoire.

Daniel
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
13 août 2005 à 21:32
Exact en vb6 Daniel.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0

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

Posez votre question
cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008
13 août 2005 à 22:47
Mon dim est déclaré en général mais ça ne marche pas


<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


Ma déclaration


Dim Tableau(0 To 1, 0 To 1, 0 To 60) As String


un exemple S.V.P

Merci d’avance

Alain
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
13 août 2005 à 22:51
dans un module:

Public Tableau() As String



dans la Form_Load principale

Redim Tableau(1, 1, 60)




Daniel
0
cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008
13 août 2005 à 23:05
Je vient d’essayer ça ne marche pas


<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


Sa me mais ça

Merci d’avance

Alain
0
cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008
13 août 2005 à 23:12
mes module son en Private
Ça avoir une importance ?

Merci d’avance

Alain
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
13 août 2005 à 23:37
un module peut pas être en private

c'est les données, les fonctions ou les Sub qui sont déclarées private ou Public
pour
être disponible pour toutes les formes il faut que le tableau soit
déclaré en public sinon il sera disponible seulement dans le module.




Daniel
0
cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008
14 août 2005 à 10:11
bonjour Daniel,Je débute en VB 6 édition professionnelle, Mais j’ai dix ans de quick basic 4.5 sous MS-DOS<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />




Les déclarations ne se font pas manière dans VB pouvez-vous me donnée un exemple ,Sinon ou je peut trouve ça ?





Merci d’avance

Alain
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 août 2005 à 10:20
il y a toutes les sources pour avoir des exemples.

montre ton code où tu as déclaré ton tableau (dans un module)

c'est simple il suffit de remplacer <strike>Dim</strike> ou <strike>Private</strike> par Public.

Daniel
0
cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008
14 août 2005 à 18:47
Premier module
Const Nomfichier$ = "c:\compte\fichier\archivage.dat"Const Message "entrée la date ", Title "ok"
Dim Tableau(0 To 1, 0 To 1, 0 To 60) As String, t$, m$, Reponse%, Date1





Private Sub Form_Load()

' Déclaration des variables.
Dim I As Integer
Dim pnlX As Panel
text1 = "Fait par Alain"
' Ajoute 5 zones.
For I = 1 To 2
Set pnlX = StatusBar.Panels.Add()
Next I
' Affecte le style pour chaque zone.
With StatusBar.Panels
.Item(1).Width = 1900
.Item(1).Text = text1
.Item(2).Style = sbrDate ' Date
.Item(2).Width = 1000
.Item(3).Style = sbrTime ' Heure
.Item(3).Width = 600

End With
'Centrage de la fenetre

Top = Screen.Height / 2 - Height / 2
Left = Screen.Width / 2 - Width / 2
'Principal.Left = (Screen.Width - Principal.Width) / 2
'Principal.Top = (Screen.Height - Principal.Height) / 2
'Call SortirFichier
Call AffichageLabel
End Sub
Private Sub Image1_Click()
'Image1 = MsgBox("alain")
Date1 = Mid(Date$, 4, 2) & "/" & Left(Date$, 2) & "/" & Right(Date$, 4)
Donne = InputBox(Message, Title, Date1, 2500, 5000)
Tableau(0, 0, 0) = Donne & " " & Left$(Time$, 5) & " h"
Call AffichageLabel
End Sub
Private Sub Image2_Click()
Donne = InputBox(Message, Title, , 2500, 5000)
Tableau(0, 1, 0) = Donne & " " & Left$(Time$, 5) & " h"
Call AffichageLabel
End Sub
Private Sub Image3_Click()
Donne = InputBox(Message, Title, , 2500, 5000)
Tableau(1, 0, 0) = Donne & " " & Left$(Time$, 5) & " h"
Call AffichageLabel
End Sub
Private Sub Image4_Click()
Donne = InputBox(Message, Title, , 2500, 5000)
Tableau(1, 1, 0) = Donne & " " & Left$(Time$, 5) & " h"
Call AffichageLabel
End Sub


Private Sub Unite_Click()
Call UniteRepertoire.Show
End Sub


Public Function AffichageLabel()


Image1.ToolTipText = "Sortir disque dur vers unité de disquette "
Image2.ToolTipText = "Sortir unité de disquette vers disque dur "
Image3.ToolTipText = "Sortir disque dur vers disque amovible "
Image4.ToolTipText = "Sortir disque amovible vers disque dur "
Unite.ToolTipText = "Configuration de Unite et Répertoire"
Quitter.ToolTipText = "Quitter programme"


'Date1 = Mid(Date$, 4, 2) & "/" & Left(Date$, 2) & "/" _
& Right(Date$, 4) & " " & Left$(Time$, 5) & " h"
If Tableau(0, 0, 0) <> "" Then T1 " le " & Tableau(0, 0, 0): Coul1 0: Coul2 = 255
Else T1 " AUCUNE": Coul1 255: Coul2 = 0
End If
Label1.ForeColor = RGB(Coul1, 0, Coul2)
Label1.Caption = "Dernière sauvegarde" & T1
If Tableau(0, 1, 0) <> "" Then T2 " le " & Tableau(0, 1, 0): Coul1 0: Coul2 = 255
Else T2 " AUCUNE": Coul1 255: Coul2 = 0
End If
Label2.ForeColor = RGB(Coul1, 0, Coul2)
Label2.Caption = "Dernière sauvegarde" & T2
If Tableau(1, 0, 0) <> "" Then T3 " le " & Tableau(1, 0, 0): Coul1 0: Coul2 = 255
Else T3 " AUCUNE": Coul1 255: Coul2 = 0
End If
Label3.ForeColor = RGB(Coul1, 0, Coul2)
Label3.Caption = "Dernière sauvegarde" & T3
If Tableau(1, 1, 0) <> "" Then T4 " le " & Tableau(1, 1, 0): Coul1 0: Coul2 = 255
Else T4 " AUCUNE": Coul1 255: Coul2 = 0
End If
Label4.ForeColor = RGB(Coul1, 0, Coul2)
Label4.Caption = "Dernière sauvegarde" & T4
End Function
Private Sub form_Unload(Cancel As Integer)
Dim rep As VbMsgBoxResult t$ "Procedure D'archivage": m$ "Etes-vous sûr de vouloir quitter ?"
rep = MsgBox(m$, vbYesNo + 48, t$)
If rep = vbYes Then Call SauvegardeFichier: End If rep vbNo Then Cancel True
End Sub
Private Sub Quitter_Click()
' Quitter
Unload Me
End Sub
Private Sub Command1_Click()
Call SortirFichier
Call AffichageLabel
End Sub


Public Sub SortirFichier()
Open Nomfichier$ For Input As #1
'Input #1, NoFich
For I = 0 To 1
For I1 = 0 To 1
'For I2 = 1 To NoFich
Line Input #1, Tableau(I, I1, 0)

Next I1, I
Close #1
End Sub
Public Sub SauvegardeFichier()
Open Nomfichier$ For Output As #1
'Write #1, NoFich
For I = 0 To 1
For I1 = 0 To 1
'For I2 = 1 To NoFich
Print #1, Tableau(I, I1, 0)

Next I1, I

Close #1
End Sub

second module
Dim NoFich, Depart, Choix1
Const Nomfichier$ = "c:\compte\fichier\archivage.dat"
Dim Tableau(0 To 1, 0 To 1, 0 To 60) As String
Private Sub Form_Load()
On Error GoTo gestionerreur ' Diffère la gestion d'erreur.
Valide.ToolTipText = "Valide Enregistre la configuration de unité" & _
"et répertoire et sort"
Sortir.ToolTipText = "Sort sans enregistre la configuration de unité et répertoire"
Image1.ToolTipText = "Sortir sur unité de disquette"
Image2.ToolTipText = "Sortir sur unité disque amovible"
' definition de l'unite et repertoire de la source et destinationSource1 "c:": destis "C:"
Depart:
' Source
Dir_source = (Source1)
Drive_source = Dir_source
File_source = "*.mdb"
'Destination
'On Error GoTo gestionerreur
Dir_desti = (destis)
Drive_desti = Dir_desti
'Label3.ForeColor = RGB(0, 0, 255)
'Label3 = " Sous source: {" & UniteRepertoire.Dir_source & "}" + " " + "Sous desti: {" & UniteRepertoire.Dir_desti & "}"


'Centrage de la fenetre


Top = Screen.Height / 2 - Height / 2
Left = Screen.Width / 2 - Width / 2
'List2.Visible = False
'Label3.Caption = List1.ListIndex
gestionerreur:
If Err = 68 Then
Msg = "L'erreur # " & Str(Err.Number) & " a été générée par " _
& Err.Source & Chr(13) & Err.Description
MsgBox Msg, , "Erreur", Err.HelpFile, Err.HelpContext Source1 "c:": destis "C:"
GoTo Depart
End If
End Sub
Private Sub Image1_Click()
Choix1 = 0
End Sub
Private Sub Image2_Click()
Choix1 = 1
End Sub
Private Sub Dir_source_Change()
File_source = Dir_source
End Sub
Private Sub Drive_desti_Change()
On Error GoTo gere_erreur
Dir_desti = Drive_desti
GoTo Fin
gere_erreur:
erreur = MsgBox("Inpossible de charger ce volume !!!", vbOKOnly & vbCritical, "Attention")
Drive_desti = Dir_desti
Fin:
End Sub
Private Sub Drive_source_Change()
On Error GoTo gere_erreur
Dir_source = Drive_source
GoTo Fin
gere_erreur:
erreur = MsgBox("Inpossible de charger ce volume !!!", vbOKOnly & vbCritical, "Attention")
Drive_source = Dir_source
Fin:
End Sub
Private Sub File_source_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
For U = 1 To NoFich
If UCase(UniteRepertoire.File_source) = Tableau(Choix1, 0, U) Then
erreur = MsgBox("Inpossible de selectionne deux fois le même fichier !", vbOKOnly & vbCritical, "Attention")
GoTo fin1
End If
Next U
NoFich = NoFich + 1
Tableau(Choix1, 0, NoFich) = UCase(UniteRepertoire.File_source)
List1.ForeColor = QBColor(1)
List1.AddItem Tableau(Choix1, 0, NoFich)
'Label3.Caption = NoFich
fin1:
End If
End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Label3.Caption = List1.ListIndex + 1Titre$ "Attention": Mas$ "Voulez - vous surprimers " _
& UCase(Tableau(Choix1, 0, List1.ListIndex + 1)) & " ?"
Reponse% = MsgBox(Mas$, 4 + 32, Titre$)
If Reponse% = 6 Then
For J = List1.ListIndex + 1 To NoFich - 1
Tableau(Choix1, 0, J) = Tableau(Choix1, 0, J + 1) Next J: Tableau(Choix1, 0, NoFich) "": NoFich NoFich - 1
List1.ForeColor = QBColor(12)
List1.Clear
For t = 1 To NoFich
List1.AddItem Tableau(Choix1, 0, t) '& " " & NoFich
Next t
End If
'Label3.Caption = List1.ListIndex + 1
End Sub
Private Sub Valide_Click()
Call SauvegardeFichier
Call UniteRepertoire.Hide
'Label3 = " Sous source: {" & UniteRepertoire.Dir_source & "}" + " " + UniteRepertoire.File_source + " " + "Sous desti: {" & UniteRepertoire.Dir_desti & "}" + " " + Label2.Caption
End Sub
Private Sub Sortir_Click()
beep: I = 0:
'List2.Visible = False:
List1.Clear: 'Label3 = I
List1.ListIndex = -1
Call UniteRepertoire.Hide
End Sub
Public Sub SauvegardeFichier()
Open "c:\compte\fichier\archivage.dat" For Output As #1
Write #1, NoFich
For I = 0 To 1
For I1 = 0 To 1
For I2 = 1 To NoFich
Print #1, Tableau(I, I1, I2)

Next I2, I1, I

Close #1
End Sub


Cette application me serviras pour transférer des données du disque dur a une disquette ou autre unité amovible et pour évité de se servir d’explorateur de Windows (exemple mes donnée de compte)


Merci d’avance

Alain
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 août 2005 à 19:28
ça c'est pas des modules c'est des formulaires.

tu as déclaré dans chaque forme un Tableau qui ne sera vu que de la forme elle même et pas des autres.

tu dois ajouter un module:

projet --> ajout module

c'est un fichier .bas qui fera parti du projet

dans un module il n'y a pas d'évênement, pas de graphique non plus


première forme:

tu enlèves la déclaration du tableau

Dim <strike>Tableau(0 To 1, 0 To 1, 0 To 60) As String</strike>, t$, m$, Reponse%, Date1

'qui devient::

Dim t$, m$, Reponse%, Date1 As Date

'et dans le Form_Load

'Option Base 0 c'est par défaut

Redim Tableau (1,1,60)



deuxième forme:

enlever aussi la déclaration du Tableau

<strike>Dim Tableau(0 To 1, 0 To 1, 0 To 60) As String

</strike>

le module

'éviter les Tableaux non dynamiques

Public Tableau() As String




Daniel
0
cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008
14 août 2005 à 22:18
pour mes sauvegarde fichiers et sortir fichier je mets ça aussi dans des modules?
je m'excuse je débute en VB
merci pour ton aide

Alain
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 août 2005 à 22:33
je vois bien 2 SauvegardeFichier() une dans chaque forme et c'est pas les mêmes, et en plus en Public ????



1 - faut éviter d'avoir les mêmes noms dans des formes différentes

2 - si tu fait appel à la même procédure (ou variables) dans des formes
différentes, oui vaut mieux la mettre en Public dans le module, c'est
fait pour ça, ça évite d'écrire 2 fois la même chose, ça permet une
meilleure maintenance et ça prend moins de place.

3 - si tu l'utilises que dans une seule forme, faut le laisser en
Private, inutile d'emcombrer la mémoire, les variables publiques ça
prend de la place.



Daniel
0
cs_FORAIN Messages postés 19 Date d'inscription mercredi 22 novembre 2000 Statut Membre Dernière intervention 9 mars 2008
15 août 2005 à 10:34
Bonjour,


<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


Avec le VB je vois que l’on ne peut pas travailler de la même manière que quickbasic


Je mettais mes déclarations en début de programme je mettais mon ouverture de tableau en accès séquentiel ou accès direct je passais d’un sub à autre sans problèmes.





Dans la forme procédure d’archivage je viens afficher des dates et des heures de ma dernière sauvegarde en TABLEAU(0,0,0) , TABLEAU(0,1,0), TABLEAU(1,0,0) et TABLEAU(1,1,0)


Dans les deux premières variables et la troisième variables me serviras à sauvegarder les emplacements de l’unité et le répertoire de la forme configuration unité et répertoire





Dans les livres et dans l’aide MSDN library VB 6 il ne donne pas beaucoup d’explications





En livre j’ai le programmeur Microsoft Visual basic 6 de chez campuspress








Je ne suis à la recherche de personne qui pourrait me donner des conseils en VB





Et encore merci de ton aide





Merci d’avance





Alain
0
Rejoignez-nous