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] Copier une feuille d'un fichier 1 sur un fichier 2


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut [VBA-E] Copier une feuille d'un fichier 1 sur un fichier 2
    Bonjour,

    Je vous explique mon problème :

    Mon programme en vba ouvre un fichier Excel et je dois ouvrir un deuxième fichier excel et copier une feuille du premier dans le deuxième.
    Je n'arrive pas à m'en sortir en car je ne sais manipuler que le Workbook actif.

    Voici mon code un peu bizarre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each file In dossier.Files
        f = file.Name
        Workbooks.Open file
        CopieActivite

    A ce stade, file est mon premier fichier, je lance CopieActivité qui va ouvrir File2 et je dois copier une feuille de file1 à 2. Une fois file2 ouvert, comment faire?

    Un grand merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    Par exemple
    pouraller et venir d'un workbook à un autre

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par helios77
    Par exemple
    pouraller et venir d'un workbook à un autre
    Ok mais son nom c'est quoi? le chemin ?

  4. #4
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Coucou,

    Essaie plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("File1.xls").Worksheets("Feuil1").Copy Workbooks("File2.xls").Worksheets("Feuil1 ou 2 ou 3")
    Voili Voilu

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par idir.17
    Coucou,

    Essaie plutôt

    Workbooks("File1.xls").Worksheets("Feuil1").Copy Workbooks("File2.xls").Worksheets("Feuil1 ou 2 ou 3")

    Voili Voilu
    Oui mais je n'ai qu'une feuille dans le fichier 2, je dois la rajouter après la feuille 1...

  6. #6
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut
    Il me met en plus que l'indice n'appartient pas à la selection....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Workbooks(file).Worksheets("Activité mois").Copy Workbooks(PathTemplate).Worksheets("Modele de CO")

    file et PathTemplate sont les chemins vers les fichiers...

  7. #7
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Tout simplement,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("File1.xls").Worksheets("Feuil1").Copy Workbooks("File2.xls").Worksheets("Feuil1 ou 2 ou 3")
    Cette ligne de code copie la feuille 1 de ton file1 APRES la feuille 1 ou 2 ou 3 de ton file 2

    Si tu veux avant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("File1.xls").Worksheets("Feuil1").Copy, Workbooks("File2.xls").Worksheets("Feuil1 ou 2 ou 3")
    tu rajoutes une virgule

  8. #8
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut
    Bon j'ai fini par utiliser ce code trouver sur internet qui fonctionne :

    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
    Public Sub CopierFeuilleExcel(ByVal sMonBookDeCopie As String, ByVal sMonBookDeDestination As String, _ 
    ByVal sNomFeuilleACopier As String, ByVal sNomFeuilleCopier As String)
     
    If Dir(sMonBookDeCopie) <> "" And Dir(sMonBookDeDestination) <> "" Then
    Dim xlApp As Microsoft.Office.Interop.Excel.Application 
    Dim xlBookDeCopie As Microsoft.Office.Interop.Excel.Workbook
    Dim xlBookDeDestination As Microsoft.Office.Interop.Excel.Workbook 
    Dim i As Integer
     
    Dim j As Integer
     
    If sMonBookDeCopie <> sMonBookDeDestination Then
    xlApp = CreateObject("Excel.Application") 
    xlBookDeCopie = xlApp.Workbooks.Open(sMonBookDeCopie)
     
    xlBookDeDestination = xlApp.Workbooks.Open(sMonBookDeDestination)
    For i = 1 To xlBookDeCopie.Sheets.Count 
    If xlBookDeCopie.Sheets(i).Name = sNomFeuilleACopier Then
     
    xlBookDeCopie.Activate()
     
    xlBookDeCopie.Sheets(sNomFeuilleACopier).Select()
     
    xlBookDeCopie.Sheets(sNomFeuilleACopier).Copy(After:=xlBookDeDestination. _
     
    Sheets(xlBookDeDestination.Sheets.Count))
    For j = 1 To xlBookDeDestination.Sheets.Count 
    If xlBookDeDestination.Sheets(j).Name = sNomFeuilleCopier Then
    MsgBox("La feuille copiée n'a pas pu être renommée, ce nom existe déjà!", MsgBoxStyle.Critical) 
    Exit For
     
    ElseIf j = xlBookDeDestination.Sheets.Count Then
     
    xlBookDeDestination.Sheets(j).Name = sNomFeuilleCopier
     
    End If
    Next j 
    Exit For
     
    ElseIf i = xlBookDeCopie.Sheets.Count Then
    MsgBox("La feuille à copier n'existe pas!", MsgBoxStyle.Critical) 
    End If
    Next i 
    xlBookDeCopie.Close(True)xlBookDeDestination.Close(
    True) 
    xlApp.Quit()
     
    xlBookDeCopie = Nothing
     
    xlBookDeDestination = Nothing
     
    xlApp = Nothing
     
    ElseIf sMonBookDeCopie = sMonBookDeDestination Then
    xlApp = CreateObject("Excel.Application") 
    xlBookDeCopie = xlApp.Workbooks.Open(sMonBookDeCopie)
    For i = 1 To xlBookDeCopie.Sheets.Count 
    If xlBookDeCopie.Sheets(i).Name = sNomFeuilleACopier Then
     
    xlBookDeCopie.Activate()
     
    xlBookDeCopie.Sheets(sNomFeuilleACopier).Select()
     
    xlBookDeCopie.Sheets(sNomFeuilleACopier).Copy(After:=xlBookDeCopie. _
     
    Sheets(xlBookDeCopie.Sheets.Count))
    For j = 1 To xlBookDeCopie.Sheets.Count 
    If xlBookDeCopie.Sheets(j).Name = sNomFeuilleCopier Then
    MsgBox("La feuille copiée n'a pas pu être renommée, ce nom existe déjà!", MsgBoxStyle.Critical) 
    Exit For
     
    ElseIf j = xlBookDeCopie.Sheets.Count Then
     
    xlBookDeCopie.Sheets(j).Name = sNomFeuilleCopier
     
    End If
    Next j 
    Exit For
     
    ElseIf i = xlBookDeCopie.Sheets.Count Then
    MsgBox("La feuille à copier n'existe pas!", MsgBoxStyle.Critical) 
    End If
    Next ixlBookDeCopie.Close(True) 
    xlApp.Quit()
     
    xlBookDeCopie = Nothing
     
    xlApp = Nothing
     
    End If
     
    Else
    MsgBox("Le fichier n'existe pas, vérifier le chemin !", MsgBoxStyle.Critical) 
    End If
     
    End Sub

    Moi je dois faire un collage spéciale pour recopier seulement les valeurs. J'avais pensé à l'astuce suivante : je reselection ma feuille fraichement copié et je fais un collage spéciale. J'ai enregistré une macro avec l'enregistreur d'excel qui m'a sorti le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Mais je n'arrive pas à l'adapter dans le code précédent....

    Comment faire ?

  9. #9
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 174
    Points : 62
    Points
    62
    Par défaut
    J'ai essayé de faire ça mais j'obtient le message suivant :

    la methode PasteSpecial de la classe Range a échoué...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      xlBookDeDestination.Sheets(j).Name = sNomFeuilleCopier
                     xlBookDeDestination.Activate
     
                    xlBookDeDestination.Sheets(sNomFeuilleCopier).Select
                                     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                     :=False, Transpose:=False
    Je ne comprends pas, je selection, puis je copie...

Discussions similaires

  1. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 12h51
  2. [XL-2010] Copier une feuille d'un classeur existant sur un nouveau classeur avec vba
    Par missy060 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/06/2013, 00h46
  3. copier une feuille excel vers un autre fichier excel en access VBA
    Par acbdev dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/03/2008, 09h32
  4. [VBA-E] Copier une feuille et trier la feuille résultante
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/04/2007, 09h17
  5. [VBA-E] Copier une feuille excel d'un fichier A vers un fichier B
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 28
    Dernier message: 22/03/2007, 10h49

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