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 :

Blocage d'un copier/coller d'une feuille [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut Blocage d'un copier/coller d'une feuille
    Bonjour,
    Sur un fichier excel je souhaites effectuer un copier/coller d'une feuille un certain nombre de fois. Cette opération fonctionne jusqu'à 23 copier/coller. Au-delà j'ai une erreur "Erreur d'exécution 1004. La méthode Copy de la classe Worksheet a échoué".
    Je précise que la feuille à copier ('Nom1') contient pas mal d'informations, avec une mise en page assez soignée.

    Voici le code que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = debut To fin
        Sheets("Nom1").Copy after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "R " & i
     
    Next i
    Je précise également que lorsque je teste ce code sur une feuille excel vierge l'opération ne bloque pas.

    Quelqu'un a-t-il une idée de l'origine du problème ou sur une solution de contournement?

    Merci.

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    Une idée au hasard, vérifies la valeur de ta variable "debut" car si dess feuilles ont déjà le meme nom, tu as un message d'erreur r1, r2, r3...
    mais le problème est peut-etre ailleurs

  3. #3
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Sur mon fichier de départ aucune feuille n'a de nom de type 'R i'.

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Quand je regarde ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = debut To fin
        Sheets("Nom1").Copy after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "R " & i
     
    Next i
    quelle est la première valeur de la variable debut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Sheets.Count).Name = "R " & i
    donc ici ça te donne bien une feuille qui se nomme R et la valeur de debut
    ou je ne comprends plus

  5. #5
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Sur le fichier excel, avant de lancer la macro qui fait les copier/coller, il y a 6 feuilles:
    Feuil1('F1')
    Feuil2('F2')
    Feuil25('F3')
    Feuil4('F4')
    Feuil45('F5')
    Feuil5('Nom1')

    Dans ma macro :
    debut = 32 et fin = 56

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    ok mais je viens de remarquer une chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Sheets.Count).Name = "R " & i
    dans cette ligne, un espace existe après le "R", dernierement un autre abonné a du remplacer l'espace par un tiret pour faire fonctionner sa macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Sheets.Count).Name = "R_" & i
    mais là n'est peut-etre pas le vrai problème, excuses moi si je suis dans l'erreur mais ne connaissant pas ton code complet, j'exprime simplement des idées

  7. #7
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Le problème ne vient pas de là puisque la macro fonctionne de i=32 à i=53. C'est lorsque i=54 que ça bloque.
    Au niveau du code de la macro tu as le code complet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim debut As integer
    Dim fin As integer
    debut = 32 
    fin = 56 
    For i = debut To fin
        Sheets("Nom1").Copy after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "R " & i
    Next i
    J'ai essayé quand même en enlevant l'espace mais ça n'a pas résolu le problème.

  8. #8
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je vais essayer de mon coté avec des données bidons et si je voie le problème, te le dirai

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    j'ai essayé ton code avec memes nom de feuilles et des données sur feuil(nom1), aucun problème sur la première exécution mais evidemment erreur 1004 à la deuxième execution vu que les noms de feuilles sont déjà attribués

  10. #10
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour nicoaix l'ami casefayere le forum peut etre un truc comme cela!!
    Option Explicit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macro5()
    Dim f As Worksheet, i As Byte
    Application.ScreenUpdating = False
    For i = 32 To 56
    Set f = Sheets.Add
    With f
     .Move after:=Sheets(Sheets.Count)
     .Name = "R" & i
     Sheets("Nom1").Cells.Copy Destination:=Sheets("R" & i).Range("A1")
     End With: Next i
    End Sub

  11. #11
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Merci laetitia! J'ai pas compris pourquoi mais ta solution fonctionne.

  12. #12
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re,le fil c est simplement un probleme de memoire "presse papiers"
    tu peus ecrire ton code comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
    Dim debut As Byte, fin As Byte, i As Byte
    On Error Resume Next
    Application.ScreenUpdating = False
    debut = 32: fin = 56
    For i = debut To fin
    Sheets("Nom1").Copy after:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "R " & i
    Application.CommandBars("clipboard").Controls(4).Execute
    Next i
    End Sub

  13. #13
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    Ok. Merci pour les explications.
    Tant que j'y suis, petite question subsidiaire:
    Sur chaque feuille copiée, il y a une procédure vba. Dans cette procédure il y a une référence à une cellule d'une autre feuille (i = Feuil4.Cells(23, 3)).
    Il faut que je modifie cette référence. Par exemple la 1ère feuille collée aura la référence "i = Feuil4.Cells(23, 3)", puis la suivante "i = Feuil4.Cells(24, 3)", la suivante "i = Feuil4.Cells(25, 3)"...

    Comment faire?

  14. #14
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re, le fil comme cela pas facile sans connaitre ta procedure vba par feuille
    on peut exploiter les 2 derniers caracteres de tes feuilles on esperant que les noms de tes feuilles sont bien comme demander plus haut autrement il faut faire autre chose
    je suppose a chaque procedure tu actives la feuille
    sheets(x) activate
    un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim i As Byte, z As Variant
    Sheets("R4").Activate
    If Len(ActiveSheet.Name) = 2 Then z = Right(ActiveSheet.Name, 1) Else z = Right(ActiveSheet.Name, 2)
    i = Sheets("Feuil4").Cells(23 + z - 1, 3)
    MsgBox i ' tu peus exploiter la variable i
    End Sub

  15. #15
    Membre averti Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Points : 362
    Points
    362
    Par défaut
    C'est bon j'ai trouvé une solution de contournement:
    J'ai modifié la procédure de la feuille collée de manière à ce qu'elle appelle une fonction (avec le nom de la feuille en paramètre) de mon module vba qui elle se charge d'exécuter le code adéquat.

    Merci.

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

Discussions similaires

  1. copier coller d'une feuille à une autre
    Par k_boy dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/09/2010, 20h51
  2. [XL-2007] automatisation copier coller d'une feuille dans une autre
    Par luko6 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/04/2010, 10h26
  3. [XL-2003] Problème bizzare de copier coller d'une feuille à une autre
    Par FCL31 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/09/2009, 14h16
  4. [VBA] Pb avec Copier/coller d'une feuille Excel
    Par sebastien_oasis dans le forum Excel
    Réponses: 3
    Dernier message: 14/12/2007, 11h08
  5. JTree : copier, coller dans une feuille.
    Par sricard dans le forum Composants
    Réponses: 2
    Dernier message: 28/09/2006, 07h35

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