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 :

[VBA-E] modifier contenu d'un fichier.


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut [VBA-E] modifier contenu d'un fichier.
    Bonjour à tous,

    cela faisait un petit moment que je n'étais pas venu. ( je ne faisais plus de programation.)

    Bon voilà j'explique mon problème.

    J'ai une 100ène de fichier excel sous le répertoire C:\référentiel avec des noms tous différents.
    Tous ces fichiers excel ont la même structure : 1 seul onglet appelé masque.

    Maintenant que notre système qualité évolue, j'ai créé un nouveau fichier Excel intitulé Exemplaire avec 2 onglets (1 "historique" , 1 "fiche").

    Je souhaiterai : ouvrir 1 à 1 mes fichiers excel du répertoire C:\référentiel et copier le contenu de l'onglet masque dans l'onglet "fiche" de mon fichier Exemplaire puis l'enregistrer sous le même nom que le fichier initial dans le répertoire C:\nouveau.

    Je ne sais pas comment m'y prendre, pouvez vous m'aider ???
    - soit par des exemples
    - soit par des infos sur comment procéder

    Merci encore de votre aide !!! (j'ai confiance en vous)

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut
    on peut faire quelque chose, mais ça dépend du point ou tu en es.
    1 tes onglets fiche et historique sont vides?
    dans ce cas, je te conseille plutot d'ouvrir tes fichiers, ajouter une feuille
    puis baptiser histo et rebaptiser la feuille masque en fiche. il te suffit ensuite d'enregistrer le fichier a l'identique. éventuellement ensuite si le veux, tu déplace tes fichiers vers le nouveau répertoire, pas besoin de faire un code pour une opération que tu ne feras qu'une fois
    2 la feuille fiche, est la même que la feuille masque mais histo a un format particulier. ( a mon sens, cas le plus probable)
    tu rebaptise masque en fiche, tu copie la feuille histo a partir du fichier source, là aussi tu peux enregistrer normalement les fichiers
    3 plus délicat, il y a un traitement des données de masque pour les adapter a fiche, éventuellement vers histo également, mais ça m'étonnerai)
    là tu a tout interet a enregistrer sous, parce il y a risque de perte en cas de fausse manip.
    c'est quoi ton cas?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    Désolé mais mon cas correspond plus au n°3.
    J'explique :
    Je dispose de plusieurs fichiers excel avec 1 seul onglet ("masque")mise en page particulière.
    Cependant, mon entreprise vient d'etre certifié ISO9000 (Qualité) et donc mes fiches doivent avoir un masque particulier.
    J'ai donc créé un fichier intitullé nlle fiche.xls composé de 2 onglets (1 Historique et autre Fiche).
    Le mode opératoire que je souhaite utilisé est le suivant :
    1) j'ouvre ma feuille nlle fiche.xls
    2)j'active les macros
    3) je lance mon programme
    3-1) il ouvre ma première fiche excel appelé 1.xls situé sous c:\référentiel
    3-2) il copie l'ensemble des données de l'onglet "masque" de 1.xls dans la l'onglet "Fiche" de nlle fiche.xls
    3-3) il enregistre et renomme nlle fiche.xls dans c:\Nlle fiche\ 1.xls
    3-4) il passe ensuite au fichier excel suivant du répertoire référentiel intitulé "contrôle A-B.xls"
    3-5) il refait les étapes 3-1 -> 3-4 pour tous les fichiers excel de c:\référentiel

    Au secours, je n'y arrive pas !!!!

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par mulanzia2003
    Au secours, je n'y arrive pas !!!!
    Et qu'as-tu déjà fait?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    bon, cela n'a pas l'air trop dificile mais cette partie là
    3-2) il copie l'ensemble des données de l'onglet "masque" de 1.xls dans la l'onglet "Fiche" de nlle fiche.xls
    est très personalisée. pas moyen de faire quelque chose sans voir les deux fichiers, mais cela ne devrais pas poser de problemes particuliers.
    donc il faudrait que tu mette un exemplaire des fichiers.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    bonjour, voici un petit bout du code comment je souhaiterai fonctionner.
    Ce code est lancé à partir d'un bouton dans un fichier intitulé :
    liste des masque.xls.
    Il comprend 5 onglets :
    Onglet n°1 récapitulatif (uniquement des calculs) -> c'est ici que j'ai mis mon bouton
    Onglet n°2 : liste des fiche de unité FUS100
    Onglet n°3 : liste des fiche de unité FUS200
    Onglet n°4 : liste des fiche de unité FUS300
    Onglet n°5 : liste des fiche de unité FUS400

    Les données dans les onglets 2 -> 4 sont identiques dans la forme. La colonne Y regroupe l'ensemble des noms de fichiers dans lesquels je souhaite modifier le masque.

    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
     
    For i = 3 To 302
        NomFichier = Worksheets("FUS100").Cells(i, 25).Value
        ChDir "O:\PLANS_MAINTENANCE\Plan de maintenance"
        Workbooks.Open Filename:= _
            "O:\PLANS_MAINTENANCE\Plan de maintenance\masque fiche de maintenance.xls"
        ChDir "J:\Fus_gene\Préventif\Référentiel\U100\"
        Workbooks.Open Filename:= _
            "J:\Fus_gene\Préventif\Référentiel\U100\" & NomFichier & ".xls"
        Sheets(1).Activate
        Columns("A:H").Select      '"ici cela Bloque je sais pas pourquoi ?"'
        Selection.Copy
        Windows("masque fiche de maintenance.xls").Activate
        Range("A1").Select
        ActiveSheet.Paste
    J'ai besoin d'aide !!!!

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    voici le code que j'ai réalisé :
    il fonctionne pour la première boucle mais bug lors du 2ème passage.
    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
    26
    27
    28
     
    Private Sub CommandButton3_Click()
    For i = 3 To 302
        NomFichier = Worksheets("FUS100").Cells(i, 25).Value
     
        ChDir "O:\PLANS_MAINTENANCE\Plan de maintenance"
        Workbooks.Open Filename:= _
            "O:\PLANS_MAINTENANCE\Plan de maintenance\masque fiche de maintenance.xls"
        ChDir "J:\Fus_gene\Préventif\Référentiel\U100\"
        Workbooks.Open Filename:= _
            "J:\Fus_gene\Préventif\Référentiel\U100\" & NomFichier & ".xls"
        Sheets(1).Activate
        Worksheets(1).Columns("A:H").Select
        Selection.Copy
        Windows("masque fiche de maintenance.xls").Activate
        Worksheets(2).Range("A1").Select
        ActiveSheet.Paste
        ChDir "D:\Documents and Settings\F700239\Desktop\Maintenance\U100"
    '    Windows("masque fiche de maintenance.xls").Activate
        ActiveWorkbook.SaveAs Filename:= _
            "D:\Documents and Settings\F700239\Desktop\Maintenance\U100\" & NomFichier & ".xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
        'Stop
        Windows("Planning préventif FUS100 2007.xls").Activate
        Worksheets("FUS100").Select
    Next
    End Sub
    L'erreur est sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        ActiveWorkbook.SaveAs Filename:= _
            "D:\Documents and Settings\F700239\Desktop\Maintenance\U100\" & NomFichier & ".xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    le renvoie est le suivant : voir fichier joint

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Déjà, simplifie ton code, on y verra plus clair
    Workbooks.Open Filename:= _
    "J:\Fus_gene\Préventif\Référentiel\U100\" & NomFichier & ".xls"
    Sheets(1).Activate
    Worksheets(1).Columns("A:H").Select
    Selection.Copy
    Windows("masque fiche de maintenance.xls").Activate
    Worksheets(2).Range("A1").Select
    ActiveSheet.Paste
    peut s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Workbooks.Open Filename:= _
            "J:\Fus_gene\Préventif\Référentiel\U100\" & NomFichier & ".xls"
        DoEvents 'pour laisser le tps à ton fichier de s'ouvrir
        Worksheets(1).Columns("A:H").Copy _
        destination:=Worksheets("masque fiche de maintenance.xls").Range("A1")
        DoEvents ' laisse le temps à la copie de se faire
    Tu dis si t'es content, sinon... tu dis aussi

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 289
    Points : 148
    Points
    148
    Par défaut
    ok je te remercie, je teste et je te dis
    merci quand même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier Contenu d'un fichier XML Javascript
    Par missd12 dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 15/07/2009, 13h31
  2. Formule VBA pour modifier contenu celules
    Par Phoceens dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/03/2009, 18h37
  3. VBA Récupérer le contenu d'un fichier texte dans un champs
    Par sperchey dans le forum VBA Access
    Réponses: 7
    Dernier message: 17/06/2008, 14h05
  4. [VBA-E] Modifier le contenu du résumé d'un fichier
    Par le_sonic dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/05/2006, 17h50
  5. [VBA-E] Modifier le contenu d'un range sans boucle
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/04/2006, 11h19

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