DEBUTANT VBA EXCEL

Résolu
skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007 - 10 oct. 2007 à 14:31
skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007 - 16 oct. 2007 à 16:05
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

skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007
12 oct. 2007 à 11:39
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 !
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
10 oct. 2007 à 14:43
Salut,
A quel endroit se trouve cette sub?

@+: Ju£i?n
Pensez: Réponse acceptée
0
skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007
10 oct. 2007 à 14:45
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.
0
skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007
10 oct. 2007 à 15:05
Pour info supplémentaire, ce bout de code est associé à un bouton...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
10 oct. 2007 à 22:35
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.
0
skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007
11 oct. 2007 à 10:48
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...
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
11 oct. 2007 à 12:29
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


 
0
skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007
11 oct. 2007 à 13:29
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...
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
11 oct. 2007 à 23:09
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.
0
skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007
12 oct. 2007 à 09:42
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
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
12 oct. 2007 à 11:48
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²
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 oct. 2007 à 12:26
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
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
14 oct. 2007 à 07:59
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.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
14 oct. 2007 à 08:13
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.
0
skwick Messages postés 10 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 16 octobre 2007
16 oct. 2007 à 16:05
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!
0
Rejoignez-nous