Création d'un fichier config a l'aide de tableaux

Création d'un fichier config a l'aide de tableaux - VB/VBA/VBS - Programmation

Marsh Posté le 03-01-2010 à 12:59:55    

Bonjour à tous et à toutes...
 
Voila ma question, je developpe une petite application ou des boutons portent le nom de variables pour permettre à l'utilisateur de donner à ces boutons des noms de son choix.
 
Pour cela j'ai créé des TextBox comportant le nom de ces variables.
Chaque TextBox comporte un Label, et si le TextBox est vide Il prend comme valeur le Label.text
 
Private Sub PanelMnemo_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PanelMnemo.Paint
        If TextBox_Bex.Text = "" Then
            TextBox_Bex.Text = Label_Bex.Text
        End If
        If TextBox_BalBlanc1.Text = "" Then
            TextBox_BalBlanc1.Text = Label_BalBlanc1.Text
        End If
        If TextBox_BalBlanc2.Text = "" Then
            TextBox_BalBlanc2.Text = Label_BalBlanc2.Text
        End If
        If TextBox_BalNoir.Text = "" Then
            TextBox_BalNoir.Text = Label_BalNoir.Text
        End If
        If TextBox_BalMire.Text = "" Then
            TextBox_BalMire.Text = Label_MireBarre.Text
        End If
        If TextBox_EntGr1.Text = "" Then
            TextBox_EntGr1.Text = Label_Entree1.Text
        End If
        If TextBox_EntGr2.Text = "" Then
            TextBox_EntGr2.Text = Label_Entree2.Text
        End If
        If TextBox_EntGr3.Text = "" Then
            TextBox_EntGr3.Text = Label_Entree3.Text
        End If
        If TextBox_EntGr4.Text = "" Then
            TextBox_EntGr4.Text = Label_Entree4.Text
        End If
        If TextBox_EntGr5.Text = "" Then
            TextBox_EntGr5.Text = Label_Entree5.Text
        End If
        If TextBox_EntGr6.Text = "" Then
            TextBox_EntGr6.Text = Label_Entree6.Text
        End If
        If TextBox_EntGr7.Text = "" Then
            TextBox_EntGr7.Text = Label_Entree7.Text
        End If
        If TextBox_EntGr8.Text = "" Then
            TextBox_EntGr8.Text = Label_Entree8.Text
        End If
        If TextBox_Mem1.Text = "" Then
            TextBox_Mem1.Text = Label_Mem1.Text
        End If
        If TextBox_Mem2.Text = "" Then
            TextBox_Mem2.Text = Label_Mem2.Text
        End If
        If TextBox_Mem3.Text = "" Then
            TextBox_Mem3.Text = Label_Mem3.Text
        End If
        If TextBox_Mem4.Text = "" Then
            TextBox_Mem4.Text = Label_Mem4.Text
        End If
        If TextBox_Mem5.Text = "" Then
            TextBox_Mem5.Text = Label_Mem5.Text
        End If
        If TextBox_Mem6.Text = "" Then
            TextBox_Mem6.Text = Label_Mem6.Text
        End If
        If TextBox_Mem7.Text = "" Then
            TextBox_Mem7.Text = Label_Mem7.Text
        End If
        If TextBox_Mem8.Text = "" Then
            TextBox_Mem8.Text = Label_Mem8.Text
        End If
        If TextBox_Sortie1.Text = "" Then
            TextBox_Sortie1.Text = Label_Sortie1.Text
        End If
        If TextBox_Sortie2.Text = "" Then
            TextBox_Sortie2.Text = Label_Sortie2.Text
        End If
        If TextBox_Sortie3.Text = "" Then
            TextBox_Sortie3.Text = Label_Sortie3.Text
        End If
        If TextBox_Sortie4.Text = "" Then
            TextBox_Sortie4.Text = Label_Sortie4.Text
        End If
        If TextBox_Sortie5.Text = "" Then
            TextBox_Sortie5.Text = Label_Sortie5.Text
        End If
        If TextBox_Sortie6.Text = "" Then
            TextBox_Sortie6.Text = Label_Sortie6.Text
        End If
        If TextBox_Sortie7.Text = "" Then
            TextBox_Sortie7.Text = Label_Sortie7.Text
        End If
        If TextBox_Sortie8.Text = "" Then
            TextBox_Sortie8.Text = Label_Sortie8.Text
        End If
    End Sub
 
J'aurais du le faire avec un ableau et une boucle mais je n'y suis pas parvenu. Je m'y repencherais plus tard.
 
Pour ne pas avoir à retapper le nom de chque bouton à chaque lancement (pas tres cool) J'ai trouvé sur un forum une méthode pour écrir dans un fichier Texte des valeurs Puis une autre méthode pour lire le contenu de ce fichier texte.
 
 
'Module permetant de creer un fichier config
Module RecConfig
     
    'Sub Permetant d'ecrire dans un fichier
    Public Sub Record()
        Dim configName(0 To 11) As String
        configName(1) = Form1.TextBox_Bex.Text
        My.Computer.FileSystem.WriteAllText("C:\testfile.txt", "," & configName(1), True)
    End Sub
 
    'Sub permetant de lire le contenu d'un fichier
    Public Sub Read()
        Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\testfile.txt" )
            MyReader.TextFieldType = FileIO.FieldType.Delimited
            MyReader.SetDelimiters("," )
            Dim currentRow As String()
            While Not MyReader.EndOfData
                Try
                    currentRow = MyReader.ReadFields()
                    Dim currentField As String
                    For Each currentField In currentRow
                        MsgBox(currentField)
                    Next
                Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
                    MsgBox("Line " & ex.Message & _
                    "Text non valide, Il est ignoré." )
                End Try
            End While
        End Using
    End Sub
 
End Module
 
 
 
 
Tout cela fonctionne tres bien mais actuellement comme vous pouvez le voir la sortie de mon tableau affiche un MsgBox car je n'ai pas réussi à le diriger vers mon fichier Texte.
 
 
Donc  
 
Question 1 comment écrire dans mon tableau ? (Mon code devrait marcher mais non...)
 
Question 2 Comment relire ce tableau et ecrir ces valeur dans un autre tableau .  
 
Qiestion 3 Comment Effacer le contenu de mon Fichier Text avant chaque ecriture pour le reinitaliser. Car pour le moment chaque edition du fichier Texte viens s'ajouter a la suite au lieu de le remplacer.
 
 
 
Merci de vos reponses.
 
 
Yves


Message édité par Astondb8 le 03-01-2010 à 16:43:57
Reply

Marsh Posté le 03-01-2010 à 12:59:55   

Reply

Marsh Posté le 03-01-2010 à 19:11:51    

Bonsoir,  
J'ai trouvé la solution A la une des questions Posée.  
 
