Désactiver un bouton en code VBA
Bonjour,
Petit souci pour un expert mais grand souci pour un débutant en VBA.....
Sur le 1er onglet "Renseignements" d'un fichier Excel, lorsque je clique sur un bouton "Enregistrement", je lance une macro qui va lire un certain nombre de données dispersées et les enregistrer de manière ordonnée dans un 2ème onglet intitulé "Relevés" selon l'exemple ci-dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Sub Macro_enregistrement_étanchéité()
'
' Macro_enregistrement_étanchéité Macro
'
Sheets("Renseignements").Unprotect
Sheets("Relevés").Unprotect
Sheets("Renseignements").Range("I37").Select
Selection.Copy
Sheets("Relevés").Select
Range("A1").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Renseignements").Select
Range("J37").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Relevés").Select |
...... et qui se termine par :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Renseignements").Select
Range("Q37").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Relevés").Select
Range("H1").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Renseignements").Protect
Sheets("Relevés").Protect
End Sub |
Cette macro fonctionne très bien mais suite à quelques erreurs de précipitation dans le "clic" sur le bouton (Enregistrement des données alors que tous les champs ne sont pas renseignés), je souhaite activer/afficher ou désactiver/rendre invisible le bouton de commande "Enregistrement". La condition étant : Si F29 = 7 (Dans l'onglet "Renseignements") => enregistrement possible.
Je viens de passer un temps fou à comprendre/tester tous les tutos trouvés sur différents sites mais impossible de faire fonctionner dans mon fichier, tout simplement parce que je ne comprends pas le langage VBA !
J'ai essayé en modifiant le début de la macro ci-dessus, après avoir déprotéger les feuilles mais ça ne marche pas !
J'ai essayé de créer la macro suivante :
Code:
1 2 3 4 5
| Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$F$29" Then Exit Sub
If Target.Value = "7" Then Me.CommandEnregistrement.Visible = True
If Target.Value <> "7" Then Me.CommandEnregistrement.Visible = False
End Sub |
...et ça ne marche pas !
Quelqu'un pourrait-il m'aider SVP ?