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 :

Problème PasteSpecial dans une copie d'un Classeur a un autre. [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club Avatar de Nysos
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Par défaut Problème PasteSpecial dans une copie d'un Classeur a un autre.
    Bonjour a tous,

    Je suis débutant en VBA, je commence a piger mais là je ne sais plus quoi faire. Je suis sur Excel2016
    Je suis entrain de créer un système de collecte automatique de données pour l'industrie. Les opérateurs entrent les données de production dans un classeur A (Qui comporte une feuille par machine).

    Puis (idéalement), chaque jour a 23h59:59s, le fichier copie les données de production du jour du Classeur A pour les coller a partir de la première ligne vide d' un ClasseurB (Masterfile).

    Tout marche bien jusqu'au PasteSpecial. L'erreur renvoyée est "Erreur d'éxécution 1004 : La méthode PasteSpecial de la classe Range a échoué."
    Aucune de mes deux feuilles ne sont protégées ou en lecture seule.
    Pourtant, ce même pastespecial (Copier les valeurs d'un formulaire de saisie puis les coller sur la premiere ligne vide de feuille registre) marche en "interne" sur mon classeur A.

    Je ne peux malheureusement pas vous joindre les fichiers car ils sont trop lourds.

    Voici le code

    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
    31
    32
    Sub MASTERFILE()
     
            Workbooks.Open Filename:="C:\Users\Maxime\Desktop\PerformanceAnalysis\APA_Yearly_MasterFile\FichierB.xlsm"
            
        Application.ScreenUpdating = False
        
        'Copy prod registry into masterfile
            Workbooks("FichierA.xlsm").Activate
            Sheets("CHM1000").Select
            Range("A6:I39").Copy
            Application.CutCopyMode = False
            Workbooks("FichierB.xlsm").Worksheets("MCHM1000").Activate
            Cells(65535, 1).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
    
                                               
        'Copy Failures modes registry into Masterfile
            Workbooks("FichierA.xlsm").Worksheets("CHM1000").Select
            Range("AN7:BH40").Copy
            Application.CutCopyMode = False
            Workbooks("FichierB.xlsm").Worksheets("MCHM1000").Select
            Cells(65535, 40).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
    
    [.....(Mêmes opérations mais avec feuilles différentes).....]
    
        'Save MasterFile
            ActiveWorkbook.Save
            Workbooks.Close
            Workbooks("FichierB.xlsm").Close
        
        Application.ScreenUpdating = True
    "CHM1000" est le nom d'une feuille de machine dans le fichier A, et "MCHM1000" est le nom de la feuille correspondante dans le masterfile B.
    Le tableau du registre commence sur les deux feuilles en A6 et se finit en I39 pour le fichier A, et en I950 pour le fichierB. (J'ai essayé en ne copiant qu'une seule ligne, ca ne marche pas non plus.)

    Merci d'avance pour vos conseils et vos solutions.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    Je ne sais pas si ça résoudra ton problème mais je vois deux choses qui me dérangent dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Copy prod registry into masterfile
            Workbooks("FichierA.xlsm").Activate
            Sheets("CHM1000").Select
            Range("A6:I39").Copy
            Application.CutCopyMode = False
            Workbooks("FichierB.xlsm").Worksheets("MCHM1000").Activate
            Cells(65535, 1).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
    -Evite les select/activate ça ne sert a rien
    -Cells(65535, 1): 65535 est obsolète, c'était la limite des .xls or tu travailles sur un .xlsm avec une limite a plus d'un million de ligne
    D'ailleurs la différence de comportement de ton copier coller suivant le classeur vient peut-être du fait que le second dépasse ce nombre de lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Copy prod registry into masterfile
            Workbooks("FichierA.xlsm").Sheets("CHM1000").Range("A6:I39").Copy
            Workbooks("FichierB.xlsm").Worksheets("MCHM1000").Cells(rows.count, 1).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False

  3. #3
    Candidat au Club Avatar de Nysos
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2018
    Messages : 2
    Par défaut
    Bonjour et merci pour ta réponse.

    Le problème venait de cette ligne : Application.CutCopyMode = False qui reset le presse papier. Donc je n'avais rien a coller, et je ne savais pas comment interpréter cette commande.
    J'ai supprimé cette ligne et ça fonctionne.

    Merci pour les pistes d'amélioration !

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

Discussions similaires

  1. Problème OutOfMemory dans une applet
    Par hotkebab99 dans le forum Applets
    Réponses: 1
    Dernier message: 25/01/2006, 10h36
  2. probléme pour faire une copie de base de donnée
    Par nours33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 31/12/2005, 12h35
  3. [WxPERL] Problème BoxSizer dans une fenêtre
    Par LE NEINDRE dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 13/12/2005, 11h41
  4. [ZEOSLIB] Problème Insertion dans une table
    Par moscovisci dans le forum Bases de données
    Réponses: 1
    Dernier message: 09/06/2005, 12h05
  5. problème debodybackground dans une page php
    Par bertrand_declerck dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/02/2005, 22h39

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