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 d'un onglet Excel dans un autre onglet [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 40
    Par défaut Copier/Coller d'un onglet Excel dans un autre onglet
    Bonjour, je reviens vers vous car je bloque sur un copié collé qui me paraissait pas compliqué. Je précise que je débute sur VBA.
    Voilà mon problème. Je dispose d'une base de données Excel qui comporte tout les clients que je possède. Mon objectif est que, si on me fournit un nouveu fichier client, une macro puisse copier coller les clients du nouveau classeur dans mon classeur global. J'ai donc réussi à copier/coller mes nouveaux clients dans la base de données mais pas dans le bon onglet (ça le copie/colle dans l'onglet où se situe mon bouton) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Windows(Fichier).Activate
        Cells.Select
        Application.CutCopyMode = False
        Selection.Copy
        ActiveWindow.WindowState = xlMinimized
        Windows("Clients.XLSM").Activate
        ActiveWindow.WindowState = xlNormal
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Je précise que le Fichier du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Windows(Fichier).Activate
    correspond au nom du fichier que je veux importer

    Donc premier problème c'est que cela colle dans le mauvais onglet mais à la limite ce n'est pas très grave.
    Vient le problème le plus ennuyeux. Comme ma base de données est amenée à être modifié, je ne peux pas établir de Range bloquée, il faut, plus simplement, que je colle mes nouveaux clients en dessous des clients actuels.

    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
    Dim i As Integer, j As Integer
    i = 2
    j = 2
    While Feuil3.Cells(j, 1) <> ""
        j = j + 1
    Wend
    While Feuil1.Cells(i, 1) <> ""
        i = i + 1
    Wend
     
        Sheets("Données").Select
        Range("A2:J20").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Clients").Select
        Range("A12").Select
        ActiveSheet.Paste
    Mes While permettent donc d'établir la ligne ou il n'y a plus de clients mais je n'arrive pas à définir une Range à partir de cette ligne là. Voilà j'espère ne pas avoir été trop brouillon.
    Merci d'avance de vos réponses

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu sur ce forum,

    Quelques remarques
    Ces f.. Select et Activate ne servent à rien, tu peux donc épurer le code en ce sens.
    Une règle d'or, ici maintes fois répétées, réside en la nécessité de bien rattacher les objets (par des "."), ici Range, à leur parent, ici Worksheet
    Dans ce sens,
    Windows(Fichier).Activatecorrespond au nom du fichier que je veux importer
    mieux vaut attacher la méthode au classeur parent désigné par Workbooks.

    Pour définir une dernière ligne, il est conseillé de considérer d'abord la dernière ligne de la feuille de travail, puis celle immédiatement placée au dessus. Le bloc While est lourd, donc inapproprié.

    Une piste donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim dernl as Long 'Je sais, j'ai mis du temps!!!
     
    With Workbooks("Toto").Worksheets("feuille_origine")
       dernl = .cells(.Rows.count,1).End(xlUp).Row
       .Range("A2:T"& dernl).Copy Destination:=Workbooks("Tata").Worksheets("lawks").Range("Z1")
    Application.Cutcopymode = False
    End With
    Je te laisse adapter.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 40
    Par défaut
    Merci de ta réponse, je me suis inspiré de ton code et en plus tu as réussi à me donner la solution à mon problème
    J'écrivais
    alors qu'il fallait juste sortir ma variable i des guillemets. Du coup ça marche parfaitemente, je te remercie !

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Reviens tout de même avec le code complet.

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

Discussions similaires

  1. copier/coller en tant qu'image dans une feuille excel
    Par numheb dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/01/2016, 19h22
  2. Réponses: 2
    Dernier message: 13/05/2015, 10h44
  3. Réponses: 10
    Dernier message: 18/02/2015, 16h48
  4. Réponses: 5
    Dernier message: 21/11/2014, 18h05
  5. Réponses: 2
    Dernier message: 13/06/2007, 12h29

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