Vendredi 29 janvier 2010 5 29 /01 /Jan /2010 16:20
awk qui prend un fichier avec un titre (lignes commençant par *), puis une serie de données séparées par des virgules et qui :
- reecrit les lignes de titres
- réécrit une parties des données (1 ligne sur 8) en modifiant l'ordre et le rendu
exemple : fichier de départ :
** t1= TT.TTTT, c1= C.CCCCC, s= SS.SSSS, t2= TT.TTTT, lat=+LL LL.LLL N, lon=+lll ll.lll E, hms=HHMMSS, dmy=DDMMYY
*END*
*        1         2         3         4         5         6         7         8         9        10
*23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
*$1        ,$2          ,$3         ,$4          ,$5             ,  $6              ,$7         ,$8             
*2345678901,123456789012,12345678901,123456789012,123456789012345,  1234567890123456,12345678901,1234567890123
t1= 13.0641, c1= 4.46401, s= 38.4702, t2= 13.0034, lat=+42 01.35 N, lon=+005 01.11 E, hms=121421, dmy=12012010
t1= 13.0632, c1= 4.46396, s= 38.4707, t2= 13.0070, lat=+42 01.36 N, lon=+005 01.11 E, hms=121429, dmy=12012010
t1= 13.0636, c1= 4.46405, s= 38.4711, t2= 13.0103, lat=+42 01.37 N, lon=+005 01.10 E, hms=121436, dmy=12012010
t1= 13.0639, c1= 4.46410, s= 38.4712, t2= 13.0093, lat=+42 01.38 N, lon=+005 01.09 E, hms=121445, dmy=12012010
 
fichier obtenu :
** t1= TT.TTTT, c1= C.CCCCC, s= SS.SSSS, t2= TT.TTTT, lat=+LL LL.LLL N, lon=+lll ll.lll E, hms=HHMMSS, dmy=DDMMYY
*END*
*        1         2         3         4         5         6         7        8         9        10
*23456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
*$1        ,$2          ,$3         ,$4          ,$5             ,  $6             ,$7         ,$8
*2345678901,123456789012,12345678901,123456789012,123456789012345, 1234567890123456,12345678901,1234567890123
2010,01,12,12,15,17,+42.024,+005.018,13.021,38.471
2010,01,12,12,16,21,+42.025,+005.017,13.015,38.469
2010,01,12,12,17,24,+42.027,+005.016,13.011,38.469


******************************************************************************************************************************
BEGIN{FS=","; OFS=""}
{
  if($0~/^\*/){print $0}
  else
  {
    if(NR%8==0)
     {
       printf("%s,%s,%s,%s,%s,%s,%s%06.3f,%s%07.3f,%s,%s\n", substr($8,10,4),substr($8,8,2),substr($8,6,2),substr($7,6,2),substr($7,8,2),substr($7,10,2),substr($5,6,1),substr($5,7,2)+substr($5,10,5)/60, substr($6,6,1),substr($6,7,3)+substr($6,11,5)/60),substr($4,6,6),substr($3,5,6)
     }
   }
}

Par memoprog - Publié dans : AWK
Ecrire un commentaire - Voir les 0 commentaires
Vendredi 29 janvier 2010 5 29 /01 /Jan /2010 16:18
Sub LONGUEUR_MAX_UNE_COLONNE()
'
'
'
Dim WS As Worksheet
Dim i As Integer
Dim com As String
Dim col As String

' parcours tous les cellules d'une colonne et retourne la taille maximale trouvée,  :

col = InputBox("Entrez le nom de la colonne (A,B,...)", "Colonne", "A")
i = 0
For n = 1 To Rows.Count
     If i < Len(Cells(n, col).Value) Then i = Len(Cells(n, col).Value)
Next n
   MsgBox ("longueur maxi de " & col & " : " & i)
End Sub
Sub LONGUEUR_MAX_TOUTES_COLONNES()
'
'
'
Dim WS As Worksheet
Dim i As Integer
Dim com As String
Dim col As String

' parcours toutes les cellules de toutes les colonnes
' et retourne la taille maximale trouvée
' on ne tient pas compte de la première ligne qui contient les titres

com = "  longueur maxi de "
For m = 1 To ActiveSheet.UsedRange.Columns.Count
  i = 0
  For n = 2 To ActiveSheet.UsedRange.Rows.Count
     If i < Len(Cells(n, m).Value) Then i = Len(Cells(n, m).Value)
  Next n
  com = com & "  " & Chr(64 + m) & " : " & i & " - "
