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 :

Bouton parcourir, copier coller


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Bouton parcourir, copier coller
    Bonjour à tous,
    je reviens vers vous car la dernière fois votre aide à été particulièrement efficace...
    J'essai d'écrire une macro qui me permettrais de lancer la fonction parcourir de choisir un classeur (nom pouvant changer) puis copier le contenu de la feuille 1 (Recapconfirm) de ce classeur et de le coller dans mon classeur actif (Situations) à la première page (Base)..

    J'espère avoir été à peu près clair...

    j'ai essayé l’enregistreur de macro mais sans succès car il mémorise un chemin en particulier...

    Puis j'ai trouvé çà mais qui plante au moment de la copie...:
    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 OuvertureFichier()
     
     Dim a As Variant, Nom As String
     
     Application.ScreenUpdating = False
     Nom = ActiveWorkbook.Name
     ChDrive "C:"  ' Choix du lecteur
     ChDir "C:\" 'Choix du répertoire
     a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
         , "Sélection de vos fichiers excel", , True)
     
     Select Case TypeName(a)
         Case Is = "Boolean"
             Exit Sub
         Case Else
             For b = LBound(a) To UBound(a)
                 Workbooks.Open a(b)
             Next
      End Select
      Application.ScreenUpdating = True
     
     
    Workbooks(Nom).Worksheets("données").Cells.ClearContents ' Efface le contenu de la feuille qui va recevoir les données (la feuille existe déjà)
     
    'copie la feuille 1 de mon fichier ouvert dans mon fichier initiale. NE MARCHE PAS
    Workbooks(a).Worksheets(1).Cells.Copy Destination:=Workbooks(Nom).Worksheets("données").Range("A1") 'Copie-colle le fichier
     
     End Sub

    Merci d'avance de votre aide!!

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 820
    Points : 28 725
    Points
    28 725
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Puis j'ai trouvé çà mais qui plante au moment de la copie...:
    Nous dire qu'il plante, c'est bien mais serait intéressant que tu nous indiques le numéro et le descriptif de l'erreur en supposant que la ligne où a lieu l'erreur est bien la ligne 26

    Mais en attendant et à la lecture rapide de ton code de la ligne 26
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(a).Worksheets(1).Cells.Copy
    la variable a étant une table , il faudrait l'indicer comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(a(1)).Worksheets(1).Cells.Copy
    Tu dois donc intégrer cette ligne dans une boucle et remplacer la constante 1 par la variable de la boucle
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci de votre réponse rapide mais là vous m'avez perdu ...
    Voici l'erreur dont je vous parle:
    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
    Sub OuvertureFichier()
     
     Dim a As Variant, Nom As String
     
     Application.ScreenUpdating = False
     Nom = ActiveWorkbook.Name
     ChDrive "C:"  ' Choix du lecteur
     ChDir "C:\" 'Choix du répertoire
     a = Application.GetOpenFilename("fichier excel (*.xlsx), *.xls", _
         , "Sélection de vos fichiers excel", , True)
     
     Select Case TypeName(a)
         Case Is = "Boolean"
             Exit Sub
         Case Else
             For b = LBound(a) To UBound(a)
                 Workbooks.Open a(b)
             Next
      End Select
      Application.ScreenUpdating = True
     
     
    Workbooks(Nom).Worksheets("données").Cells.ClearContents ' Efface le contenu de la feuille qui va recevoir les données (la feuille existe déjà) il s'arrête ici
     
    'copie la feuille 1 de mon fichier ouvert dans mon fichier initiale. NE MARCHE pas
    Workbooks(a(1)).Worksheets(1).Cells.Copy Destination:=Workbooks(Nom).Worksheets("données").Range("A1") 'Copie-colle le fichier
     
     End Sub

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    vu le nombre de cellules d'une feuille, essaye plutôt de Clear le UsedRange pour gagner en plage de travail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(Nom).Worksheets("données").UsedRange.ClearContents
    Concernant ton erreur sur la ligne suivante, je ne comprend pas très bien ta mécanique :

    1) L'utilisateur peut choisir un ou plusieurs fichiers Excel
    2) Dans une boucle, tu ouvres tous ces fichiers en même temps
    3) Tu effaces une feuille de ton classeur initial
    4) Tu copies toute la feuille du second classeur ouvert vers ton classeur intial

    Donc, pourquoi choisir autant de fichier et tous les ouvrir ??
    Pourquoi ne pas réaliser ta copie d'éléments directement la boucle qui ouvre chaque fichier... en en profitant pour les refermer dans la foulée ?

Discussions similaires

  1. Bouton pour copier/coller lignes avec cases à cocher
    Par Bertrandd dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/08/2014, 18h16
  2. copier/coller bouton de commande et codes
    Par froggyaz dans le forum VBA Word
    Réponses: 3
    Dernier message: 03/05/2008, 01h17
  3. Bouton copier coller dans un forms
    Par patrickmo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/06/2007, 23h04
  4. Réponses: 3
    Dernier message: 05/11/2005, 14h35

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