[Résolu] Concaténation spécifique

Concaténation spécifique [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 28-02-2005 à 16:44:33    

Bonjour,
 
Voici un extrait de code pour ma question:

Citation :


Write #fileNum, stationMES0.nom, stationMES0.ORDRE, stationMES0.UNITE, stationMES0.grandeur
Write #fileNum, stationMES1.nom, stationMES1.ORDRE, stationMES1.UNITE, stationMES1.grandeur
Write #fileNum, stationMES2.nom, stationMES2.ORDRE, stationMES2.UNITE, stationMES2.grandeur...


 
Donc, j'aurai voulu savoir si c'est possible, afin d'éviter de répéter x fois la même ligne, d'utiliser une variable "nb" par exemple comme ceci:

Citation :


for nb=0 to 10
Write #fileNum, stationMES & nb &.nom, stationMES & nb &.ORDRE, stationMES & nb &.UNITE, stationMES & nb &.grandeur
next


Le code que je viens de citer ci-dessus ne fonctionne pas évidemment, c'est pour expliquer ce que j'aimerai faire.
 
Est-il possible de faire ce genre de concaténation?
Si pas possible, existe-t-il une solution alternative?
 
Merci d'avance à tous ceux qui m'aideront.


Message édité par lefoimpeur le 02-03-2005 à 09:59:37
Reply

Marsh Posté le 28-02-2005 à 16:44:33   

Reply

Marsh Posté le 28-02-2005 à 17:57:53    

Ca m'étonnerait que ce que tu veux faire soit faisable en VB.
 
Pourquoi tu n'as pas fait de tableaux?
Les Hashtable ou un truc du genre, ça existe en VB?

Reply

Marsh Posté le 28-02-2005 à 18:23:44    

djok_fb a tout a fait raison. Transforme le tout en tableau et après ça ira tout seul.

Reply

Marsh Posté le 28-02-2005 à 19:06:40    

Ah ouais, c'est vrai ça, pas bête l'idée du tableau!
Je tente ça demain ;)
 
Merci

Reply

Marsh Posté le 01-03-2005 à 10:41:40    

Donc en fait je vais m'expliquer un peu plus car l'idée du tableau c'est bien, mais...
 
J'ai développé un logiciel pour des stations météos et j'aimerais sauvegarder la configuration de chaque station dans un fichier de config sachant que ce fichier ne comportera pas toujours le même nombre de lignes.
Ce fichier contiendra les infos types noms, localisation de la station..., les paramètres de communication et la ou ça se corce c'est pour les paramètres concernant le nombre de données provenant de cette station.
Si la station nous envoi 3 mesures, il me faut pour chaque mesure paramètrer son nom, son unité.... donc un fichier de ce type:

Citation :


station1.cfg
 nom,localisation
 parametres de communication
 donnee1,vitesse vent,m/s
 donnee2,direction vent,°
 donnee1,température,°C


 
Pour une autre station il n'y aura par exemple que 2 données:

Citation :


station2.cfg
 nom,localisation
 paramètres de communication
 donnee1,vitesse vent,m/s
 donnee2,direction vent,°


 
J'aimerais faire une fonction de lecture et une d'écriture d'un fichier de config qui serve pour tous les cas mais je ne sais comment faire pour que ce soit le plus dynamique et le plus souple possible au niveau de la prog...
 
Merci à tous ceux qui pourront m'aider.

Reply

Marsh Posté le 01-03-2005 à 12:45:38    

Je sais ke pour moi ca marche avec un fichier csv ou txt en faisant comme suit:
                   
    Open App.Path & ".\fichier.txt" For Output As #1
    For j = 1 To n
    a = "stationMES" & nb &.nom
    b = "stationMES" & nb &.ORDRE
    c = "stationMES" & nb &.UNITE
    d = "stationMES" & nb &.grandeur  
    Write #1, a,b,c,d
    Next j
    Close #1
 
Par contre pour le nombre de ligne c'est a toi de voir si tu peux le rechercher automatikement a chake fois,ou si c toi ki le mets j'espere ke ca pourra t'aider :D

Reply

Marsh Posté le 01-03-2005 à 13:33:31    

Ah ben ça va faire mon bonheur si ça marche comme ça!
Cet aprem je ne suis pas à la boite, donc je verrais ça demain matin, mais si tu dis que chez toi ça passe je te fais confiance!!
 