Public Sub Enregistrer ()  
Dim configname (0 à 29) As String  
configname (1) = Form1.TextBox_Bex.Text  
configname (2) = Form1.TextBox_BalBlanc1.Text  
configname (3) = Form1.TextBox_BalBlanc2.Text  
configname (4) = Form1.TextBox_BalNoir.Text  
configname (5) = Form1.TextBox_BalMire.Text  
configname (6) = Form1.TextBox_Sortie1.Text  
configname (7) = Form1.TextBox_Sortie2.Text  
configname (8) = Form1.TextBox_Sortie3.Text  
configname (9) = Form1.TextBox_Sortie4.Text  
configname (10) = Form1.TextBox_Sortie5.Text  
configname (11) = Form1.TextBox_Sortie6.Text  
configname (12) = Form1.TextBox_Sortie7.Text  
configname (13) = Form1.TextBox_Sortie8.Text  
configname (14) = Form1.TextBox_EntGr1.Text  
configname (15) = Form1.TextBox_EntGr2.Text  
configname (16) = Form1.TextBox_EntGr3.Text  
configname (17) = Form1.TextBox_EntGr4.Text  
configname (18) = Form1.TextBox_EntGr5.Text  
configname (19) = Form1.TextBox_EntGr6.Text  
configname (20) = Form1.TextBox_EntGr7.Text  
configname (21) = Form1.TextBox_EntGr8.Text  
configname (22) = Form1.TextBox_Mem1.Text  
configname (23) = Form1.TextBox_Mem2.Text  
configname (24) = Form1.TextBox_Mem3.Text  
configname (25) = Form1.TextBox_Mem4.Text  
configname (26) = Form1.TextBox_Mem5.Text  
configname (27) = Form1.TextBox_Mem6.Text  
configname (28) = Form1.TextBox_Mem7.Text  
configname (29) = Form1.TextBox_Mem8.Text  
Dim i As Integer = 0  
My.Computer.FileSystem.WriteAllText ( "D: \ Projets_de_Yves \ essais Projets \ AlexTest \ Config.yjp", "", False)  
For i = 0 To 29  
My.Computer.FileSystem.WriteAllText ( "D: \ Projets_de_Yves \ essais Projets \ AlexTest \ Config.yjp", configname (i) & ",", True)  
Suivant  
 
 
End Sub  
 
 
Je mets une fausse La Bolène de fin d'instruction avant ma boucle et j'efface le contenu du fichier.  
Puis je passe cette Bolène Un moment d'écrire au True ma boucle Dans le fichier.  
 
 
Tout ne marche pas encore parfaitement mais cela avance ...  
 
 
Les autres questions bien sur retent d'actualité.  
 
@ + Yves

Reply

Marsh Posté le 04-01-2010 à 17:52:16    

Bonjour
 
J'ai pas bien tout regardé (ni tout suivi!), mais après "For i", et les instrructions diverses, tu dois inscrire  "Next i" pour revenir en boucle, pas "suivant"...


Message édité par Laoo le 04-01-2010 à 17:52:57

---------------
Olympus OM-D  EM-5 + 14-42
Reply

Marsh Posté le 14-01-2010 à 06:45:18    

Bonjour
 
Je ne sais pas où tu en es avec tes commandes, néanmoins en retombant sur ton post, j'ai eu cette idée pour simplifier un peu sans taper toute la litanie:
 
(l'idéal serait d'écrire juste une commande du type :
 
For each TextBox in MaPage
if TextBox(Z).Text = "" Then TextBox(Z).Text = Label(Z).Text
Z = Z + 1       'ou Z = nom de la TextBox     TextBox.Name  par ex  !!!  
Next
 
 
je rêve, mais pt-être que qq chose d'approchant est possible?
 
Voilà toujours ta macro simplifiée:
 

Code :
  1. Private Sub PanelMnemo_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PanelMnemo.Paint
  2.     If TextBox_Bex.Text = "" Then TextBox_Bex.Text = Label_Bex.Text
  3.     If TextBox_BalBlanc1.Text = "" Then TextBox_BalBlanc1.Text = Label_BalBlanc1.Text
  4.     If TextBox_BalBlanc2.Text = "" Then TextBox_BalBlanc2.Text = Label_BalBlanc2.Text
  5.     If TextBox_BalNoir.Text = "" Then TextBox_BalNoir.Text = Label_BalNoir.Text
  6.     If TextBox_BalMire.Text = "" Then TextBox_BalMire.Text = Label_MireBarre.Text     
  7. For i = 1 To 8
  8. If TextBox_EntGr(i).Text = "" Then TextBox_EntGr(i).Text = Label_Entree(i).Text
  9. Next i
  10.            
  11. For i = 1 To 8
  12. If TextBox_Mem(i).Text = "" Then TextBox_Mem(i).Text = Label_Mem(i).Text
  13. Next i
  14.            
  15. For i = 1 To 8
  16. If TextBox_Sortie(i).Text = "" Then TextBox_Sortie(i).Text = Label_Sortie(i).Text
  17. Next i
  18. End Sub


 
(Quand on n'a qu'une seule commande après If, on la met sur la même ligne sans End If)
 
Pour la copier sans N° clique sur "voir code"
Cordialement
 
 

Reply

Marsh Posté le 14-01-2010 à 23:29:59    

Laoo a écrit :


Pour la copier sans N° clique sur "voir code"


On peut aussi double cliquer sur la fenêtre du code pour faire disparaitre les n° de ligne ;)


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 15-01-2010 à 10:18:40    

