popeyem
Habitué
Bonjour à tous,
Après quelques mois d'absence, me revoila au sujet de l'utilisation d'un userform ; J'aurais besoin d'un coup de main sur le sujet suivant:
J'ai 60 fichiers dont les onglets doivent être verrouillés. J'ai crée une macro dans un fichier extérieur pour le faire. Le nom des fichiers apparait dans une listebox, je clique sur celui qui m'interesse et le verrouillage se lance. Jusqu'ici, aucun problème. Je me suis dis ensuite que je pourrais avoir besoin de déverrouiller ces onglets.. donc autant créer une boite de dialogue pour la macro qui me demande l'action à effectuer : verrouiller / déverrouiller les onglets du fichier cliqué.
Voici la macro 1ere version, seulement du verrouilage
[cpp]Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim pays_source As Workbook
Dim ws_PIE As Worksheet
Dim compteur As Long
Dim Chemin As String, pays_a_verrouiller As String, nom_pays As String
Chemin = ActiveWorkbook.Path
pays_a_verrouiller = Dir(Chemin & "\" & "* 2011 2014 *.xls", vbDirectory)
For compteur = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(compteur) Then
'Boite de dialogue
Select Case MsgBox("Verrouiller les onglets PIE, ... " & pays_a_verrouiller, vbOKCancel)
Case vbCancel
Exit Sub
Case vbOK
Set pays_source = Workbooks.Open(Chemin & "\" & pays_a_verrouiller)
'Definition des onglets
Set ws_PIE = pays_source.Worksheets("PIE")
'Protection des feuilles
ws_PIE.Protect Password:="XXX", AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True
pays_source.Close
End Select
End If
pays_a_verrouiller = Dir()
Next
End Sub[/cpp]
Je mets maintenant ce que j'aimerais faire marcher, à savoir,
- utilisation du useform
- en fonction du bouton cliqué, telle action se réalise
J'ai utilisé un select case mais n'arrive pas à le faire marcher :
[cpp]Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim pays_source As Workbook
Dim ws_PIE As Worksheet, ws_OMB As Worksheet, ws_TAX As Worksheet, ws_LAW As Worksheet, ws_Admin As Worksheet, ws_PL As Worksheet, ws_TSC As Worksheet
Dim compteur As Long
Dim Chemin As String, pays_a_verrouiller As String, nom_pays As String
Chemin = ActiveWorkbook.Path
pays_a_verrouiller = Dir(Chemin & "\" & "* 2011 2014 *.xls", vbDirectory)
For compteur = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(compteur) Then
'Boite de dialogue
Select Case UserForm1
Case UserForm1.CommandButton1
Set pays_source = Workbooks.Open(Chemin & "\" & pays_a_verrouiller)
'Definition des onglets
Set ws_PIE = pays_source.Worksheets("PIE")
'Protection des feuilles
ws_PIE.Protect Password:="XXX", AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True
pays_source.Close
UserForm1.Hide
Unload UserForm1
Case UserForm1.CommandButton2
Set pays_source = Workbooks.Open(Chemin & "\" & pays_a_verrouiller)
'Definition des onglets
Set ws_PIE = pays_source.Worksheets("PIE")
'Déverrouillage des feuilles
ws_PIE.Unprotect "XXX"
pays_source.Close
UserForm1.Hide
Unload UserForm1
Case UserForm1.CommandButton3
Exit Sub
End Select
End If
pays_a_verrouiller = Dir()
Next
End Sub[/cpp]
Voila, j'aimerais bien en savoir un peu plus sur ce userform !
Merci pour le coup de main
Après quelques mois d'absence, me revoila au sujet de l'utilisation d'un userform ; J'aurais besoin d'un coup de main sur le sujet suivant:
J'ai 60 fichiers dont les onglets doivent être verrouillés. J'ai crée une macro dans un fichier extérieur pour le faire. Le nom des fichiers apparait dans une listebox, je clique sur celui qui m'interesse et le verrouillage se lance. Jusqu'ici, aucun problème. Je me suis dis ensuite que je pourrais avoir besoin de déverrouiller ces onglets.. donc autant créer une boite de dialogue pour la macro qui me demande l'action à effectuer : verrouiller / déverrouiller les onglets du fichier cliqué.
Voici la macro 1ere version, seulement du verrouilage
[cpp]Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim pays_source As Workbook
Dim ws_PIE As Worksheet
Dim compteur As Long
Dim Chemin As String, pays_a_verrouiller As String, nom_pays As String
Chemin = ActiveWorkbook.Path
pays_a_verrouiller = Dir(Chemin & "\" & "* 2011 2014 *.xls", vbDirectory)
For compteur = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(compteur) Then
'Boite de dialogue
Select Case MsgBox("Verrouiller les onglets PIE, ... " & pays_a_verrouiller, vbOKCancel)
Case vbCancel
Exit Sub
Case vbOK
Set pays_source = Workbooks.Open(Chemin & "\" & pays_a_verrouiller)
'Definition des onglets
Set ws_PIE = pays_source.Worksheets("PIE")
'Protection des feuilles
ws_PIE.Protect Password:="XXX", AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True
pays_source.Close
End Select
End If
pays_a_verrouiller = Dir()
Next
End Sub[/cpp]
Je mets maintenant ce que j'aimerais faire marcher, à savoir,
- utilisation du useform
- en fonction du bouton cliqué, telle action se réalise
J'ai utilisé un select case mais n'arrive pas à le faire marcher :
[cpp]Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim pays_source As Workbook
Dim ws_PIE As Worksheet, ws_OMB As Worksheet, ws_TAX As Worksheet, ws_LAW As Worksheet, ws_Admin As Worksheet, ws_PL As Worksheet, ws_TSC As Worksheet
Dim compteur As Long
Dim Chemin As String, pays_a_verrouiller As String, nom_pays As String
Chemin = ActiveWorkbook.Path
pays_a_verrouiller = Dir(Chemin & "\" & "* 2011 2014 *.xls", vbDirectory)
For compteur = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(compteur) Then
'Boite de dialogue
Select Case UserForm1
Case UserForm1.CommandButton1
Set pays_source = Workbooks.Open(Chemin & "\" & pays_a_verrouiller)
'Definition des onglets
Set ws_PIE = pays_source.Worksheets("PIE")
'Protection des feuilles
ws_PIE.Protect Password:="XXX", AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True
pays_source.Close
UserForm1.Hide
Unload UserForm1
Case UserForm1.CommandButton2
Set pays_source = Workbooks.Open(Chemin & "\" & pays_a_verrouiller)
'Definition des onglets
Set ws_PIE = pays_source.Worksheets("PIE")
'Déverrouillage des feuilles
ws_PIE.Unprotect "XXX"
pays_source.Close
UserForm1.Hide
Unload UserForm1
Case UserForm1.CommandButton3
Exit Sub
End Select
End If
pays_a_verrouiller = Dir()
Next
End Sub[/cpp]
Voila, j'aimerais bien en savoir un peu plus sur ce userform !
Merci pour le coup de main