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 :

Transférer des données d'un fichier dans un autre et Renommer le fichier [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Transférer des données d'un fichier dans un autre et Renommer le fichier
    Bonjour,

    Je cherche depuis hier (et je continus) du code en VBA qui me permettrait de réaliser 2 Opérations.

    J'ai deux fichiers excel.
    Le premier que j'appelerai "données.xls" ressort d'une extraction d'une base access. Il s'agit d'un fichier avec des données sur des clients. (Une ligne par client avec par exemple: codeclient, nomclient, prenomclient....)

    L'autre fichier est une plaquette avec plusieurs feuilles consernant des informations sur ces clients: Nom, Prénom Adresse....
    Je l'appèlerais: "client.xls"

    Je souhaiterais dans un premier temps:

    1- Créer autant de fichiers "client.xls", qu'il y a de lignes dans le fichier "données" et renommer chaques fichiers par le code client (code unique).

    2- Dans la deuxième Opération, j'aimerais à partir du fichier "données.xls" transfrèrer ces données dans les fichiers "client.xls" afin de remplir automatiquement les informations consernant chaque client.

    Je suis débutant en VBA mais je me débrouille à récupèrer du code par ci par là pour faire ce que je veux mais là, je ne trouve vraiment pas...

    Si quelqu'un peut me venir en aide ça ne serait vraiment pas de refus!!!

    Merci d'avance!!!

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    Une piste, à mettre dans un module standard, à adapter et tester :
    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
     
    Sub CreerClasseur()
     
        Dim Cls As Workbook
        Dim Plage As Range
        Dim Cel As Range
     
        'la plage des codes clients est en colonne A
        With ActiveSheet
            Set Plage = .Range(.[A1], .[A65536].End(xlUp))
        End With
     
        For Each Cel In Plage
     
            'le code étant sensé être unique, un classeur est créé
            'pour chaque ligne de la colonne A puis la ligne
            'entière est copiée dans la feuille "Feuil1" du
            'classeur, ce dernier est enregistré dans le même dossier
            'que le classeur "données.xls" avec comme nom le code client
            'puis fermé afin de ne pas encombrer
            Set Cls = Workbooks.Add
            Cel.EntireRow.Copy Cls.Worksheets("Feuil1").[A1]
            Cls.SaveAs ThisWorkbook.Path & "\" & Cel.Value & ".xls"
            Cls.Close
     
        Next Cel
     
    End Sub
    Hervé.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je reviens vers vous car je n'arrive toujours pas à ce que je veux mais j'y suis tout presque.

    Mon problème vient du SaveAs qui ne prend pas en compte la valeur de la cellule, du coup il sauvegarde toujours sur le même fichier...

    Si quelqu'un sait faire merci d'avance!!

    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
    Private Sub CommandButton5_Click()
     
    Dim bd_client, feuille, chemin As Variant
    Dim i As Integer
     
    chemin = "D:\Documents and Settings\user\Bureau\Automatisation_FichesDémat\tests\"
    Set bd_client = Workbooks.Open("D:\Documents and Settings\user\Bureau\Automatisation_FichesDémat\tests\bd_client.xls")
    Set feuille = Workbooks.Open("D:\Documents and Settings\user\Bureau\Automatisation_FichesDémat\tests\feuille.xls")
     
    For i = 2 To 4
     
    feuille.Worksheets("Feuil1").Cells(4, 3) = bd_client.Worksheets("bd").Cells(i, 1)
    feuille.Worksheets("Feuil1").Cells(11, 3) = bd_client.Worksheets("bd").Cells(i, 2)
    feuille.Worksheets("Feuil1").Cells(18, 3) = bd_client.Worksheets("bd").Cells(i, 3)
     
     
            feuille.SaveAs "D:\Documents and Settings\user\Bureau\Automatisation_FichesDémat\tests\Cells(i, 2).Value " & ".xls"
     
    Next i
     
     
    End Sub

  4. #4
    Membre habitué Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Points : 154
    Points
    154
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.SaveAs "D:\Documents and Settings\user\Bureau\Automatisation_FichesDémat\tests\" & Cells(i, 2).Value & ".xls"
    Cordialement

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci Louiz mais j'avais déjà tenté avec ça mais j'ai ce message d'erreur:

    "Erreur d'exécution '1004': La méthode SaveAs de la classe Workbook a échoué"

    Je pense que j'ai oublié quelque chose mais je ne sais pas quoi

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Puisque tu défini en début de code ton chemin, utilise ta variable plutôt que l'écrire en dur de cette façon, pour une modif ultérieure ça sera plus facile :
    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
     
    Private Sub CommandButton5_Click()
     
        Dim bd_client As Workbook
        Dim feuille As Workbook
        Dim chemin As String
        Dim i As Integer
     
        chemin = "D:\Documents and Settings\user\Bureau\Automatisation_FichesDémat\tests\"
     
        Set bd_client = Workbooks.Open(chemin & "bd_client.xls")
     
        Set feuille = Workbooks.Open(chemin & "feuille.xls")
     
        For i = 2 To 4
     
        With feuille.Worksheets("Feuil1")
            .Cells(4, 3) = bd_client.Worksheets("bd").Cells(i, 1)
            .Cells(11, 3) = bd_client.Worksheets("bd").Cells(i, 2)
            .Cells(18, 3) = bd_client.Worksheets("bd").Cells(i, 3)
        End With
     
            .SaveAs chemin & Cells(i, 2).Value & ".xls"
     
        Next i
     
    End Sub
    Hervé.

  7. #7
    Membre habitué Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Points : 154
    Points
    154
    Par défaut
    Re,

    Est-ce que la feuille active, lorsque tu enregistres le classeur, a les cellules B2, B3, B4 non vides? Sinon il faut mettre le chemin complet avec le nom du classeur et la feuille:

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feuille.SaveAs chemin & bd_client.Worksheets("bd").Cells(i, 2).Value & ".xls"
    Cordialement

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci LouiMz et Theze pour votre aide.

    Ca marche nikel!!!

    Merci

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

Discussions similaires

  1. transférer des données d'une table dans une autre table
    Par alexkickstand dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/09/2007, 18h01
  2. [VBA-E]transposer des données d'une feuille dans une autre
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 26/03/2007, 18h47
  3. Réponses: 6
    Dernier message: 01/08/2006, 18h45
  4. recopi des données d'une table dans une autre
    Par moicats dans le forum Access
    Réponses: 5
    Dernier message: 06/04/2006, 21h12
  5. concatenation des données d'une table dans une autre
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/10/2004, 11h38

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