otobox a écrit :


On peut aussi double cliquer sur la fenêtre du code pour faire disparaitre les n° de ligne ;)


 
 
GENIAL!!      SUPER-GENIAL !!!   [:acherpy]    [:acherpy]  [:acherpy]
 
 
MAIS PRKOI KE TU ME L'AS PAS DIT AVANT ? ?    :D  
 
J'ADORE      MERCI
 
       
                        :hello:    
 

Reply

Marsh Posté le 15-01-2010 à 16:32:38    

Bonsoir Laoo,
je viens de lire ce post, je confirme ce que tu dis , GENIAL etc...jusqu'à MERCI inclus.

Reply

Marsh Posté le 15-01-2010 à 17:23:14    

Laoo a écrit :

 


GENIAL!!      SUPER-GENIAL !!!   [:acherpy]    [:acherpy]  [:acherpy]

 


MAIS PRKOI KE TU ME L'AS PAS DIT AVANT ? ?    :D

 

J'ADORE      MERCI

 

     
                        :hello:  

 


 
seniorpapou a écrit :

Bonsoir Laoo,
je viens de lire ce post, je confirme ce que tu dis , GENIAL etc...jusqu'à MERCI inclus.

 

Merci, c'est sympa merciiiii
http://t1.gstatic.com/images?q=tbn:ERmtZR0KKn6KCM:idata.over-blog.com/0/27/74/82/chanteurs/michel-jonasz-1.jpg

 

Edit : ceci dit, je l'ai déjà dit avant : faire une recherche sur mes post dans ce forum :D


Message édité par otobox le 15-01-2010 à 17:43:31

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 15-01-2010 à 21:51:12    

Ohouai, mais j'tais pas né, hé!                Enfin, j'étais pas là, j'connaissais pas ce forum.
 
Pis en plus, j'ai pas ACCESS!  :cry:  Cé hachement cher juste pour faire joujou! Mais j'ai bien envie quand même, un jour!   Les bases de données, c'est le pied aussi. Bien qu'on puisse faire tellement de trucs avec Excel, du code et des idées! Tellement plus, même, et j'en connais pas encore le millionnième!  
 
J'ai regardé ton post en référence, beau travail, maître, beau travail!  
 
 
-----------------
 pourquoi la photo de M Jonasz?   juste comme ça?   j'aime beaucoup. J'ai cru que c'était Arthur, au début. Sur cette photo il lui ressemble beaucoup.
 
 
A+


Message édité par Laoo le 15-01-2010 à 22:24:11
Reply

Marsh Posté le 15-01-2010 à 22:09:33    

Les BD sont le pivot central de beaucoup d'applications. Tu devrais regarder ça, car de nouveaux horizons vont s'ouvrir à toi :)
Au boulot, beaucoup de trucs développés sous Excel par des utilisateurs, je les verrais plus performant sous Access? Bien que cette base de donnée n'est pas le top en la matière, mais ça permet de s'y faire les dents, c'est très accessible surtout pour des personnes comme toi qui pratiquent les outils informatiques d'une façon assez poussée !

 

Les tableaux, ce sont des captures d'écran hébergées par Imageshack ;)

 

Jonasz, c'est en rapport avec le merci, c'est sympa merci de sa chanson, la boite de jazz.


Message édité par otobox le 15-01-2010 à 22:10:56

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed