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 :

[VBA-E]échec copier-coller entre 2classeurs


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 492
    Points : 49
    Points
    49
    Par défaut [VBA-E]échec copier-coller entre 2classeurs
    Bonjour,
    J'ai une moulinette qui sélectionne dans un classeur (utilisé comme DB) un enregistrement dont un certain champ est vide et va le copier dans un autre classeur en y sélectionnant une ligne vide. Ca marche un coup mais au deuxième j'ai un "la méthode paste a échoué". Je n'arrive pas à comprendre pourquoi. J'ai voulu aller voir ce qui se passe dans le presse-papier Windows mais ce n'est pas un objet de VBA, à ce que je crois. Je suis un débutant retraité autodidacte curieux et je m'attaque peut-être à un pb trop gros pour moi, mais j'aimerais bien y arriver
    Si quelqu'un a une idée... ?
    Merci de m'avoir lu.
    Pierre

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben difficile de t'aider sans voir le code...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pierruel

    La methode "paste" s'applique à l'objet "Sheet", il faut donc faire en général
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheet("NomFeuille").Cells(NumLigne,NumColonne).select
    Activesheet.Paste
    J'espère répondre à ton problème

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu dois séparément activer ou sélectionner le classeur où tu colles, puis la feuille puis la plage ou la première cellule de la plage dans laquelle tu vas coller les cellules copiées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Workbooks("Classeur1").Activate
    Worksheets("Feuil1").Range("A1:D4").Copy
    Workbooks("Classeur2").Activate
    Worksheets("Feuil1").Select 'facultatif si Classeur2 est ouvert sur la bonne feuille de calculs.
    Range("D1").Select
    ActiveCell.PasteSpecial
    A+

  5. #5
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 492
    Points : 49
    Points
    49
    Par défaut Echec copier coller entre classeurs
    Bonjour,
    Je patauge !
    Je voulais répondre à bbil sur le forum, j'ai loupé le bouton ! Donc je lui disais que je n'ai pas le code sur ce PC, je le posterai demain. En attendant, merci et merci aussi à Ousk'el'nor (pardon pour l'orthographe ?) et à BrunoM45. J'ai bien la ligne
    Activesheet.Paste. Donc ça, ça joue.
    Ensuite, comme la moulinette doit servir sur divers classeurs avec des enregistrements comportant un nombre de colonnes différent, j'ai utilisé
    Entirerow.Select
    dans le classeur source *et* dans le classeur cible.
    Est-ce que dans la cible je devrais sélectionner seulement la première cellule de la ligne cible ? Et remplacer Paste par PasteSpecial (je n'ai pas la différence en tête) ?
    Quant au fait que ça marche un coup mais pas les suivants, vous avez une idée ?
    Merci encore de vous être penchés sur mon pb.
    Cordialement
    Pierre

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par pierruel
    Bonjour,
    Je patauge !...


    oui j'ai vu j'ai reçu ta réponse par MP ( en double d'ailleurs..)


    Citation Envoyé par pierruel
    Bien d'accord avec toi. J'ai pas le code sur ce poste, mais je repasse demain.
    Merci d'avoir réagi.
    +
    Pierre
    mais je vois que tu as trouvé le bouton

  7. #7
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 156
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    La méthode "Paste" peut échouer pour plusieurs raisons. Une des raisons possibles pourrait-être celle-là :
    Si en C1 se trouve une formule du genre et qu'on colle cette formule en B1 sur une autre feuille, la formule relative devient Puisqu'il n'existe pas de colonne avant "A" une erreur se produit

    On peut faire un PasteSpecial, ou collage spécial en collant seulement les valeurs. Dans ce cas, pas d'erreur possible.

    Cordialement

  8. #8
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 492
    Points : 49
    Points
    49
    Par défaut Echec Copier Coller, pour bbil
    Bonjour,
    En réponse à la remarque de bbil, voici le code. Du travail d'amateur qui va faire frémir les pros, mais qu'est-ce que je m'amuse
    Donc: la méthopde Paste échoue de temps en temps
    Les deux tableaux Excel sont un peu lourds; si nécessaire, je peux les poster aussi.
    Merci d'avance pour vos lumières
    Cordialement
    Pierre
    Fichiers attachés Fichiers attachés

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    une extrait du code aurai suffit... ( en plus j'ai pas Word sur ce poste.. je peu même par regarder ton code..)

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par pierruel
    Est-ce que dans la cible je devrais sélectionner seulement la première cellule de la ligne cible ?
    Oui, tu peux sélectionner la première cellule de la plage, je confirme.
    Comme bbil, je n'ai pas ouvert ton fichier.
    3 lignes de code, peut-être...
    A+

  11. #11
    Invité
    Invité(e)
    Par défaut


    J'ai regardé le code dans ton fichier Word, pour moi il y'a un soucis dans la Phase 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Offset(k).Activate
    Une cellule n'est pas activée, mais sélectionnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Offset(k).Select

    Ensuite la ligne entière est sélectionnnée,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.EntireRow.Select
    c'est inutile puisque une ligne entière est copiée, donc résultat du collage = ligne entière

    Il est clair que le code pourrait être optimisé, on reconnait la gars qui ont fait du Basic dans leur jeunesse

    A+

  12. #12
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 492
    Points : 49
    Points
    49
    Par défaut Echec copier coller
    Bonsoir à tous,
    Pardon pour les infractions aux usages et merci à bbil, Ouskel'n'or et BrunoM45. Je vais appliquer les conseils mais je garde le fil ouvert, des fois que.
    Bonne soirée
    Pierre

  13. #13
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 492
    Points : 49
    Points
    49
    Par défaut Echec copier-coller
    Bonsoir,
    Bon, j'abuse, mais je ne trouve nulle part. Peut-être qu'une bonne âme ?
    L'erreur 1004: Même l'explication de John Walkenbach ne m'éclaire pas. Ca marche sous forme de macro (avec un offset rajouté par rapport à la cellule sélectionnée), mais dans ma sub, la méthode paste échoue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ActiveWorkbook.Sheets(2).Select          'on sélectionne la feuille N° 2
        Do While Range("A1").Offset(k) <> "" 'on cherche la 1ère
                                             'case (ligne) vide
            k = k + 1
        Loop
    Range("A1").Offset(k).Select         'la cellule trouvée est sélectionnée
    ActiveSheet.Paste                    'on colle la sélection
    Ca fait quand même 6 lignes
    Merci d'avance de me dépanner
    Cordialement
    Pierre

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu ne peux pas rechercher une ligne dans une feuille entre les actions copier et coller. Copier/coller doivent s'effectuer consécutivement.
    Recherche ta ligne vide, Une fois trouvée, copie ta ligne et colle là sur la cellule sélectionnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub copierColler()
        ActiveWorkbook.Sheets(2).Select          'on sélectionne la feuille N° 2
            Do While Range("A1").Offset(k) <> ""  'on cherche la 1ère cellule de la
                                                               'colonne A vide (c'est ce que tu fais
                k = k + 1
            Loop
        Range("A1").Offset(k).Select         'la cellule trouvée est sélectionnée
        Workbooks("Classeur1").Worksheets("Feuil1").Range("A1:D4").Copy
        ActiveSheet.Paste                    'on colle la sélection
    End Sub
    Chez moi, ce code fonctionne

  15. #15
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    Août 2006
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 492
    Points : 49
    Points
    49
    Par défaut Echec copier-coller
    Rebonsoir,
    Merci à Ouskel'n'or.
    Reste plus qu'à trouver le tag "Résolu"
    Bonne soirée à tous
    Cordialement
    Pierre

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

Discussions similaires

  1. [XL-2010] Copier/coller Entre deux classeurs excel VBA
    Par Benjen dans le forum Excel
    Réponses: 11
    Dernier message: 19/09/2014, 15h58
  2. VB6 - copier/coller entre 2 appli ayant VBA - erreur 1004
    Par thomaz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/10/2012, 16h47
  3. [VBA-E]Problème Copier-Coller entre 2 classeurs
    Par Corlo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/05/2007, 14h31
  4. VBA-E: Pb copier-coller entre Excel et .csv
    Par tiger118 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2006, 11h08
  5. [VBA Excel]probleme de copier/coller
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 31/01/2006, 14h22

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