Je te previendrais mon avancement, merci ;)

Reply

Marsh Posté le 01-03-2005 à 13:36:28    

Ouais enfin on est jamais sur de rien lol tiens moi au courant via le site ou yokaichan@hotmail.com etant donne ke je suis debutant mais ke je travaille sur certains trucs kan meme ca m'interesse de savoir ou tu en es lol merci d'avance :d

Reply

Marsh Posté le 01-03-2005 à 13:46:16    

No pb t'inquiète, en général je répond toujours ;)

Reply

Marsh Posté le 01-03-2005 à 20:31:56    

Voilà ce que moi je te propose : un tableau
 
Dans un module tu mets cela (hors de Sub ou Function)

Code :
  1. Private Const NbreStationMax = 100 ' Définition du nombre maximum de station (peut être modifié)
  2. Private Type UserStation
  3.   Nom As String
  4.   Localisation As String
  5.   PramCom As String
  6.   Donnée1 As String
  7.   ' etc etc
  8. End Type
  9. Dim Station(NbreStationMax) As UserStation


Dans ta commande d'écriture tu appelle la fonction Ecrire()

Code :
  1. Function Ecrire()
  2. Open App.Path & "\station.txt" For Output As #1 ' Attention : toutes les données présentes dans le fichier seront effacées
  3.     For i = 0 To NbreStationMax
  4.       If Station(i).Nom = "" Then Exit For 'Si nom station vide alors fin du traitement
  5.         Print #1, "<"
  6.         Print #1, "n" & Station(i).Nom
  7.         Print #1, "l" & Station(i).Localisation
  8.         Print #1, "c" & Station(i).PramCom
  9.         If Not Station(i).Donnée1 = "" Then Print #1, "d" & Station(i).Donnée1
  10.         Print #1, ">"
  11.     Next i
  12. Close #1
  13. End Function


Dans ta commande de lecture tu apelle la fonction Lire()

Code :
  1. Function lire()
  2. Dim a As String
  3. Dim i As Integer
  4. i = 0
  5. Open App.Path & "\station.txt" For Input As #1
  6.     While Not EOF(1)
  7.       Input #1, a
  8.       If a = "<" Then
  9.         While Not a = ">"
  10.           Input #1, a
  11.           Select Case Left(a, 1)
  12.           Case "n"
  13.             Station(i).Nom = Right(a, Len(a) - 1)
  14.           Case "l"
  15.             Station(i).Localisation = Right(a, Len(a) - 1)
  16.           Case "c"
  17.             Station(i).PramCom = Right(a, Len(a) - 1)
  18.           Case "d"
  19.             Station(i).Donnée1 = Right(a, Len(a) - 1)
  20.           'etc etc
  21.           Case Else
  22.           End Select
  23.       End If
  24.     Wend
  25. Close #1
  26. End Function

Et voila :)  
Si problème(s) envoie(z) un message privé.

Reply

Marsh Posté le 01-03-2005 à 20:31:56   

Reply

Marsh Posté le 01-03-2005 à 21:28:55    

C'est sympa à vous tous de m'aider comme ça!  :hello:  
 
En fait ton idée de tableau ressemble fort à ce que j'ai fait sauf qu'au lieu de déclarer "Dim Station(NbreStationMax) As UserStation" je met "Dim Station As UserStation"!!! J'utilisais ça en tant que structure, je ne savais pas qu'on pouvait faire ça!! Du coup ça simplifierait plusieurs trucs dans mon code ça :)
 
Je me suis renseigné aussi pour faire un fichier .ini et avec toutes vos idées je pense pouvoir faire quelque chose de bien.
 
Je m'y met dès que je suis au boulot demain ;)
Merci beaucoup!!  :bounce:  
 
Je donnerais de mes news de mon avancement!

Reply

Marsh Posté le 02-03-2005 à 09:58:15    

Hello!!
 
Bon ben je vous remercie tous!!!
Ca fonctionne comme je le souhaitais.
 
Encore MERCI!!!

Reply

Marsh Posté le 02-03-2005 à 13:41:23    

Ben moi je suis ravi pour toi. :)

Reply

Sujets relatifs:

Leave a Replay

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