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 :

Copier Coller données d'un autre classeur: problèmes [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut Copier Coller données d'un autre classeur: problèmes
    Bonjour,

    J'ai un problème avec une macro.
    J'ai une macro qui doit aller ouvrir un classeur pour y copier l'ensemble des données après avoir démasquer et défiltrer la feuille puis venir coller ces données dans le classeur de destination, dans une feuille précise préalablement vidée (à rajouter dans le code) de son contenu par la macro.

    Mais quand je la fais tourner en appuyant sur le bouton, les données ne se collent pas. Je n'ai pas de msg d'erreur mais ça ne fonctionne pas.

    Je vous ai joint les fichiers avec la macro.Fichier_Cible.xlsmFichier_Source.xlsx

    J'ai vraiment besoin d'aide. Si une bonne âme pouvait trouver la solution

    Merci.

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour Alexia31000

    Le nom du classeur n'est pas Fichier_Cible.xslm.
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filename = "Fichier_Cible.xslm"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Filename = Thisworkbook.name
    Pour que les erreurs continuent d'être signalées, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    On Error Resume Next
        Worksheets(Sheet_Input).ShowAllData
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On Error Resume Next
        Worksheets(Sheet_Input).ShowAllData
        On Error GoTo 0

  3. #3
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonsoir le fil,
    Effectivement, il y a un pb avec tes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows(Filename).Activate
    qui n'active rien.
    Personnellement je préfère utiliser les ranges avec tout dedans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("[Fichier_Cible]Destination!A1").Value = "Date of last copy"
    , ça évite les activate et en plus je sais ou je suis.
    En reprenant ton code et en rectifiant ces parties, ça fonctionne pour moi
    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
    102
    103
    104
    105
    106
    Sub AOP_file_Copy()
     
        'Condition de fonctionnement : les fichiers Resources Plan et AOP file doivent être dans le même dossier
     
        If MsgBox(" => Check that Resources Plan and AOP files are in the same folder", vbOKCancel) = vbOK Then
        End If
     
        ' Déclaration de variables
        filePath = ThisWorkbook.Path
        Filename = "Fichier_Cible.xslm"
        fileAOPfile = "Fichier_Source.xlsx"
        Sheet_Input = "Total"
        Sheet_Output = "Destination"
        col_ProjectName = 6      ' Car la colonne contenant les noms de projets est la colonne F
        last_Col_AOP = 46        ' Car la dernière colonne est la colonne AT
     
     
        ' Fermeture d'un classeur ouvert de même nom : fileMethodsTools
        For Each w In Workbooks
            If w.Name Like fileAOPfile Then
                w.Close savechanges:=False
            ElseIf w.Name Like fileResult Then
                w.Close savechanges:=True
            End If
        Next w
     
     
        ' Ouverture et activation de AOPfile
        Workbooks.Open (filePath & "\Fichier_Source.xlsx")
        Windows("Fichier_Source.xlsx").Activate
        Sheets(Sheet_Input).Select
     
        'Déprotéger la feuille
        Sheets(Sheet_Input).Unprotect ("ESDIProgram")
     
     
        'Afficher toutes les colonnes et toutes les lignes masquées
        With Sheets(Sheet_Input).Cells
            .EntireColumn.Hidden = False
            .EntireRow.Hidden = False
        End With
     
        ' Tous les filtres de la ligne 2 du fichier fileAOPfile sont mis à "Select All"
        'nb_Filters_ToBeSelectAll = 2
        'max_nb_Filters_ToBeSelectAll = col_Last_Filter - col_Begin_Filter
        'Do While nb_Filters_ToBeSelectAll <= max_nb_Filters_ToBeSelectAll
           ' Cells.AutoFilter Field:=nb_Filters_ToBeSelectAll
           ' nb_Filters_ToBeSelectAll = nb_Filters_ToBeSelectAll + 1
        'Loop
        On Error Resume Next
        Worksheets(Sheet_Input).ShowAllData
     
        'Sélectionne la dernière ligne complétée
        lastRow_Input = Columns(col_ProjectName).Find("*", , , , xlByColumns, xlPrevious).Row
     
        ' Copie de la plage de données colonne A to AT des lignes 1 à dernière sélectionnée
        Set rng_Select_AOP = Range(Cells(1, col_ProjectName - 5), Cells(lastRow_Input, last_Col_AOP))
        With rng_Select_AOP
            .Copy
        End With
    Range("[Fichier_Cible]Destination!A1").PasteSpecial xlPasteAll
     
        ' Collage des lignes copiées dans le fichier de résultat
        Windows(Filename).Activate
        Sheets(Sheet_Output).Select
        Cells(1, 1).Select
        With ActiveSheet.Paste
        End With
     
     
        ' Vide le presse-papier
        Application.CutCopyMode = False
     
     
        ' Mettre la date du jour dans la cellule A3 de la feuille "AOPfileCopy"
        Range("[Fichier_Cible]Destination!A1").Value = "Date of last copy"
        Range("[Fichier_Cible]Destination!C1").Value = Format(Now, "mm/dd/yyyy")
    '    Cells(1, 1).Value = "Date of last copy"
    '    Cells(1, 3).Value = Format(Now, "mm/dd/yyyy")
     
        '1 est l'index de la couleur dans la palette des 56 couleurs.
        ActiveWorkbook.Colors(1) = RGB(226, 107, 10)
        Workbooks("Fichier_Cible.xlsm").Colors(1) = RGB(226, 107, 10)
        'Colorie les cellules
        Range("[Fichier_Cible]Destination!A1:C1").Interior.ColorIndex = 1
    '    Cells(1, 1).Interior.ColorIndex = 1
    '    Cells(1, 2).Interior.ColorIndex = 1
    '    Cells(1, 3).Interior.ColorIndex = 1
     
        ' Mettre la date du jour dans la cellule A3 de la feuille "Extracts"
        Range("[Fichier_Cible]Extract!C1").Value = Format(Now, "mm/dd/yyyy")
    '    Windows(Filename).Activate
    '    Sheets("Extract").Select
    '    Cells(1, 3).Value = Format(Now, "mm/dd/yyyy")
     
     
        ' Fermeture de tous les classeurs
        For Each w In Workbooks
           If w.Name Like fileAOPfile Then
              w.Close savechanges:=False
           End If
        Next w
     
        MsgBox ("AOP file copy is Done")
     
    End Sub
    Bonne fin de soirée

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut
    Super! Merci à vous deux!

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

Discussions similaires

  1. [XL-2010] Copier les données dans un autre classeur
    Par idhmida dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2013, 15h17
  2. Réponses: 0
    Dernier message: 25/05/2013, 14h36
  3. Problème pour trouver et copier des données dans un autre workbooks
    Par bilou_12 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/04/2012, 10h23
  4. copier coller données d'une feuille à une autre
    Par Caps corp dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/01/2008, 09h23
  5. Pb copier coller de feuilles d un classeur a un autre.
    Par sebastien_oasis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 14h08

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