Next m
MsgBox (com)
End Sub
Par memoprog - Publié dans : VISUALBASIC
Ecrire un commentaire - Voir les 0 commentaires
Lundi 18 janvier 2010 1 18 /01 /Jan /2010 10:39
Sub MacroCreOnglet()
'
' Macro enregistrée le 15/01/2010 par sgouzien
' Cette macro créé des onglets dans un fichier station.xls a partir
' de fichiers ascii se trouvant dans un répertoire /travail de newdata
' Dans notre cas les noms des fichiers sont composes ainsi dn401.ctd
' et jusqu'a dn459.ctd avec des numeros qui ne se suivent pas. Il n'y a
' que 51 fichiers dans le répertoire.

Dim i As Integer
Dim tt As String

On Error Resume Next

i = 1
j = 401
k = 1
For i = 1 To 60

    Workbooks.OpenText Filename:="R:\newdata\dino4\ctd\travail\dn" & j & ".ctd", _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
        TrailingMinusNumbers:=True
'Workbooks.OpenText OuvF, xlWindows, , , , , True
'If Err <> 0 Then MsgBox Err & "Vous n'avez choisi un fichier texte valide"
'If Err = 0 Then
'Workbook.ActiveSheet.Copy
'Workbook("R:\newdata\dino4\ctd\travail\dn" & j & ".ctd").ActiveSheet.Copy
'Application.CutCopyMode = False
'tt = ActiveWorkbook.ActiveSheet.Name
'tt = Workbooks("stations.xls").Sheets(i - 7).Name
If ActiveWorkbook.ActiveSheet.Name = "dn" & j Then
   ActiveWorkbook.ActiveSheet.Move Before:=Workbooks("station.xls").Sheets(k)
   k = k + 1
End If
'Workbooks("R:\newdata\dino4\ctd\travail\dn" & j & ".ctd").Close
'ActiveWorkbook.Close
'End If
     j = j + 1
  
Next

End Sub

Function OuvF()
OuvF = Application.GetOpenFilename("Fichier Texte (*.txt), *.txt")
End Function


 
Par memoprog - Publié dans : VISUALBASIC
Ecrire un commentaire - Voir les 0 commentaires
Lundi 18 janvier 2010 1 18 /01 /Jan /2010 10:39
Sub DEBUT_FEUILLE_TOUS()
'
'
' Macro enregistrée le 30/09/2009 par sgouzien
' retaille chaque feuille de tous les fichiers ouverts
' supprime les lignes blanches en fin de fichier
'
Dim WB As Workbook
Dim WS As Worksheet
Dim i As Integer
Dim j As Integer
i = 0
  
' désactiver le rafraîchissement de l'écran pour accélérer le traitement
  Application.ScreenUpdating = False

' parcours tous les  fichiers, et dans chaque fichier :
For Each WB In Workbooks

  If WB.Name <> "macro.xls" Then
' parcours tous les feuilles du fichier, et dans chaque feuille :
   
    i = i + 1
    For Each WS In WB.Worksheets

      WS.Activate
      ActiveWindow.ScrollRow = 1
      ActiveWindow.ScrollColumn = 1
      Range("A1").Select
' retaille toutes les colonnes
      WS.Columns.ColumnWidth = 13
' Masque les colonnes C, H et J
      WS.Range("C:C,H:H,I:I,J:J").EntireColumn.Hidden = True
' supprime les lignes blanches en fin de fichier :
' on suppose qu'il y a au max 2000 lignes et que si la première cellule est vide c'est que la ligne est vide
      For i = 2000 To 1 Step -1
         If IsEmpty(WS.Rows(i)) Then WS.Rows(i).Delete
      Next
    Next
    WB.Worksheets(1).Activate
    WB.Save
   
  End If
Next
  
' désactiver le rafraîchissement de l'écran pour accélérer le traitement
  Application.ScreenUpdating = True

MsgBox ("fin du traitement, " & i & " fichiers traités ")
End Sub

 
Par memoprog - Publié dans : VISUALBASIC
Ecrire un commentaire - Voir les 0 commentaires
Lundi 18 janvier 2010 1 18 /01 /Jan /2010 10:37
Sub DEBUT_FEUILLE()
'
'
' Macro enregistrée le 30/09/2009 par sgouzien
' parcours tous les feuilles du fichier Excel Courant, et dans chaque feuille,
' remonte en haut les ascenseurs horizontaux et verticaux,
' place le curseur sur la première cellule
' rend la première feuille active
' et place le curseur sur la première cellule de la première feuille
'
Dim WS As Worksheet

' parcours tous les feuilles du fichier, et dans chaque feuille :

For Each WS In ActiveWorkbook.Worksheets

'

    WS.Activate
   
    ActiveWindow.ScrollRow = 1
    ActiveWindow.ScrollColumn = 1
    Range("A1").Select
   
   
   
 
Next
ActiveWorkbook.Worksheets(1).Activate
End Sub

Par memoprog - Publié dans : VISUALBASIC
Ecrire un commentaire - Voir les 0 commentaires

Présentation

Créer un Blog

Recherche

Calendrier

Mai 2012
L M M J V S D
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
<< < > >>
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus