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 :

Excel Crash au moment de Sheets.Add


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 14
    Par défaut Excel Crash au moment de Sheets.Add
    Bonjour,

    J'ai une macro qui fonctionnait très bien jusqu'à ce que je veuille déplacer une feuille après l'avoir ajoutée.
    Maintenant, même en mode Débogage (F8) excel ne me met même pas d'erreur mais simplement ferme complètement mon classeur, et une fois sur deux redémarre Excel.

    A quoi cela peut il être du? D'autant plus que j'ai mis en notes toutes mes modifs de déplacement pour revenir au code qui fonctionnait et le problème persiste avec ce fichier, il se ferme systématiquement au moment d'ajouter une feuille.
    Si je réutilise une version encore plus ancienne, mon Sheets.Add fonctionne très bien.

    Voici mon code pour ajouter une feuille. J'ai également laissé mes lignes de code en notes pour déplacer ma feuille.
    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
     
            Dim Wb As Workbook
            Dim NomClasseur As String
            Dim NomFeuille As String
            Dim PositionFeuille As Integer
            Dim m As Integer
            NomClasseur = ActiveWorkbook.Name
            Set Wb = Workbooks(NomClasseur)
            'For m = 1 To Worksheets.Count()
             '   If Sheets(m).Name = FormNiveauAdd.PositionNiveau.Value Then
             '      PositionFeuille = m
             '        Exit For
             'End If
            'Next
            Sheets.Add(after:=Worksheets(Worksheets.Count())).Name = NiveauNomValue.Value
           ' Sheets(Worksheets.Count()).Move after:=Sheets(PositionFeuille)
            'PositionFeuille = ActiveSheet.Index
            NomFeuille = CStr(Wb.Sheets(Worksheets.Count()).CodeName)
            ActiveWindow.DisplayGridlines = False
            Worksheets("PROJET").Select

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour

    Tu ajoute ta feuille à l'endroit précisi

    Exemple

    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 Test()
    Dim Wb As Workbook
    Dim Ws As Worksheet
    Dim Nomfeuille As String
    Dim PositionFeuille As Integer
    Dim m As Integer
     
     
    Set Wb = ActiveWorkbook
    If Not FeuilleExiste(Wb, NiveauNomvalue) Then
        With Wb
            For m = 1 To Worksheets.Count()
                If Sheets(m).Name = "Toto" Then    'FormNiveauAdd.PositionNiveau.Value Then
                    PositionFeuille = m
                    Exit For
                End If
            Next m
            If PositionFeuille = 0 Then PositionFeuille = .Sheets.Count
            Set Ws = .Worksheets.Add(After:=.Sheets(PositionFeuille))
            Ws.Name = NiveauNomvalue
        End With
    Else
        MsgBox "Feuille " & NiveauNomvalue & " existe déjà"
    End If
    Set Wb = Nothing
    End Sub
     
    Private Function FeuilleExiste(ByVal Wbk As Workbook, ByVal Nomfeuille As String) As Boolean
     
    On Error Resume Next
    FeuilleExiste = Wbk.Sheets(Nomfeuille).Index
    End Function

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 14
    Par défaut
    Bonjour,

    Merci pour ta réponse,

    J'ai remplacé mon morceau de code par le tiens mais il n'y a rien à faire le problème persiste
    J'ai toujours Excel qui se crash, quand je fais mode débogage, il crash au moment de la ligne suivante...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Ws = .Worksheets.Add(After:=.Sheets(PositionFeuille))

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 14
    Par défaut
    Up!

    Le problème persiste, même après avoir copié le code qui me fait crasher Excel sur un nouveau classeur vierge.
    Avec différents tests il s'avère que le code se fait sans problème pour créer 2 feuilles, mais pour créer la 3e, Excel crash comme s'il y avait une limite up du nombre de feuille...
    Parce que par contre j'en supprime une, j'ai aucun soucis pour en recréer une, je ne sais pas si c'est très clair mais c'est en tout cas très contraignant.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Bonjour,

    Je ne sais pas si cela pourra t'aider mais j'utilise cette ligne de code pour ajouter une feuille avec laquelle je n'ai jamais eu de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets.Add after:=Worksheets(Worksheets.Count)
    Bonne journée,

Discussions similaires

  1. [XL-2013] Crash Excel à l'utilisation de Sheets.Add
    Par Wini29 dans le forum Excel
    Réponses: 26
    Dernier message: 26/01/2016, 17h35
  2. qui verrouille mon fichier excel en ce moment, je désire le contacter.
    Par oobrillant dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/06/2015, 14h53
  3. Excel capture la saisire dans le add-in Delphi
    Par Négrier dans le forum Langage
    Réponses: 0
    Dernier message: 13/10/2010, 14h14
  4. Réponses: 1
    Dernier message: 26/09/2010, 11h22
  5. Erreur 1004 pendant le 20° Sheets.Add Before
    Par jldancet dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/04/2008, 08h45

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