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 :

Erreur 1004 A la copie d'une feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Par défaut Erreur 1004 A la copie d'une feuille
    Bonjour le forum,

    Le titre est assez explicite mais je vais developper.

    J'ai 4 fichiers excel, 3 qui sont des repertoires personnels et 1 qui est un repertoire global.

    Tout les jours en fin de journée, une personne doit aller recuperer les 3 repertoires pour rassembler les nouveaux contacts dans le fichier global.
    Apres ceci effectué, le repertoire global copie tous les contacts dans les 3 repertoires.

    La premiere etape marche tres bien, je procède de la sorte:
    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
     
    Function recupRep(chemin As String, nom As String)
        Dim NomClasseur As Workbook
     
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
        Set NomClasseur = Application.Workbooks.Open(chemin & nom)
     
     
        NomClasseur.Sheets("Repertoire_SCH").Copy Workbooks("Repertoire_Global.xls").Sheets("Repertoire_SCH")
        NomClasseur.Sheets("Repertoire_Client").Copy Workbooks("Repertoire_Global.xls").Sheets("Repertoire_Client")
        Workbooks("Repertoire_Global.xls").Sheets("Repertoire_SCH").Delete
        Workbooks("Repertoire_Global.xls").Sheets("Repertoire_Client").Delete
        Workbooks("Repertoire_Global.xls").Sheets("Repertoire_SCH (2)").Name = "Repertoire_SCH"
        Workbooks("Repertoire_Global.xls").Sheets("Repertoire_Client (2)").Name = "Repertoire_Client"
     
        NomClasseur.Close
     
        supDoublonsClient
        supDoublonsPersonnel
     
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End Function
    Pour la deuxieme etape, je me retrouve avec une erreur 1004:
    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
     
    Sub maj(chemin As String)
        Dim NomClasseur As Workbook
     
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
        Application.CutCopyMode = False
        Set NomClasseur = Application.Workbooks.Open(chemin)
     
     
        Workbooks("Repertoire_Global.xls").Sheets("Repertoire_SCH").Copy NomClasseur.Sheets("Repertoire_SCH")
        Workbooks("Repertoire_Global.xls").Sheets("Repertoire_Client").Copy NomClasseur.Sheets("Repertoire_Client")
        NomClasseur.Sheets("Repertoire_SCH").Delete
        NomClasseur.Sheets("Repertoire_Client").Delete
        NomClasseur.Sheets("Repertoire_SCH (2)").Name = "Repertoire_SCH"
        NomClasseur.Sheets("Repertoire_Client (2)").Name = "Repertoire_Client"
        NomClasseur.Close True
     
     
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
     
     
    End Sub
    Donc la meme fonction mais dans le sens inverse !

    J'ai effectué des recherches sur cette #@!`^ erreur 1004.
    Il semblerait que c'est a force de faire trop de copie, on sature la memoire ou autre.

    Question : Faut il vider le presse papier sachant que je fais quand meme un Application.CutCopyMode = False ou y a t'il vraiment une grosse erreur dans mon code ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 12
    Par défaut
    Ne faudrait-il pas sauvegarder avant la 2ème étape, voire fermer puis rouvrir ?

    Autre chose ne manque-t-il pas "before:= ou "after:=" devant le nom des classeurs ?

    ci dessous extrait de l'aide microsoft

    Note
    Si vous ne spécifiez ni l'argument Before ni l'argument After, Microsoft Excel crée un nouveau classeur contenant la feuille copiée.
    Ce n'est peut-être pas ce que vous cherchiez à faire. Ecrire plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbook1.Worksheets("Feuil1").Copy After:=Worbook2.Worksheets("maFeuille")

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Peut-on savoir sur quelle ligne se produit cette erreur 1004, qui veut tout et rien dire.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Par défaut
    C'est a la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks("Repertoire_Global.xls").Sheets("Repertoire_SCH").Copy NomClasseur.Sheets("Repertoire_SCH")
    YannLaure:
    En faite Excel me créé une nouvelle feuille alors que moi je veux seulement mettre a jour toutes les données du coup j'ai fait une bidouille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    NomClasseur.Sheets("Repertoire_SCH").Delete
    NomClasseur.Sheets("Repertoire_Client").Delete
    NomClasseur.Sheets("Repertoire_SCH (2)").Name = "Repertoire_SCH"
    NomClasseur.Sheets("Repertoire_Client (2)").Name = "Repertoire_Client"
    C'est moche mais ca marche (Pour la premiere etape)

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    YannLaure:
    En faite Excel me créé une nouvelle feuille alors que moi je veux seulement mettre a jour toutes les données du coup j'ai fait une bidouille:
    Pourquoi ne pas faire les .Delete avant les .Copy ?
    Cela t'évitérait les .name et cela vaudrait la peine de tester si ton erreur 1004 se produit encore dans ce cas.

    en résumé, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NomClasseur.Sheets("Repertoire_SCH").Delete
    Workbooks("Repertoire_Global.xls").Sheets("Repertoire_SCH").Copy NomClasseur.Sheets("Repertoire_SCH")

  6. #6
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Par défaut
    Avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NomClasseur.Sheets("Repertoire_SCH").Delete
    Workbooks("Repertoire_Global.xls").Sheets("Repertoire_SCH").Copy NomClasseur.Sheets("Repertoire_SCH")
    J'avais une erreur d'indice, j'ai donc essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NomClasseur.Sheets("Repertoire_SCH").Delete
    Workbooks("Repertoire_Global.xls").Sheets("Repertoire_SCH").Copy Before:=NomClasseur.Sheets(1)
    Et me voila retourné sur ma bonne vieille erreur 1004

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

Discussions similaires

  1. [XL-2000] Erreur lors de la copie d'une feuille vers un autre classeur qui vient d'être créé
    Par Hankow dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/04/2015, 09h10
  2. Erreur 1004 lors de la copie d'une feuille depuis MA
    Par Pifton dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/09/2012, 13h46
  3. Réponses: 11
    Dernier message: 30/10/2007, 09h35
  4. [VBA-E]Erreur lors de la copy d'une feuille
    Par nattyman dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/08/2006, 14h30
  5. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56

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