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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  insérer des lignes dans des fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

insérer des lignes dans des fichiers

n°1717400
richardjf
Posté le 14-04-2008 à 18:31:12  profilanswer
 

Bonjour, en vue d'insérer des lignes dans des fichiers, J'ai écrit ça en shell unix, mais ça ne marche pas. On m'a conseillé de le faire en vba. Quelqu'un pourrait-il maider?
Merci.
: avec un fichier d'entree "entree.csv" (voir plus bas)
IFS="!"
if [ $# -lt 1 ]
then
   echo "nom du fichier[.csv]"
   exit
fi
for lg in `cat $1`
do
   
  Code=`echo $lg | awk -F";" '{ printf "%s", $1 }'`
  Chaine = `echo $lg | awk -F";" '{ printf "%s", $2 }'`
  Fichier=`echo $lg | awk -F";" '{ printf "%s", $3 }'`
 
 
cat $Fichier | while read theline  
do  
     echo "$theline" >> titi  
     if [ "$theline" = "Insert Into DISCOUNT_RESTRICTIONS Values ("$Code", 5, 3, 15, 0)" ]  
     then  
  echo "Insert Into DISCOUNT_RESTRICTIONS Values ("$Code", "$Chaine)" >> titi  
  fi
  done
 
 
done
mv titi $Fichier
----------------------------------------------------------------------
fichier d'entree "entree.csv"
26231; 5,3,93,0;g041000.sql;!
27753; 5,3,93,0;g041000.sql;!
26233; 5,3,93,0;g041001.sql;!
27754; 5,3,93,0;g041001.sql;!
26235; 5,3,93,0;g041002.sql;!
27755; 5,3,93,0;g041002.sql;!
26237; 5,3,93,0;g041003.sql;!
27756; 5,3,93,0;g041003.sql;!
26263; 5,3,93,0;g041027.sql;!
26264; 5,3,93,0;g041027.sql;!
26265; 5,3,93,0;g041027.sql;!
26266; 5,3,93,0;g041027.sql;!
26267; 5,3,93,0;g041027.sql;!
26268; 5,3,93,0;g041027.sql;!
26269; 5,3,93,0;g041039.sql;!
26270; 5,3,93,0;g041039.sql;!
26291; 5,3,93,0;g041048.sql;!
 
 

mood
Publicité
Posté le 14-04-2008 à 18:31:12  profilanswer
 

n°1717568
tegu
Posté le 15-04-2008 à 09:58:11  profilanswer
 

Ceux qui conseillent de programmer en VBA devraient aider les personnes à qui ils conseillent ça ; ils verraient que ça n'est pas toujours la meilleure méthode.
 
Déjà, VBA veut dire Visual Basic for Application, soit un langage de prog lié à un logiciel Microsoft (Excel, Word, Outlook, Access, Powerpoint, ...)
Dans ton cas, ça ne va pas.
Il te reste donc VB6 ou VBS pour faire ton projet.
VB6 passe par une pseudo compil qui délivre un .exe nécessitant des dll de runtime et donc un processus d'installation : un brin chiant pour faire un truc vite fait.
Reste VBS, et en dehors du fait que je ne maîtrise pas trop cette variante de VB, je te conseille d'expliquer ce que fait ton script, car tout le monde ici ne saura pas l'interpréter correctement.
 

n°1717688
richardjf
Posté le 15-04-2008 à 11:38:56  profilanswer
 

Bonjour,
j'ai une collection de 195 fichiers. je dois parcourir chaque fichier et lorsque je trouve une ligne
Insert Into DISCOUNT_RESTRICTIONS Values (26255, 5, 3, 15, 0)
je dois insérer à la suite
Insert Into DISCOUNT_RESTRICTIONS Values (26255, 5, 3, 93, 0)
bien sur pour chacun des 195 fic il existe un nombre variable de codes (connus pour chaque fichier) comme "26255" pour lesquels l'opération doit être faite.

n°1717767
kiki29
Posté le 15-04-2008 à 13:05:58  profilanswer
 

Salut, peut-être en adaptant qqch comme


Option Explicit
Option Compare Text
 
Private Sub Insertion(ByVal sFichierDepart As String, ByVal sFichierFinal As String, _
                      ByVal sStrCompar As String, ByVal sStrAdd As String)
Dim NumFichier1 As Integer, NumFichier2 As Integer
Dim Chaine As String
Dim Pos As Integer
 
    Close
    NumFichier1 = FreeFile
    Open sFichierDepart For Input As #NumFichier1
    NumFichier2 = FreeFile
        Open sFichierFinal For Output As #NumFichier2
            Do While Not EOF(NumFichier1)
                Line Input #NumFichier1, Chaine
                Print #NumFichier2, Chaine
                Pos = InStr(Chaine, sStrCompar)
                If Pos > 0 Then Print #NumFichier2, sStrAdd
            Loop
        Close #NumFichier2
    Close #NumFichier1
End Sub


Message édité par kiki29 le 15-04-2008 à 13:49:10
n°1718641
kiki29
Posté le 16-04-2008 à 15:50:06  profilanswer
 

Le manque de fichiers échantillons se fait sentir, passer par http://cjoint.com/ ou http://www.cijoint.fr/

n°1719801
richardjf
Posté le 18-04-2008 à 12:00:54  profilanswer
 

Grand merci à kiki29, mon vba est revenu un peu et sa solution a été légèrement modifiée, ça marche nickel.


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

  insérer des lignes dans des fichiers

 

Sujets relatifs
j'ai un pb d'insertion de lignes dans un fichierRécupération de fichiers
insérer une ligne dans le fichierfonction pour lister les fichiers d'un repertoire
Générer des fichiers Excel en PHP sur un serveur LinuxInserer une mire sur une video
[Javascript] héritage entre classe dans des fichiers différentslien entre 2 fichiers excel sous vba
[Résolu][Ubuntu] Copie automatique de fichiers au branchement clé usbDéplacer des fichiers
Plus de sujets relatifs à : insérer des lignes dans des fichiers


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