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 cellules d'un classeur fermé [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Par défaut Copier cellules d'un classeur fermé
    Bonjour à tous,

    Je reçoit régulièrement plusieurs fichiers de différents utilisateurs sur lequel j'ai environ 50 données (A13:AM13)
    Je récapitule les données de tous ces fichiers sur un autre fichier, les unes après les autres.

    Je souhaite pouvoir effectuer la manip suivante :

    J'ouvre mon fichier récapitulatif
    Je lance la macro
    Celle-ci me demande quel classeur ouvrir, une fois le classeur choisi, la macro copie les cellules de la bonne feuille, puis les colle (uniquement les valeurs) dans mon fichier récapitulatif au bon endroit, après la dernière ligne utilisée.

    A partir d'internet, j'ai trouvé ces lignes de code, mais ça ne fonctionne pas :

    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
    Sub COPIEDONNEES()
    Dim NomFichierEntree
    Dim Sortie As Workbook
    Dim FeuilleOrigine As Worksheet, FeuilleDestination As Worksheet
     
    'Choisir fichier
    NomFichierEntree = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
    ' On verifie que l'on a selectionné un nom de classeur
    If NomFichierEntree <> False Then
    ' On ouvre le classeur
    Set Sortie = Workbooks.Open(NomFichierEntree)
     
    'Référence feuille origine des données à copier 
    Set FeuilleOrigine = ThisWorkbook.Sheets("ExportQP")
     
    'Référence la feuille de destination des cellules copiées
    Set FeuilleDestination = Sortie.Sheets("Fichier")
     
    ' On copie les cellules de la feuille désirée vers la feuille de sortie
    With FeuilleOrigine
    .Range("A13:AJ13").Value = FeuilleDestination.Range("A65536").En d(xlUp)(2).Value
    End With
     
    ' On ferme le classeur
    Sortie.Close
    End If
    End Sub
    Set FeuilleOrigine = ThisWorkbook.Sheets("ExportQP") : Erreur 9 L'indice n'appartient pas à la sélection
    Même remarque pour la ligne Set FeuilleDestination


    Merci de votre aide

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets("ExportQP")
    Tu n'as pas une feuille qui s'appelle ExportQP dans ton fichier récapitulatif

  3. #3
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Si le code se trouve dans le fichier de récap, il faut changer les objets Workbook comme suit : l'entree est le fichier qu'on ouvre, la sortie le classeur courant.
    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
    Sub COPIEDONNEES()
    Dim NomFichierEntree
    Dim Sortie As Workbook
    Dim Entree As Workbook
    Dim FeuilleOrigine As Worksheet
    Dim FeuilleDestination As Worksheet
    
        Set Sortie = ThisWorkbook
        'Choisir fichier
        NomFichierEntree = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
        ' On verifie que l'on a selectionné un nom de classeur
        If NomFichierEntree <> False Then
            ' On ouvre le classeur
            Set Entree = Workbooks.Open(NomFichierEntree)
            
            'Référence feuille origine des données à copier
            Set FeuilleOrigine = Entree.Sheets("ExportQP")
            
            'Référence la feuille de destination des cellules copiées
            Set FeuilleDestination = Sortie.Sheets("Fichier")
            
            ' On copie les cellules de la feuille désirée vers la feuille de sortie
            With FeuilleOrigine
                .Range("A13:AJ13").Value = FeuilleDestination.Range("A65536").End(xlUp)(2).Value
            End With
            
            ' On ferme le classeur
            Entree.Close
        End If
    End Sub

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Par défaut Copier cellules d'un classeur fermé
    Bonjour Tedo01,

    J'ai essayé tes modifications.

    Elles fonctionnent jusqu'à la copie :
    1- Aucune copie se fait dans mon fichier récap
    2- Les données du fichier source sont effacées (il vaut mieux qu'elles soient conservées)

    Merci pour ton aide

  5. #5
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Ooops ! Il restait une inversion :
    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 COPIEDONNEES()
    Dim NomFichierEntree
    Dim Sortie As Workbook
    Dim Entree As Workbook
    Dim FeuilleOrigine As Worksheet
    Dim FeuilleDestination As Worksheet
    
        Set Sortie = ThisWorkbook
        'Choisir fichier
        NomFichierEntree = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
        ' On verifie que l'on a selectionné un nom de classeur
        If NomFichierEntree <> False Then
            ' On ouvre le classeur
            Set Entree = Workbooks.Open(NomFichierEntree)
            
            'Référence feuille origine des données à copier
            Set FeuilleOrigine = Entree.Sheets("ExportQP")
            
            'Référence la feuille de destination des cellules copiées
            Set FeuilleDestination = Sortie.Sheets("Fichier")
            
            ' On copie les cellules de la feuille désirée vers la feuille de sortie
            FeuilleDestination.Range("A65536").End(xlUp)(2).Value = FeuilleOrigine.Range("A13:AJ13").Value
            
            ' On ferme le classeur
            Entree.Close
        End If
    End Sub

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Par défaut
    J'ai bien pris en compte la dernière inversion.

    Seule la cellule A13 est copiée , les autres ne le sont pas (par contre, les cellules du fichier origine sont bien conservées)

    Merci pour le temps que tu as passé.

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

Discussions similaires

  1. [XL-2007] Recherche valeur cellule dans plusieurs classeurs fermés
    Par Millenniums dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/04/2011, 21h32
  2. [XL-2003] Copier cellules d'un classeur fermé
    Par Pierrade2011 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/02/2011, 16h44
  3. [XL-2007] récupérer une valeur d'une cellule d'un classeur fermé
    Par baricot dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 27/10/2009, 19h36
  4. Réponses: 5
    Dernier message: 15/01/2009, 10h45
  5. Réponses: 2
    Dernier message: 01/12/2008, 12h00

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