Problème avec un sub dans une feuille (Excel)

Résolu
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   -  
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Voilà je rencontre un petit problème avec un méthode que j'aimerai placer dans chacune de mes feuilles. Il s'agit d'une méthode qui efface une partie du contenu de la feuille. Cette méthode sera appellée par un Userform.

Voici le code tout simple placé dans le code de la feuille :

Sub Clear()
ActiveWorkbook.Sheets("Communes - Gemeinden").Unprotect MDP 'MDP est le mot de passe de la feuille
Sheets("Communes - Gemeinden").Range("A2:C" & Sheets("Communes - Gemeinden").Cells(1, 4).Value).ClearContents ' Sheets("Communes - Gemeinden").Cells(1, 4).Value) représente la dernière ligne pleine
End Sub


Ce que je trouve étrange c'est que c'est la première ligne qui me renvoie un erreur "1004 depuis Excel dans un MSGBOX et non depuis Editeur VBA (pas la possibilité de "FIN" ou de "DEBOGUER".

Est-ce que l'erreur vient du fait que le sub est placé dans une feuille ? Est-ce que qqun aurait une solution pour que ça fonctionne ?

Merci à tous !

--
*Vous pouvez mettre en forme votre code grâce à la flèche en haut a droite de l'éditeur de texte.
Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utiles."

5 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    voilà pour effacer toutes les données d'une feuille:

    ThisWorkbook.Sheets("Feuil1").Cells.Clear 'a adapter

    1
    1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      Le problème c'est que je ne veux pas tout effacer mais uniquement une zone précise.

      Je vien d'essayer mon code sur une autre feuille avec une page fixe et ça à marcher. J'ai pu l'appeler depuis l'userforme comme je voulais :
      Feuil4.Clear


      Donc je pense qu'enfaite le problème devait venir d'une variable qui ne devait pas être déclarée.

      Merci à tous quand meme !
      0
  2. Iama Messages postés 324 Statut Membre 14
     
    Bonjour

    A tout hasard, peux-tu modifier le nom de ta macro, il me parait très proche du nom d'une fonction

    cordialement
    0
    1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      Bonjour,

      J'ai déjà essayé de changer en "Banane" et ça a rien changer :)

      Mais merci ^^
      0
    2. Iama Messages postés 324 Statut Membre 14
       
      Et Unprotect (MDP )
      0
  3. quent
     
    bonjour,

    oui c'est normale que ca beug car on ne peut pas mettre un sub dans une feuille.
    ce qu'il faut mettre depends de l'action qui va declencher ta macro (par exemple quand tu modifie une cellule ou alors quand tu change la selection). tu peux voir les differentes possibilitées quand tu vas dans la feuille, en cliquant sur la barre en haut a gauche (par default il y a general) et tu selectionne worksheet puis tu clique sur la barre en haut a droite (par default c'est selectionchange) et la tu a toutes les possibilitées et quand tu clique sur une il va rajouté 2 nouvelles lignes et tu met ton code entre ces deux lignes
    0
    1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      Actuellement on peut mettre un sub dans une feuille et même m'appeler avec [ALT]+[F8]
      0
    2. quent
       
      désolé je savais pas
      0
      1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55 > quent
         
        Pas besoin de t'excuser quent :)
        0
  4. borntobealive Messages postés 167 Statut Membre 7
     
    Du coup tu peux déplacer ta sub vers un module :-)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Pour ce que tu veux faire, il ne faut pas ta macro dans la feuille.

    Il suffit de mettre ceci dans le bouton de l'UserForm:

    Option Explicit
    Private Sub CommandButton1_Click()
    nettoyer_feuil1
    nettoyer_feuil2
    End Sub
    Private Sub nettoyer_feuil1()
    ActiveWorkbook.Sheets("Feuil1").Unprotect "MDP" 'MDP est le mot de passe de la feuille
    Sheets("Feuil1").Cells(1, 4).ClearContents
    ActiveWorkbook.Sheets("Feuil1").Protect "MDP"
    End Sub
    Private Sub nettoyer_feuil2()
    ActiveWorkbook.Sheets("Feuil2").Unprotect "MDP" 'MDP est le mot de passe de la feuille
    Sheets("Feuil2").Cells(1, 4).ClearContents
    ActiveWorkbook.Sheets("Feuil2").Protect "MDP"
    End Sub
    

    0
    1. skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   55
       
      Bonjour é toi Le Pivert :)

      J'y ai pensé mais enfaite je ne sais pas combient il va y avoir de Feuilles.

      Le principe de ce classeur c'est qu'il y a des feuilles "Mère" comme modèle, et des feuille "Filles" qui sont des copies du modelle.

      Et enfaite j'aimerai effacer le contenu de certaines de ses feuilles filles car à ce pseudo code.

      Sub Effacer(Feuille As Worksheets)
      
      Feuille.Clear
      
      End Sub
      0