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]probleme lors de la creation de feuille


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Points : 26
    Points
    26
    Par défaut [VBA-E]probleme lors de la creation de feuille
    bonjour,
    j ai creer une macro qui creer une feuille par semaine de 1 à 52 et qui insert des données à l'interieur.
    La plupart du temps la creation des feuilles fonctionnent mais dans d'autre ça plante et j obtiens le message suivant :

    erreur 1004:
    la methode Copy de la classe Worksheet a echoué.

    alors qu'il m a deja creer 15 à 20 feuilles ...

    je me demandait si ca ne pouvait pas venir du nom de la nouvelle feuille creer : feuil+numero (ex: feuil10)
    qui s'incremente a chaque creation.

    comment puis je faire pour resoudre mon probleme !

    merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Il faudrait vraiment cibler le probleme;.. C'est un peu vague... Donne nous un bout de code.. je ne sais pas moi.?
    N'oubliez pas de mettre le

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    voici le code qui genere des page vides... en copiant une feuille modele
    ( pour conserver la mise en forme...)
    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
     
    Dim i As Integer
    Dim sem As String
     
    For i = 1 To 52
    sem = CStr(i)
    fexiste = feuilleexiste(sem)
                If fexiste = False Then
                    'ajout d'une feuille
                    Sheets("Modèle").Select
                    Sheets("Modèle").Copy Before:=Sheets(1)
                    Sheets("Modèle (2)").Select
                    Sheets("Modèle (2)").Name = sem
                End If
    Next
    et donc dans certain cas ... j obtiens une erreur

    erreur 1004:
    la methode Copy de la classe Worksheet a echoué.
    ...

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Elle en crée 52 c ca?

    J'ai testé et ca a l'aire de fonctionner chez moi faudrait voir pourquoi il s'arrete,...

    Je vois pas d'erreur comme ca.. Tu ne fais rien d'autre dans cette fct au niveau de la copie? Tes feuilles modeles sont bien nommées?
    Il faudrai savoir pourquoi ca foire...
    N'oubliez pas de mettre le

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Peu etre ca...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim i As Integer
    Dim sem As String
    For i = 1 To 52
    sem = CStr(i)
    fexiste = False
                If fexiste = False Then
                    'ajout d'une feuille
     
                    Sheets("Modèle").Copy Before:=Sheets(1)
                    Sheets(1).Name = sem
                End If
    Next
    N'oubliez pas de mettre le

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    J'ai testé ton code chez moi (et j'ai du ajouter la fonction feuilleexiste) et ça marche sans problèmes, si ce n'est que les feuilles sont créées dans un ordre un peu loufoque...
    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
    Sub ajouterFeuille()
        Dim i As Integer
        Dim sem As String
     
        For i = 1 To 52
        sem = CStr(i)
        fexiste = feuilleexiste(sem)
                    If fexiste = False Then
                        'ajout d'une feuille
                        Sheets("Modèle").Select
                        Sheets("Modèle").Copy Before:=Sheets(1)
                        Sheets("Modèle (2)").Select
                        Sheets("Modèle (2)").Name = sem
                    End If
        Next
    End Sub
     
    Function feuilleexiste(nom As String) As Boolean
        Dim f As Worksheet
        Dim b As Boolean
        b = False
        For Each f In ThisWorkbook.Worksheets
            If f.Name = nom Then
                b = True
                Exit For
            End If
        Next
        feuilleexiste = b
    End Function
    Si on remplace cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Modèle").Copy Before:=Sheets(1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
    les feuilles sont ajoutées à la fin.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    oui mon code fonctionne ... aux premiers lancement, (2 ou 3 fois de suite...)
    mais ca plante au bout d'un moment si on efface les feuilles creer et qu'on relance la macro.

    en faisant cette action a plusieurs reprise ... ca fini par planté ...

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Tu as peu etre une erreur dans ta fonction feuilleexiste...

    Zaza t'a donné un très bon code pour ca...
    Essaie...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function feuilleexiste(nom As String) As Boolean
        Dim f As Worksheet
        Dim b As Boolean
        b = False
        For Each f In ThisWorkbook.Worksheets
            If f.Name = nom Then
                b = True
                Exit For
            End If
        Next
        feuilleexiste = b
    End Function
    N'oubliez pas de mettre le

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    voila le code de ma fonction feuille existe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function feuilleexiste(SheetName) As Boolean
     
    Dim obj As Object
     
    On Error Resume Next
    Set obj = ActiveWorkbook.Sheets(SheetName)
    feuilleexiste = True
     
    If Err <> 0 Then
        feuilleexiste = False
    End If
     
    End Function
    cette fonction marche bien et le probleme se produit meme quand il n y a aucune feuille ... et s'arrete à al feuille 12 ou 13 ...
    c'est bizarre ...

  10. #10
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    Ta fonction devrai marcher, mais celle de Zaza est plus disons catholique lol

    Joint ton fichier ca sera plus simple.
    N'oubliez pas de mettre le

Discussions similaires

  1. Probleme lors de la creation d'un fichier d'installation VB6
    Par Esmax666 dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 29/06/2009, 14h41
  2. [VBA] probleme lors de la creation d'un fichier
    Par tiotel dans le forum Access
    Réponses: 3
    Dernier message: 09/08/2006, 15h00
  3. Réponses: 2
    Dernier message: 21/04/2006, 15h08
  4. probleme lors de la creation de table
    Par perlgirl dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/11/2005, 09h43
  5. probleme lors de la creation du device
    Par 180degrés dans le forum DirectX
    Réponses: 5
    Dernier message: 18/08/2005, 17h26

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