Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1421 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Ecrtiure ligne en fortrant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecrtiure ligne en fortrant

n°1385492
loxodrome
Posté le 11-06-2006 à 20:44:04  profilanswer
 

Bonjour  
 
je dois effectuer un code visual basic qui va prendre des infos dans un fichier 1 pour les écrire dans un fichier 2 qui celui-ci doit être écrit en mettant les bonnes infos dans les bonnes colonnes.
 
par exemple  
 
RI1000                                 0.0000                          1.200
RI1                                  400.0000                           0.237
 
Voilà ma question
 
je travaille avec des mid pour isolé les différents éléments et ensuite je concatène le tout en introduisant les espaces à la main, mais un problème ce pose par exemple  
 

Code :
  1. strLigneStationMes = strLigneStationMes & strHauteurStation & "       " & strNomOP & "  " & strerr_moy_moy


 
Mais voilà le problème cette méthode marche bien pour autant que ce qui suit le RI soit toujours de la même grandeur car si une fois c'est 1000 et une autre fois 10 ce qui suit sera décalé.  
 
Aurait-il une autre possibilité de faire ça, par exemple de dire à vb de déplacer le curseur à la colonne xxx et d'écrir l'autre variable. Ce qui donnerai un truc comme ça :
 

Code :
  1. strLigneStationMes = strLigneStationMes & strHauteurStation & va colone 38 & strNomOP & va colonne 68 & strerr_moy_moy


 
merci d'avance pour vos réponse.

mood
Publicité
Posté le 11-06-2006 à 20:44:04  profilanswer
 

n°1385557
kiki29
Posté le 12-06-2006 à 01:43:26  profilanswer
 

Quid du format du fichier1 ?  
Beaucoup plus de données seraient bienvenues
 
Pour le fichier2
Sous Excel avec une police non proportionnelle Courier, Courier New par exemple
voilà ce que tes données montrent


         1         2         3         4         5         6         7         8         9  
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
RI1000                                 0.0000                          1.200
RI1                                  400.0000                           0.237


 
Est ce que le positionnement des 1er datas  
 se fait par rapport au . ? 41 eme caractère ou démarre au 40eme
Est ce que le positionnement des 2nd datas  
 se fait par rapport au . ? 73 eme caractère ou démarre au 72eme
ou autrement à toi de préciser et s'il y a des données supplémentaires  
ou démarrent-elles ?
 
Anecdotiquement cela me rappelle un traitement via Excel que j'avais fait il y a  
qqs annéees pour recadrer des infos topos PC texte transmises au géovecteur RS6000/Unix pour insertion dans traitement de données géophysiques


Message édité par kiki29 le 12-06-2006 à 08:43:48
n°1385698
loxodrome
Posté le 12-06-2006 à 12:00:34  profilanswer
 

Hello
 
Merci beaucoup pour ton bout de code, j'ai vu ton message privé mais quelques explication serait le bien venu si je peux te le demander.
 

Code :
  1. Private Sub Test()
  2. Dim s As String
  3.     s = "RI1                                                          456400.00000                           0.237"
  4.    
  5. La je ne comprend pas DebuG
  6. Debug.Print FormaterChaine(s)
  7.     s = "RI2000         12890.00001235                               1.200"
  8.     Debug.Print FormaterChaine(s)
  9.     s = "RI300         1212.007895632                                   12311.200"
  10.     Debug.Print FormaterChaine(s)
  11. End Sub


 
 
 
 
 
 
 

Code :
  1. Private Function FormaterChaine(ByVal Chaine As String) As String
  2. Dim strG As String, strM As String, strD As String
  3. Dim strEspaceL As String, strEspaceR As String
  4. Dim PosEspace As Integer, PosDecimal As Integer
  5. Les constante espace ?
  6. Const Espace As String * 1 = " "
  7. Const Decim As String * 1 = "."
  8. ' Position séparateur décimal
  9. En fait ca change tjrs en fonction du nombre de chiffre avant et après ??
  10. Const PosChaineM As Integer = 40
  11. Const PosChaineR As Integer = 72
  12.       Je ne comprend pas strG   
  13.     PosEspace = InStr(Chaine, Espace)
  14.     strG = Left(Chaine, PosEspace - 1)
  15.    
  16. 'comprend pas la InStrRev
  17.     PosEspace = InStrRev(Chaine, Espace)
  18.     strD = Right(Chaine, Len(Chaine) - PosEspace)
  19.     'je ne comprend pas la fonction TRIM
  20.     strM = Trim(Mid(Chaine, Len(strG) + 1, Len(Chaine) - Len(strD) - Len(strG)))
  21.    
  22.     PosDecimal = InStr(strM, Decim)
  23.    
  24.     strEspaceL = String(PosChaineM - Len(strG) - PosDecimal, Espace)
  25.    
  26.     PosDecimal = InStr(strD, Decim)
  27.     strEspaceR = String(PosChaineR - Len(strG) - Len(strEspaceL) - Len(strM) - PosDecimal, Espace)
  28.    
  29.     FormaterChaine = strG & strEspaceL & strM & strEspaceR & strD
  30. End Function


 
En fait si je comprend bien Len(strG) renvoie le nombre de caractère de la variable strG et Len(
 
 
Oui l'alignement ce fait par les séparateur décimale
 
En fait c'est presque pour le même domaine d'activité, en fait c'est pour transformer une fichier résultat de mesure en un fichier comptatible avec le logiciel de compensation LTOP.
 
Structure fichier 1
 
1.   No Point : 1                
                direction moyenne:             0.00000g
                   Haut.Réflt. :              0.2370m[/cpp]
 
en fait les datas 2 doivent être aligne au point à la colonne 73
 
Merci pour tes conseilles qui me dépatouille pas mal !!!!!!  :hello:  
 

n°1385743
kiki29
Posté le 12-06-2006 à 13:15:28  profilanswer
 

Pour les instructions utilisées il faut chercher dans l'aide en ligne.
Les lignes dans Test() sont justes là pour tester le traitement des chaines dans la fenêtre exécution: sous VBA : Affichage | Fenêtre exécution  
 
si Décimal 2eme colonne en 73
changer Const PosChaineR as integer = 72 en 73

n°1385747
loxodrome
Posté le 12-06-2006 à 13:18:38  profilanswer
 

Merci je vais dépatouiller tout ca !!!  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Ecrtiure ligne en fortrant

 

Sujets relatifs
[HTML] Aller à la ligne automatiquement dans une <table>[VBA] Methode la plus rapide de recopiage de ligne
afficher ligne sur un graphique vbaSupprimer une ligne d'un fichier txt
EXCEL - Inserer 1 nouvelle ligne toutes les 3 lignesscript chat en ligne sans room
[RESOLU] Récupération de ligne en VB[RESOLU] sélectionner une ligne quelconque en VB
Comment fonctionnent les sites de jeux en ligne ?comment supprimer complètement une page web mise en ligne
Plus de sujets relatifs à : Ecrtiure ligne en fortrant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR