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 !
A voir également:

5 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
voilà pour effacer toutes les données d'une feuille:

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

1
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54
 
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
Iama Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   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
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54
 
Bonjour,

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

Mais merci ^^
0
Iama Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   14
 
Et Unprotect (MDP )
0
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
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54
 
Actuellement on peut mettre un sub dans une feuille et même m'appeler avec [ALT]+[F8]
0
quent
 
désolé je savais pas
0
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54 > quent
 
Pas besoin de t'excuser quent :)
0
borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   7
 
Du coup tu peux déplacer ta sub vers un module :-)
0

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

Posez votre question
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
skk201 Messages postés 942 Date d'inscription   Statut Membre Dernière intervention   54
 
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