DEBUTANT VBA EXCEL [Résolu]

Signaler
Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007
-
Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007
-
Bonjour,

Je me dois de demander de l'aide sur une fonction qui pourtant semble être simplissime. J'ai crée cette macro:

Sub supprimer_page()



    ActiveSheet.Delete
   
       
End Sub


La feuille est bien supprimée mais excel me renvoi une erreur "execution interrompue" avec le curseur sur le "End sub"

Eclairez s'il vous plait ma lanterne

Merci!

15 réponses

Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007

J'ai trouvé une solution qui marche. J'ai refait mon code:

Sub NoMessageOndelete()



On Error Resume Next



Dim x As String



Dim Retour As Integer



     Retour = MsgBox("Confirmation de suppression", vbOKCancel + vbCritical + vbDefaultButton2, "suppression ligne")
     
     If Retour = vbOK Then
           
            x = ActiveSheet.Name
           
            If x = "modele" Then
           
                Else
                Worksheets(1).Activate
           
                Application.DisplayAlerts = False
           
                ThisWorkbook.Worksheets(x).Delete
            End If



     Else
           
     End If



'x = InputBox("Which Sheet to delete")



Application.DisplayAlerts = True



End Sub


Aucune erreur pour l'intant !
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
A quel endroit se trouve cette sub?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007

D'abord merci de me repondre,

Si j'ai bien compris, je doit répondre que les 3 lignes copiées sont les seules de la macro! pas d'autres lignes de code.
Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007

Pour info supplémentaire, ce bout de code est associé à un bouton...
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonsoir,

J'ai testé, mais je n'arrive pas à recréer ton erreur... que le code soit dans un module ou pas... Est-ce que c'est vraiment le seul code ?


Peux-tu expliquer un peu plus, SVP... ce que tu fais exactement.


Amicalement,


Us.
Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007

Dans cette macro je n'ai pas d'autre ligne de commande. Apres j'ai 3 macros, une qui se déclenche au démarrage (masque une feuille), une pour creer des pages (bouton) et une pour supprimer des pages (bouton).

Tu pourra trouver l'illustration de ce que je dis sur: http://apart-de-skwick.blogspot.com/

Merci de votre aide, car je ne comprends vraiment pas cette erreur...
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
A mon avis, c'est jrivet qui te donne la bonne piste. Et comme tu réponds à côté de sa question ^^
Je crois que cette macro n'est pas enregistrée dans un module, mais dans la feuille elle-même. Quand elle s'exécute, elle supprime effectivement la feuille et donc le code qui y est attaché. Résultat, message d'erreur tout simplement parce qu'il n'y a plus de code à exécuter et que le End Sub n'a pas été rencontré.


La solution à mon sens, insérer un module, couper coller de ta macro dans ce module et déclarer la procédure en public :


Public Sub ...


Si je suis à côté de la plaque, mes excuses


Molenn


 
Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007

L'idée était bonne mais ne semble pas être la solution à mon problème... j'ai déclaré la macro dans un module (selon moi c'était déjà le cas) public mais rien n'y change... Cela provient peu être d'un mauvais paramétrage de excel...
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonsoir,

Personnellement, pour moi le code fonctionne parfaitement. Tant que je ne pourrais pas récréer l'erreur, je ne pourrais pas t'aider.
A priori, je pense qu'un appelle se fait sur la page supprimée après coup... il semble qu'on a tous cette même idée... Peux-tu déposer ton fichier quelque part, pour qu'on puisse le télécharger... je pense qu'on pourra ensuite d'apporter une explication. A vrai dire, tu donnes pas assez d'information pour bien comprendre ton code...

Amicalement,
Us.
Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007

Bon voici le fichier:

http://dl.free.fr/gAi2Zrvjj/calculsectionpertedechargeforum.xls

(enregistrez la cible du lien, sinon pas acces au vba)

le mot de passe est excel.

Merci à tous
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Petit conseil en passant...

Évite d'écrire du code comme ceci
            If x = "modele" Then
           
                Else
Écris plutôt
          If x <> "modele" then
et tu enlèves le Else qui ne sert à rien.
Même chose pour le dernier Else... enlève-le. Il ne sert à rien, là non plus.

MPi²
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
En complément je dirais qu'il faut éviter les On Error Resume Next,

Sub NoMessageOndelete()
Dim x As String
Dim Retour As VbMsgBoxResult

     Retour = MsgBox("Confirmation de suppression", vbOKCancel + vbQuestion + vbDefaultButton2, "suppression ligne")
     If Retour = vbOK Then
        x = ActiveSheet.Name
        If x <> "modele" Then
            Worksheets(1).Activate
            Application.DisplayAlerts = False
            Call ThisWorkbook.Worksheets(x).Delete
            Application.DisplayAlerts = True
        End If
     End If
End Sub

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonjour,

C'est bête, mais le téléchargement est soumi  à autorisation...

En plus, cette longueur de code (qui remplace une seule instruction qui noralement fonctionne) n'explique pas le problème rencontré... ce qui aurait été plus instructif de comprendre... (même si le principal c'est d'avoir trouvé une solution)...

Amicalement,
Us.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Encore moi...


A la réflexion, je me demande si le réglage du niveau de sécurité ne serait-il pas le responsable...


Enfin, quoi qu'il en soit, le code (ou les codes), peuvent se résumer ainsi :



Sub Delete_Sheet()
On Error Resume Next
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub


puisse qu'il semble que c'est la désactivation des messages d'erreurs (Application.displayalerts) qui semble être le blocage.

ON ERROR RESUME NEXT, est utile ! lorsqu'on reste qu'une Feuille à supprimer... ce qui n'est pas admis par excel... puisque l'existence d'un fichier Excel doit possèder au moins une Feuille...

Amicalement,
Us.
Messages postés
10
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
16 octobre 2007

l'autorisation donne accès a toute personne qui donne le passe "excel" comme expliqué (mal) dans le post plus haut.

Merci pour l'aide.

PS: si tu trouve aussi ce qui me fait merder la création de page (pas a chaque fois, mais tout les environ 10 pages); tu me redis :)

Merci a tous!