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 :

Comment manipuler plusieurs fichiers Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Par défaut Comment manipuler plusieurs fichiers Excel
    Comme vous pouvez le voir, je suis tout nouveau que ce sois sur ce site ou même VBA, je m'y suis mis avant-hier (je connais quand même le C). Ayant quelques 200 feuilles Excel à faire, j'en suis venu à penser que les macros pouvais m'aider, mais j'ai malheureusement des problèmes, le programme que je souhaite faire nécessite l'utilisation de 3 fichiers (2 sources + 1) et ne fonctionne pas je ne vois pas comment faire autrement pour faire l'appel des fichiers (je crois que c'est ca qui marche pas entre autres).

    d'ou ma question, comment faire pour utiliser plusieurs fichiers Excel sous VB?

    je mets mon programme pour que vous compreniez mieux comment j'ai fais et qui n'est pas bon.

    --
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
     
    Sub OM()
     
    'Declaration des variables
     
    Dim FP As Excel.Workbook
    Dim FPws As Excel.Worksheet
    Dim Listing As Excel.Workbook
    Dim Listingws As Excel.Worksheet
    Dim Produit As Excel.Workbook
    Dim Produitws As Excel.Worksheet
    Dim lig
    Dim I As Integer
     
     
    'Ouverture des applications
     
    Workbooks.Add ("C:\Documents and Settings\tai-sama\Mes documents\1. Olivier\ESIREM\Stage\Stage Bodycote\FP.xls")
    Set FP = ActiveWorkbook
    Set FPws = FP.Worksheets(1)
    FP.Sheets.Add After:=Sheets(FP.Sheets.Count), Count:=200
    Call Trierfeuilles
     
    Set Listing = Workbooks.Open("C:\Documents and Settings\tai-sama\Mes documents\1. Olivier\ESIREM\Stage\Stage Bodycote\AA Listing produits chimiques.xls")
    Set Listingws = Listing.Worksheets(2)
     
    Set Produit = Workbooks.Open("C:\Documents and Settings\tai-sama\Mes documents\1. Olivier\ESIREM\Stage\Stage Bodycote\Création Fiche de produits\Fiche Produits.xls")
    Set Produitws = Produit.Worksheets(1)
                                                            'Debut du programme de copie d'une sélection vers une autre feuille
    Set Produitws = ActiveWorkbook.Sheets(1)
    Produitws("Feuil1").Range("A1:AS42").Copy
    Set FPws = ActiveWorkbook.Sheets(1)                     'activation de la feuille que je souhaite
    FPws("Feuil1").Paste Destination:=FPws("Feuil1").Range("A1:AS42")
                                                            'ou FPws("Feuil1").Paste Destination:=FPws("Feuil1").Range("A1")
    Application.CutCopyMode = False
    Worksheets().FillAcrossSheets Worksheets("Feuil1").Range("A1:AS42", xlFillWithAll) 'doit être rediriger vers le fichier avec les 200 feuilles
     
     
                                                            'Debut du programme de remplissage des données
    Set Listing = ActiveWorkbook
    Set Listingws = Listing.ActiveSheet
     
    I = 1
    lig = 8
        For lig = 8 To 12
     
            Listingws("Feuil2").Range(Listingws.Cells(lig, 3)).Copy
            Set FP = ActiveWorkbook
            Set FPws = FP.ActiveSheet
            Sheets("Feuil(" & I & ")").Select
            FPws("Feuil(" & I & ")").Paste Destination:=FPws("Feuil(" & I & ")").Range(FPws.Cells(7, 12), FPws.Cells(9, 12))
            Set Listing = ActiveWorkbook
            Set Listingws = Listing.ActiveSheet
            Application.CutCopyMode = False
     
            Listingws("Feuil2").Range(Listingws.Cells(lig, 2)).Copy
            Set FP = ActiveWorkbook
            Set FPws = FP.ActiveSheet
            Sheets("Feuil(" & I & ")").Select
            FPws("Feuil(" & I & ")").Paste Destination:=FPws("Feuil(" & I & ")").Range(FPws.Cells(5, 12))
            Set Listing = ActiveWorkbook
            Set Listingws = Listing.ActiveSheet
            Application.CutCopyMode = False
     
            Listingws("Feuil2").Range(Listingws.Cells(lig, 41)).Copy
            Set FP = ActiveWorkbook
            Set FPws = FP.ActiveSheet
            Sheets("Feuil(" & I & ")").Select
            FPws("Feuil(" & I & ")").Paste Destination:=FPws("Feuil(" & I & ")").Range(FPws.Cells(9, 12))
            Set Listing = ActiveWorkbook
            Set Listingws = Listing.ActiveSheet
            Application.CutCopyMode = False
     
            I = I + 1
        Next lig
     
    'Fermeture d'Excel
    FP.Close
    Listing.Close
    Produit.Close
    Set FPws = Nothing
    Set Listingws = Nothing
    Set Listing = Nothing
    Set Produitws = Nothing
    Set Produit = Nothing
     
    'Fin du programme
    End Sub
     
    Sub Trierfeuilles()
     Dim Ws As Object
     Dim I As Byte
     
     Application.ScreenUpdating = False
        For Each Ws In ActiveWorkbook.Sheets
            For I = 2 To ActiveWorkbook.Sheets.Count
                If Sheets(I - 1).Name > Sheets(I).Name Then Sheets(I - 1).Move After:=Sheets(I)
            Next I
        Next Ws
    End Sub
    --
    Merci pour l'aide que vous pourrez m'apporter

  2. #2
    Membre chevronné Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Par défaut
    Maintenant,
    Ce que je ne comprends pas dans ton message :
    - Tu créés les objets Workbook, tu les initialies mais tu ne les utilises pas.

    tu ne les actives pas ou ne les lies pas aux worksheets.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Par défaut
    Bon alors je ne m'y connais pas en VBA mais là c'est d'un point de vue programmation pur donc je pense savoir où ca va pas :

    Quand tu fais tes instructions du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Listing = appExcel.Workbooks.Open("C:\Documents and Settings\tai-sama\Mes documents\1. Olivier\ESIREM\Stage\Stage Bodycote\AA Listing produits chimiques.xls")
    Set Listingws = wbExcel.Worksheet(1) 'ouverture d'un fichier
    Tu créés bien un Objet Workbokk initialisé avec ton fichier dont le lien est passé en paramêtre.
    Mais ensuite tu initialise ton objet Worksheet avec rien du tout, il faut utilisé ton précédent objet, le Workbook.
    Donc si je ne me plante pas cela devrait donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Listing = appExcel.Workbooks.Open("C:\Documents and Settings\tai-sama\Mes documents\1. Olivier\ESIREM\Stage\Stage Bodycote\AA Listing produits chimiques.xls")
    Set Listingws = Listing.Worksheet(1) 'ouverture d'un fichier
    Après si d'autres personnes beaucoup plus à l'aise en VBA désirent me corriger pas de souçis

  4. #4
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Par défaut
    j'ai effectivement changé les différentes choses que vous m'avez dis, disons que ca fonctionne et je vais un peu plus loin, cependant j'ai une erreur qui s'affiche pour RAnge("L1C1:L42C45").select et je dois donc avoir la même erreurà Cells(7,12).Select

    Pourrais-t-on me dire comment faire, j'ai repris ca du Dossier VB-VBA: Programmer efficacement Microsoft Excel



    Je sais que mon problème est maintenant différent ou je le crois... Mais je ne veux pas créer un autre post

    PS: j'ai modifier le programme en haut
    Merci pour votre aide, je comprend un peu mieux

  5. #5
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Par défaut
    C'est bon j'ai réussi, ca marche, il faut mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveSheet.range("L1C1:L42C45").select

  6. #6
    Membre chevronné Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Par défaut
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets().FillAcrossSheets Worksheets("Feuil1").Range("L1C1:L42C45", xlFillWithAll)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets().FillAcrossSheets Worksheets("Feuil1").Range("A1:AS42"), xlFillWithAll
    appuie F1 de temps en temps et regarde bien les structures

  7. #7
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 13
    Par défaut
    En fait, je croyais que c'étais la même chose, et qu'il y avait deux types d'adressage possibles, ce qui veut dire que maitenant je suis en relatif, mais pourquoi est-ce que c'est mieux? et pourquoi avant de changé ca marchais et j'allais à l'erreur suivante (problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("Feuil(i-7)").Select
    ) et maintenant j'ai un problème avec

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/05/2011, 19h05
  2. Réponses: 2
    Dernier message: 20/12/2010, 20h00
  3. comment ouvrir plusieurs fichiers excel?
    Par julianauribe dans le forum MATLAB
    Réponses: 6
    Dernier message: 16/04/2009, 15h45

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