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 :

code VBA Macro Copier/Coller


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Par défaut code VBA Macro Copier/Coller
    Bonjour , j'ai besoin d'aide.

    Je cherche un code macro qui me permet d'aller copier des informations dans un fichier cible qui se trouve dans un dossier nommé "effectifs outil" dans mon environnement bureau , et de les coller dans mon fichier source (nouvel outil Organisation Cuisine).

    Je m'explique : en gros je voudrai si possible une macro dans mon fichier source que j'aurai ouvert (nouvel outil Organisation Cuisine) et quand je clique sur un bouton, le fichier cible "effectifs outil" (qui se trouve dans un dossier "effectifs outil" ,dans mon environnement bureau) s'ouvre et qu'il vienne copier la plage de cellule de l'onglet 1 du fichier cible ("A1:H124"): puis copie dans l'onglet "dejeuner" de mon fichier source ("A1:H124"). Même étape pour l'onglet 4 copie les infos du (ficher cible de l'onglet 4) ("A1:H75") et les copier dans l'onglet "diner"("A1:H75") de mon fichier source. On ferme le fichier cible et on le détruit. On Enregistre dans le fichier source. La difficulté est que mon fichier cible peut avoir des noms différents (variant) ainsi que ses 4 onglets , il faut simplement copier les infos de l'onglet 1 et 4 de ce fichier cible qui se trouve dans un dossier ("effectifs outil") dans mon environnement bureau et de les coller sur le fichier source ouvert (nouvel outil Organisation Cuisine) qui lui à 2 onglets renommés ("dejeuner" , "diner").

    J'espère être clair dans ma demande et si possible , et d'avance merci de votre aide.

    Merci à vous.

  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
    13 170
    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 : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La syntaxe en VBA de l'équivalent du Copier/Coller manuel est : Source.Copy Destination:=CibleSource et Cible sont des objets Range

    Il suffit donc de préciser la parentalité totale (Classeur, feuille et plage de cellules) de la source et de la cible pour que cela fonctionne parfaitement

    Exemple de la copie de la plage E5:H8 de la feuille nommée Feuil3 vers la cellule A1 de la feuille nommée Feuil2. Les deux feuilles sont dans le classeur où se trouve le code VBA (ThisWorkbook)

    Je n'ai pas utiliser le bloc With ThisWorkbook...End With volontairement afin que vous compreniez mieux.
    Il suffit donc de remplacer l'objet ThisWorkbook par les objets Workbook correspondant à votre attente (rappel ActiveWorkbook est l'objet représentant le classeur actif)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub t()
      ' Déclaration et affectation
      Dim rngSource As Range
      Dim rngTarget As Range
      Set rngSource = ThisWorkbook.Worksheets("Feuil3").Range("E5:H8")
      Set rngTarget = ThisWorkbook.Worksheets("Feuil2").Range("A1")
      ' Copie
      rngSource.Copy Destination:=rngTarget
      ' Fin
      Set rngSource = Nothing
      Set rngTarget = Nothing
    End Sub
    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
    Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Par défaut code VBA Macro Copier/Coller
    Bonjour et merci d'avoir pris connaissance de ma demande. Je suis novice en VBA et ce n'est pas facile pour moi de bien comprendre .Je recherche simplement du copier coller d'un fichier.xls à mon autre fichier qui est nommé : "nouvel outil organisation cuisine.xls".et qui donc contiendrai cette macro.

    J'ai un fichier.xls (ou son nom change chaque semaine) avec 4 onglets (le nom des onglets changent aussi chaque semaine) , et qui se trouve seul dans un dossier que j'ai nommé (effectifs outil).

    J'ai un fichier nommé (nouvel outil organisation cuisine.xls) , ce fichier contient 2 onglets que j'ai renommé (dejeuner et diner) et je voudrai créer sur ce fichier (nouvel outil organisation cuisine.xls) une macro qui va me permettre d'aller copier les infos de l'onglet 1 du fichier.xls que je définit par une plage ("A1:H124") et de coller ses infos dans l'onglet "dejeuner" en A1 de mon fichier "nouvel outil organisation cuisine.xls" . Même étape : copier les infos de l'onglet 4 du fichier.xls que je définit là aussi par une plage ("A1:H75") et de coller ses infos dans l'onglet "diner" en A1 de mon fichier "nouvel outil organisation cuisine.xls".

    Je tiens à vous remercier d'avoir répondu à ma demande.
    Bien cordialement.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    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 : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Qu'est-ce que vous ne comprenez pas dans l'exemple que je vous ai donné ?
    Je ne peux pas être plus clair. Vous avez une plage source et une plage cible

    donc dans la phrase ci-dessous, il doit y avoir une source ou une cible
    J'ai un fichier.xls (ou son nom change chaque semaine) avec 4 onglets (le nom des onglets changent aussi chaque semaine) , et qui se trouve seul dans un dossier que j'ai nommé (effectifs outil).
    par contre vous ne vous facilitez pas la vie si chaque semaine le nom du classeur change et si au sein même de ce classeur le nom des onglets sont également différents chaque semaine.

    Il est important avant tout de réfléchir au nom du classeur qui diffère.
    S'il est seul dans le répertoire comme vous le dites, c'est simple, on se fout de son nom on ouvre "LE" classeur présent dans le répertoire avec la fonction Dir, cela devrait faire l'affaire.
    En ce qui concerne le nom des onglets qui changent de noms s'il y a toujours quatre feuilles (onglets), comme le classeur, on se moque de leur nom et avec une boucle de 1 à 4 et s'il faut copier tous les onglest de 1 à n où n représente le nombre de feuilles on peut effectuer la copie
    Après l'affichage du nom de la dernière feuille, le classeeur source se ferme

    Petit exemple ci-dessous
    On suppose que le classeur source se trouve seul (cela signifie aucun autre fichier) dans un sous-répertoire nommé Data
    La procédure ci-dessous ouvre ce classeur et affiche le nom des feuilles de ce classeur (une par une). Ces feuilles constituent donc la feuille source à chaque passage de la boucle.
    Reste à définir quelles sont les plages à copier de ces feuilles pour obtenir finalement chaque plage source
    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
     
    Sub t()
      Dim wkbSource As Workbook
      Dim SubFolder As String
      Dim wkbName As String
      Dim sh As Integer
      SubFolder = ThisWorkbook.Path & "\Data\"
      wkbName = Dir(SubFolder)
      ' Ouverture du classeur source
      Set wkbSource = Workbooks.Open(Filename:=SubFolder & "\" & wkbName)
      ' Boucle sur l'ensemble des feuilles du classeur source
      With wkbSource
        For sh = 1 To .Worksheets.Count
          MsgBox "Feuille " & .Worksheets(sh).Name
        Next
      .Close     ' Fermeture du classeur source
      End With
    End Sub
    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

  5. #5
    Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Par défaut code VBA Macro Copier/Coller
    Superbe et merci , j'ai bien le départ , maintenant à moi de finaliser mon projet , vous avez très bien compris ma demande , cependant étant débutant je suis gourmand et j'aurai voulu connaitre l'ensemble du code concernant toute ma demande de départ . (J'explique bien les plages à copier de ces feuilles ). Je vais travailler sur mon projet afin de le finaliser et je vous tiens informé . Merci beaucoup pour votre aide.

  6. #6
    Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Par défaut Macro copier/coller
    Bonjour , je reviens vers vous pour vous remercier de votre aide , votre 2 èm code m'a beaucoup aidé , j'ai adapté et me voilà avec mon travail terminé . Merci encore et vive ce forum. Bien cordialement.

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

Discussions similaires

  1. Macro copier/coller VBA
    Par albelk dans le forum Excel
    Réponses: 2
    Dernier message: 04/02/2016, 17h36
  2. Macro excel VBA (chercher/copier/coller)
    Par mtazi001 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/07/2015, 20h29
  3. [XL-2007] Macro copier coller dans VBA Excel
    Par inho89 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2015, 23h04
  4. Code VBA pour copier-coller des colonnes d'un fichier Excel à un autre
    Par User Name dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2014, 23h30
  5. [XL-2000] macro copier/coller tableau : amélioration du code
    Par Needz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/11/2010, 16h23

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