Macro pour effacer différentes cellules dans un tableau avec

bonjour a toutes et tous

J'ai une macro pour effacer un groupe de cellules avec un bouton qui a un mot de passe avant execution de cette macro, mais mon problème est que s'à n'efface que les premières cellule

voici ma macro.

Sub Calendrier()

UserForm2.Show

End Sub

Private Sub CommandButton1_Click()

UserForm1.Hide

End Sub

Private Sub CommandButton2_Click()

If TextBox1.Text = "zizi" Then

Range("G5:K36, Q5:T33, AA5:AE36, AK5:AO35, AU5:AY36, BE5:BI35, BO5:BS36, BY5:CC36, CI5:CM35, CS5:CW36, DC5:G35, DM5:Q36").ClearContents

Else: MsgBox ("c'est pas le bon t'es trop nul!!!!!")

End If

TextBox1 = ""

UserForm1.Hide

End Sub

Private Sub Label1_Click()

End Sub

Private Sub UserForm_Click()

End Sub

les seules cellules qui s'effacent sont ("G5:K36") et les autres groupes non

pourriez vous m'aider et me dire ou est mon erreur!

d'avance merci

Salut seigneurchris,

C'est normal car le code associé à ton bouton OK dans l'userform2 est celui-ci :

Private Sub CommandButton2_Click()
If TextBox1.Text = "zizi" Then
Range("G5:K36").ClearContents
Else: MsgBox ("Le mot de passe est invalide.")
End If
TextBox1 = ""
UserForm2.Hide
End Sub

Il ne faut pas mettre le code du bouton dans un module, ce qui est le cas de celui-ci :

Private Sub CommandButton2_Click()

If TextBox1.Text = "zizi" Then
Range("G5:J35,Q5:T32,AA5:AE36,AK5:AO35,AU5:AY36,BE5:BI35,BO5:BS36,BY5:CC36,CI5:CM35,CS5:CW36,DC5:DG35,DM5:DQ36").ClearContents ""
Else: MsgBox ("c'est pas le bon t'es trop nul!!!!!")
End If
TextBox1 = ""
UserForm1.Hide
End Sub

Il se trouve dans le module4 alors qu'il n'a rien à y faire. Il faut mettre tout ça dans l'userform associé.

J'ai également vu une procédure Worksheet_Change dans un module, ça ne devrait pas être là mais dans le code d'une feuille.

ah ok ok et je modifie ça comment? faut refaire la macro?

Je suis plutôt novice que pro pour les macro....

oui maintenant j'ai une erreur de compilation...

Dans l'éditeur VBA, et dans Userform2, double clique sur le bouton OK et remplace la procédure CommandButton2 existante par celle qui se trouve dans le module4.

un grand merci vba-new ça fonctionne impeccablement...

pour répondre à

"J'ai également vu une procédure Worksheet_Change dans un module, ça ne devrait pas être là mais dans le code d'une feuille.

"

en fait je n'ai mis qu'une partie du fichier excel... 659mo ça ne serai pas passé....

j'aimerai bien faire un peu du Access mais la j'ai encore du boulot...

super encore une fois merci

mais pourrait on utiliser le menu déroulant pour effacer la dite liste a la place du bouton effacer?

si oui un petit coup de main ne serai pas de refus....

seigneurchris a écrit :

mais pourrait on utiliser le menu déroulant pour effacer la dite liste a la place du bouton effacer?

Comment ça marcherait ?

Donc sur ma feuille sur 2011 on peux choisir 2012,2013 etc

Serait il possible que lorsque je change d'année (via le bouton de liste déroulante sur la droite de 2011)

Que efface tout directement ( les cellues demander bien sur..)

Oui c'est possible. Change le code Worksheet_Change de la feuille Calendrier par le suivant :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        If Not Application.Intersect(Target, Range("A11")) Is Nothing Then
        Call AtteindreMois
        End If
        If Not Application.Intersect(Target, Range("A4")) Is Nothing Then
        Range("G5:J35,Q5:T32,AA5:AE36,AK5:AO35,AU5:AY36,BE5:BI35,BO5:BS36,BY5:CC36,CI5:CM35,CS5:CW36,DC5:DG35,DM5:DQ36").ClearContents
        End If
End Sub

Mais attention ! Ça supprime les cellules sans crier gare ! Pas de mot de passe, pas de confirmation !

ok merci vba-new

et c'est possible avec mot de passe comme le fait mon bouton efface?

je te remercie pour ton aide précieuse ainsi que ton temps...

Oui c'est possible.

Remplace la procédure Worksheet_Change de la feuille Calendrier par celle-ci :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range("A11")) Is Nothing Then
    Call AtteindreMois
    End If
    If Not Application.Intersect(Target, Range("A4")) Is Nothing Then
    UserForm2.Show
    If UserForm2.TextBox1.Text = "zizi" Then
    Range("G5:J35,Q5:T32,AA5:AE36,AK5:AO35,AU5:AY36,BE5:BI35,BO5:BS36,BY5:CC36,CI5:CM35,CS5:CW36,DC5:DG35,DM5:DQ36").ClearContents
    End If
    End If
End Sub

Remplace aussi le code du bouton OK de l'Userform2 par celui-ci :

Private Sub CommandButton2_Click()
If TextBox1.Text = "zizi" Then
MotDePasse = TextBox1.Text
Range("G5:K36").ClearContents
Else: MsgBox ("Le mot de passe est invalide.")
End If
'TextBox1 = ""
UserForm2.Hide
End Sub

c'est super un grand merci pour ton aide précieuse

aaaah si je pouvais être aussi calé...

encore un grand merci.

seigneurchris a écrit :

aaaah si je pouvais être aussi calé...

Ça viendra Si tu continues à pratiquer... J'ai commencé sur ce forum complètement ignorant du monde vba...
Rechercher des sujets similaires à "macro effacer differentes tableau"