Problème de macro

Bonjour a tous

petit nouveau sur le site et débutant en VBA, j'ai un souci a résoudre que les pro connaisses.

J'ai fait une macro qui me permet de bloquer toutes les feuilles d'un fichier qui représente chaque mois en une fois, j'ai mis cette macro sur un bouton.

Lorsque je clic une première fois pour tous bloquer, il n'y a pas de problème. Mais lorsque je clic par erreur une deuxième fois dessus j'ai un débogage.

Je voudrais qu'il ne se passe rien si j'appui plusieurs fois sur le bouton et évider que le débogage s'affiche.

Je vous met une partie du code (le débogage se situe au niveau de: ActiveSheet.Range("$C$3:$D$55").AutoFilter Field:=2

Merci pour votre aide

Sheets("Janvier18").Select

ActiveSheet.Range("$C$3:$D$55").AutoFilter Field:=2

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _

False, AllowFiltering:=True

Range("A3").Select

Sheets("Février18").Select

ActiveSheet.Range("$C$3:$D$55").AutoFilter Field:=2

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _

False, AllowFiltering:=True

Range("U7").Select

Bonjour,

le débogage se situe au niveau de: ActiveSheet.Range("$C$3:$D$55").AutoFilter Field:=2

le code essaie de de faire un filtre sur une feuille protégée... Alors soit vous gérer correctement le clic du bouton, soit vous mettez cette instruction au début du code du bouton :

On Error Resume Next

Comme cela si VBA détecte une erreur, il n'en fait pas cas et continue de dérouler le code, qui provoquera certainement d'autres erreurs qui seront elles aussi "inhibées" normalement... Mais ce n'est pas propre, mais avec des bouts de code on fini par faire ...

vbMBHB

Bonjour et bienvenue sur le forum

Essaie ça :

Sub ess()
    Sheets("Janvier18").Select
    On Error Resume Next
     ActiveSheet.Range("$C$3:$D$55").AutoFilter Field:=2
     If Err > 1 Then Exit Sub
     ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
     False, AllowFiltering:=True
     Range("A3").Select
     Sheets("Février18").Select
     On Error Resume Next
     ActiveSheet.Range("$C$3:$D$55").AutoFilter Field:=2
     If Err > 1 Then Exit Sub
     ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
     False, AllowFiltering:=True
     Range("U7").Select
End Sub

Bye !

Bonjour a tous

merci pour votre réponse cela fonctionne parfaitement. Plus de débogage c'est super.

Est ce que dans le VBA on peux faire en sorte que lors du clic multiple de verrouillage nous restons sur l'onglet MENU car la ce la reste sur l'onglet de Janvier.

J'en profite pour vous souhaiter de bonne fête de fin d'année

Je vous remet le code:

oups voici le code

Sheets("Janvier18").Select

On Error Resume Next

ActiveSheet.Range("$C$3:$D$55").AutoFilter Field:=2

If Err > 1 Then Exit Sub

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _

False, AllowFiltering:=True

Range("A3").Select

Sheets("Decembre18").Select

On Error Resume Next

ActiveSheet.Range("$C$3:$D$55").AutoFilter Field:=2

If Err > 1 Then Exit Sub

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _

False, AllowFiltering:=True

Sheets("Menu").Select

End Sub

Bonjour

A voir ton code, la feuille "MENU" devrait redevenir active en fin d'exécution de macro.

Si ce n'est pas le cas, il faut chercher pourquoi et le fichier est nécessaire. Joins le à ton message.

Bye !

Bonjour, l'idée au début était de mettre un "On Error Resume Next" afin que le code continue malgré une erreur détectée...

Mais avec ceci : If Err > 1 Then Exit Sub vous sortez du code si une erreur est détectée, du coup la ligne de code à la fin de la procédure qui demande de revenir sur "Menu" n'est pas "jouée" ! Essayez de mettre ceci :

If Err > 1 Then
     Sheets("Menu").Select
     Exit Sub
End If

vbMBHB

Bien vu vbMsgBoxHelpButton !

Bye !

Bonjour a tous

cela fonctionne pas

je vous joint le fichier, et cliquer é fois sur le cadena rouge.

vous allez voir que je suis sur janvier et non resté sur le menu

encore merci a vous

3conges-2018.zip (264.84 Ko)

Bonjour, je répondrais : normale, vous n'avez pas apporté les modifications suggérées...

Ci joint le fichier corrigé :

Mais il me semble qu'il y a mieux à faire au niveau du codage... Si j'ai le temps... ou quelqu'un d'autre

Pourquoi je dis cela ? Car vos code sont identiques et se répètent 12 fois ! Alors avec une boucle For I=1 to 12...

Bref, bonne fin de journée... Ah si j'oubliais : vous avez vu comme c'est plus simple avec un fichier plutôt que des morceaux de code...

vbMBHB

Un grand merci a tous pour votre aide cela fonction impeccablement.

Bonne fête de fin d'année

mathiasPE

Merci, et si j'ai un peu de temps je me penche sur ce code...

vbMBHB

Bonsoir, ci joint votre fichier modifié :

Modifications :

1 - les boutons "lien vers le menu" de chaque mois ont été modifiés, en effet ils étaient "reliés" à un code VBA, hors il suffit de créer un lien hypertexte dans le document.... Un bouton a été mis sur la feuille matrice et ce lien y est aussi.

2 - Suppression de tous les codes d'affichage de chaque mois, remplacés par le code "Clic_sur_bouton", celui-ci récupère les deux caractères de droites du nom du bouton cliqué : "Rectangle à coin arrondis 1" donne espace+1 et "Rectangle à coin arrondis 12" donne 12, ensuite on "transforme" cette chaine en valeur numérique qui nous donne soit 1 soit 12 (pareille pour les 10 autres mois).

On active la feuille correspondant à ce numéro +2 car il y a deux feuilles "hors mois", donc la feuille de janvier en en position 3, on a bien 1+2=3 !, du coup il n'y a plus qu'un seul code pour tous les mois.

3 - Simplification des codes de protection et dé protection des feuille plus un ajout de visibilité ou pas des images cadenas comme cela plus de problème d'erreur, car le bouton de protection disparaît une fois celles ci mises en places ! Donc cadenas vert visible = feuilles protégées, donc cela lance le code de dé protection et inversement.

vbMBHB

Rechercher des sujets similaires à "probleme macro"