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 :

Méthode worksheets.copy : excel stop


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Par défaut Méthode worksheets.copy : excel stop
    Bonjour,

    J'ai un problème avec la méthode worksheets.copy dans excel.
    J'ai une feuille nommée "R1" qui est une feuille de résultats vierge. En début de traitement, je supprime la feuille "Résultats1" et puis je copie la feuille "R1" en "Résultats1". Par la suite, j'affiche les différents résultats dans cette dernière feuille.
    Tout fonctionnait jusqu'à maintenant mais voilà qu'une collègue qui utilise le fichier excel sous Windows XP SP2 et office 2003 n'arrive plus à traiter les données : excel stoppe à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("R1").Copy after:=Worksheets(Worksheets.Count)
    sans afficher aucune erreur. J'ai essayé en mettant à la place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets("R1").Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("R1").Copy after:=Worksheets(1)
    mais rien ni fait. Je ne vois vraiment pas ce que je pourrais faire d'autre. J'ai fait une recherche sur msdn et je n'ai rien trouvé de concluant. Quelqu'un aurait-il une idée ?

    Voilà le code complet de la fonction qui pose problème.

    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
    Function maz_résultats()
    ' supprime la feuille résultats1
    If (sheetexists("Résultats1") = True) Then
       Application.DisplayAlerts = False
       Worksheets("Résultats1").Visible = True
       Worksheets("résultats1").Delete
       Application.DisplayAlerts = True
    End If
    ' copie la feuille R1 en Résultats1
    Worksheets("R1").Visible = True
    Worksheets("R1").Activate
    Worksheets("R1").Copy after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Résultats1"
    Worksheets("R1").Visible = False
    End Function

  2. #2
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Copy after:=Worksheets(ThisWorkbook.Worksheets.Count)
    Si ton code n'est pas dans le classeur dont tu copies une feuille, remplace ThisWorkbook par
    Workbooks("NomFichier").Worksheets.Count)
    Explication sur la raison pour laquelle ton code ne fonctionne pas : l'endroit où tu places ta feuille se trouve après une feuille, pas après un classeur. D'autre part count concerne le nombre de feuilles que tu as dans ton classeur, pas dans une feuille
    A+

    Edit
    Une autre chose : Utiliser une fonction sans récupérer quoi que ce soit ne sert à rien. Une sub ferait aussi bien l'affaire.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    salut. j'ai utilisé ton code de cette maniere puisque je n'ai pas cette fonction sheetexist
    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
    Sub maz_résultats()
     'supprime la feuille résultats1
    'If (sheetexists("Résultats1") = True) Then
       Application.DisplayAlerts = False
       Worksheets("Résultats1").Visible = True
       Worksheets("résultats1").Delete
       Application.DisplayAlerts = True
    'End If
    ' copie la feuille R1 en Résultats1
    Worksheets("R1").Visible = True
    Worksheets("R1").Activate
    Worksheets("R1").Copy after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Résultats1"
    Worksheets("R1").Visible = False
    End Sub
    et ma foi il fonctionne normalement. il y a un truc qui m'échappe. comment sait tu qu'il s'arrete sur cete ligne si tu n'as aucun message d'erreur? tu en as forcement un. en général, le code ne se modifie pas tout seul, donc cherche peut etre plus du coté du nom et de la présence des feuilles R1 et résultats. verifie l'orthographe et la casse. si tu a deux classeur ouverts, verifie qu'il ne colle pas la feuille r1 a un autre endroit. ça serais la seule explication pour que le code s'execute sans message d'erreur et reste invisible pour toi

    ouskel, tu es infiniment plus fort que moi dans la matiere, mais je ne comprend pas ce que tu dis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dixit : Explication sur la raison pour laquelle ton code ne fonctionne pas : l'endroit où tu places ta feuille se trouve après une feuille, pas après un classeur
    dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("R1").Copy after:=Worksheets(Worksheets.Count)
    dans cette ligne moi je lis copie after la feuille(4) si tu as 4 feuilles dans le classeur et ça m'a l'air tout a fait correct

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Par défaut
    Pour répondre à ta question alsimbad, lorsque l'on lancait les traitements on avait juste la feuille R1 qui s'affichait sans qu'aucun message d'erreur n'apparaisse. J'ai alors mis un point d'arrêt au début de la procédure maz_résultats et j'ai fais du pas à pas. J'ai remarqué que le programme stoppait après être passé sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("R1").Copy after:=Worksheets(Worksheets.Count)
    La feuille R1 est visible, les feuilles R1(2) et Résultats1 n'existent pas et je n'ai pas d'autre classeur ouvert.

    ouskel, je ne travaille qu'avec un seul classeur Excel et qui plus est le code fonctionne car çà plante juste sur 2 PC alors que le programme fonctionne parfaitement sur une vingtaine d'autres PC.

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    la fonction maz_résultats est lancée depuis une autre procédure?
    si oui, est ce que cette procédure contient une ligne style


    michel

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Par défaut
    Effectivement, la fonction maz_résultats est lancée depuis une autre procédure (en fait le clic sur le bouton traitement) mais il n'y a pas de gestion d'erreur dans cette procédure. De toute façon, j'ai testé en modifiant les options de récupération d'erreur pour que le débogeur arrête sur toutes les erreurs.

Discussions similaires

  1. [XL-2003] pb constante Worksheet VBA Excel
    Par epsilon99 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/08/2012, 20h03
  2. [XL-2003] Méthode InputBox d'Excel
    Par cedana dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 31/01/2012, 12h10
  3. [XL-2002] mystéres de la copie excel vers word
    Par zotari dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2011, 18h46
  4. Probleme de copie excel
    Par tido17 dans le forum Excel
    Réponses: 4
    Dernier message: 09/07/2007, 22h11
  5. [2.0] Problème sur les worksheet d'Excel
    Par Sadneth dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/05/2007, 09h51

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