IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Modifier un fichier en ecriture


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Par défaut Modifier un fichier en ecriture
    Salut a tous et a toutes,

    J'ai un petit probleme au niveau de la modification d'un fichier .js que je fait via une macro excel VBA.

    Tout ce que je souhaite faire est de rechercher dans le fichier .js la ligne que je souhaite modifier et y apporter la modification souhaité. Jusque la, ca marches impec et voici ma macro qui fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub fichier_Update2()
    Dim LaLigne As String
    Open "\\Srv41101a07\WebRoot\scripts\Update.js" For Input As #1
    Open "\\Srv41101a07\WebRoot\scripts\Update2.js" For Output As #2
    Do While Not EOF(1)
            Input #1, LaLigne
            If LaLigne = "document.form1.DebutMM1.value = '07'" Then
               LaLigne = "document.form1.DebutMM1.value = '10'"
            End If
            Print #2, LaLigne
    Loop
    Close #1
    Close #2
    End Sub
    Mon probleme est lorsque j'ouvre le nouveau fichier créé, soit Update2.js, je realise que lors du nouveau print, il me decalle quelques lignes de mon fichier update.js d'origine. Il me decalle les lignes ou il y a une virgule, chose qu'il ne devrait pas faire car cela cree une erreur lors de l'execution du fichier update2.js

    Je ne sais pas si j'ai été bien clair mais voici aussi en ficheir joint mon fichier update.js de base et le fichier update2.js qui contient la ligne modifier mais helas, qui ne fonctionne pas du au decallage que vous apercevrez au debut du code.

    Votre aide est apprécié d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir, Mimosa

    remplace ton print par un Write

    et dis nous quoi..

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Par défaut
    Salut JackOuYA,

    il fait exactement la meme chose avec le write.

  4. #4
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Re ...

    oui il faut aussi changer le input par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Line Input #1, LaLigne

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    il est si simple dans un tel cas de donner à une variable la valeur du contenu de tout le fichier puis d'utiliser un Replace et d'écraser ensuite le fichier par le résultat ainsi obtenu

    Allons-y donc à main levée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command1_Click()
       Open "\\Srv41101a07\WebRoot\scripts\Update.js" For Input As #1
            strtext = Input(LOF(1), #1)
       Close #1
       strtext = Replace(strtext, "document.form1.DebutMM1.value = '07'", "document.form1.DebutMM1.value = '10'")
       Open "\\Srv41101a07\WebRoot\scripts\Update.js"  For Output As #1
            Print #1, strtext
       Close #1
    End Sub

  6. #6
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    ca ne marcheras pas si le fichier est volumineux

  7. #7
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour tlm,

    J'ai testé le code ci-dessous sur tes fichiers et je n'ai pas de modification de structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub test_modification_ligne()
    Dim colLignes As New Collection
    Dim ff As Integer, i As Integer
    Dim sLigne As String
     
    ff = FreeFile
     
    'Lecture du fichier original, envoie chaque ligne dans la collection avec correction de la ligne
    Open "\\Srv41101a07\WebRoot\scripts\Update.js" For Input As #ff
        While Not EOF(ff)
            Line Input #ff, sLigne
            If sLigne = "document.form1.DebutMM1.value = '07'" Then
               sLigne = "document.form1.DebutMM1.value = '10'"
            End If
            colLignes.Add sLigne
        Wend
    Close #ff
     
    'Réecriture du fichier modifié
    Open "\\Srv41101a07\WebRoot\scripts\Update2.js" For Output As #ff
       For i = 1 To colLignes.Count
            Print #ff, colLignes(i)
       Next
    Close #ff
    End Sub
    PS : Testé sur un fichier de 6000 lignes
    .

  8. #8
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonjour Fring...

    oui le Line Input c'est que j'ai rajouté dans mon deuxiéme post

    bon week-end

  9. #9
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bin...je n'avais pas testé......et ce que UC propose fonctionne également très bien sur le fichier de 6000 lignes

  10. #10
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Pour mon info perso
    Je n'ai pas souvent jonglé avec les fichiers Java Script, il est possible d'avoir un fichier js de 2Go ?

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    il est de toutes manières parfaitement possible de lire un très volumineux fichier par "tronçons" (fractions du contenu)...
    Dans ce cas, toutefois, il conviendra de passer par un fichier "tremplin" alimenté par append...

  12. #12
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    Citation Envoyé par fring
    Pour mon info perso
    Je n'ai pas souvent jonglé avec les fichiers Java Script, il est possible d'avoir un fichier js de 2Go ?
    Pour des fichiers Javascript je ne pense pas, mais sur certains fichiers 'de données' cela arrive encore que généralement on utilise pas Excel pour les manipuler.


    Citation Envoyé par ucfoutu
    il est de toutes manières parfaitement possible de lire un très volumineux fichier par "tronçons" (fractions du contenu)...
    Dans ce cas, toutefois, il conviendra de passer par un fichier "tremplin" alimenté par append...
    Certes, cependant le code pour scinder un fichier en ayant l'assurance que ce découpage ne va pas perturber le fonctionnement global désiré est loin d'être trivial à écrire ce qui fait que le traitement ligne à ligne est souvent un meilleur choix quand on peut être amené à traiter des très gros fichiers.

  13. #13
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Quelle est l'utilitée de changer tout le code quand le probléme initial est :
    Citation Envoyé par Mimosa777 Voir le message
    .....
    Mon probleme est lorsque j'ouvre le nouveau fichier créé, soit Update2.js, je realise que lors du nouveau print, il me decalle quelques lignes de mon fichier update.js d'origine. Il me decalle les lignes ou il y a une virgule, chose qu'il ne devrait pas faire car cela cree une erreur lors de l'execution du fichier ....
    il suffit comme dit plus haut qu'il remplace input #1 par line Input...

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par JackOuYA Voir le message
    Quelle est l'utilitée de changer tout le code
    Bonjour, JacjOuYa,

    l'utilité ? ===>> la différence de rapiidité, entre autres ...

  15. #15
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par bidou Voir le message
    Pour des fichiers Javascript je ne pense pas, mais sur certains fichiers 'de données' cela arrive encore que généralement on utilise pas Excel pour les manipuler.
    Merci pour l'info
    Je n'avais pas fait le calcul mais 2^31 correspond à environ 2 milliard de caractères (à quelques virgules près) ce qui permet quand même de voir venir

    Il ne reste plus à Mimosa qu'à faire le tri dans tout ça

  16. #16
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour, JacjOuYa,

    l'utilité ? ===>> la différence de rapiidité, entre autres ...
    sur que le probléme à mimosa c'est la rapidité d'exécution, et grâce à ton code il devrai gagner quelque chose approchant la 1/2 seconde...

  17. #17
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par JackOuYA Voir le message
    sur que le probléme à mimosa c'est la rapidité d'exécution, et grâce à ton code il devrai gagner quelque chose approchant la 1/2 seconde...
    Il gagnera probablement moins, si son fichier n'est pas volumineux (ou plus, s'il est volumineux).

    Il te reste à comprendre qu'en développement, tout (je dis bien tout) doit être mis en oeuvre pour grapiller ici et là du temps d'exécution. Certains, dont moi, reviennent très soiuvent sur leur propre code pour rendre leur application plus performante. C'est à cet effort-là que l'on distingue un développeur de l'autre.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Je me permets de dire que je ne suis pas d'accord :

    Envoyé par JackOuYA
    sur que le probléme à mimosa c'est la rapidité d'exécution, et grâce à ton code il devrai gagner quelque chose approchant la 1/2 seconde...
    Envoyé par Ucfoutu
    Il gagnera probablement moins, si son fichier n'est pas volumineux (ou plus, s'il est volumineux).

    Il te reste à comprendre qu'en développement, tout (je dis bien tout) doit être mis en oeuvre pour grapiller ici et là du temps d'exécution. Certains, dont moi, reviennent très soiuvent sur leur propre code pour rendre leur application plus performante. C'est à cet effort-là que l'on distingue un développeur de l'autre.
    Si cela était aussi simple il n'y aurait que 2 catégories :
    - les bons développeurs
    - les mauvais développeurs

    Je n'ai jamais pensé faire partie systématiquement de la 2ème catégorie et encore moins de la 1ère.

    C'est en fonction du problème à résoudre, de la complexité de celui-ci.

    Je suis quand même d'accord avec :

    Certains, dont moi, reviennent très soiuvent sur leur propre code pour rendre leur application plus performante.
    Mais pour le reste, s'il est obligatoire d'être un très bon développeur pour être développeur et en l'occurrence d'être le meilleur il vaut mieux arrêter si on n'est pas certain de l'être.

    Et qui va me dire si je le suis ou non, pour le peu que je crois savoir faire ?

    Si vous me le confirmez je suis prêt à m'arrêter, au moins ici.

  19. #19
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, Jacques_Jean,

    Je crois que je répondais tout simplement à une question/doute portant sur l'utilité d'une proposition de code différent.

    Je crois également que nous sommes sur un forum de développement et que chaque amélioration possible doit y être partagée (y compris si une solution opérationnelle avait été donnée) si elle apporte quelque chose.

    Ensuite ? Ben... chacun en fait ce qu'il en veut, ma foi... (mais qu'il aît au moins une chance, s'il vient sur ce forum, de savoir ce qu'il est possible de faire de manière plus performante).

  20. #20
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    Si tout doit être fait pour rendre l'application plus performante, alors il faut utiliser un langage de bas niveau et certainement pas un Visual Basic, il y déjà une contradiction à ce propos. Par ailleurs il n'y aurait que peu d'intérêt à passer 10 jours de développement en plus pour grapiller une seconde sur un traitement de cinq minutes. Le culte de l'optimisation est un de ces nombreux dogmes informatiques avec lequel il convient d'être circonspect.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/02/2012, 11h57
  2. [JexcelAPI]Modifier un fichier excel
    Par sissi_l dans le forum Documents
    Réponses: 3
    Dernier message: 01/06/2007, 01h36
  3. [DOM] [Débutant(e)] Modifier un fichier XML avec DOM
    Par macks dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 05/07/2005, 14h13
  4. [jar] Comment modifier un fichier jar
    Par newfsch dans le forum JBuilder
    Réponses: 5
    Dernier message: 18/07/2004, 14h25
  5. [LG]modifier un fichier
    Par fofovi72 dans le forum Langage
    Réponses: 3
    Dernier message: 15/04/2004, 21h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo