Private Const dsWarningSheet As String = "sheet2" 'Enter name of the Entry/Warning Page
Private Sub Workbook_Beforesave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' ici je cherche a gere la fonction sauvegarder sous ( pr obliger les user a renommer le fichier)
If SaveAsUI = False Then
Cancel = True
MsgBox "The 'Save' function for this workbook has been disabled. " & Chr(10) & " You will only save this document if you rename the workbook" & Chr(10) & "" & Chr(10) & " Click Ok, If you want to rename this forder", vbOKOnly + vbInformation, "Save Disabled"
Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range("A1").Value)
End If
End Sub
Ensuite, je cherche a cacher ma feuille de donnees sources, quand l'utilisateur a travailler avec mon fichier.
Dans thisworkbook ( VBA), j'ai donne l'instruction ( copier, collee en dessous) qui me permet:
- d'aficher mon classeur entier ( a part, la page ou j'ai mes donnees sources) et de cache ma page warning Si l'utilisateur n'accepte pas les macros, un msg d'erreur (contenu ds une autre feuille apparait)
- de masquer les feuilles de mon classeur, sauf la page warning dans le cas ou l'utilisateur ouvre le classeur sans accepter les macros.
Mon soucis est que la tt ce systeme marche une fois sur deux!!!
Quand j'ouvre mon classeur et approuve les macros pr la 1ere fois, pas de soucis tt est bon.
Des lors que je sauvegarde mon travail, le ferme et le re-ouvre ( tjrs en acceptant les macros), la macro plante.
dans la cas ou je n'accepte pas les macros, ma page warning ne s'affiche plus.
Es ce un pb de ma fonction sauvegarder?
Ou autre???
Je vous ai colle mes instructions apres.... Je sais que j'y suis presque...Si qqn pouvais m'aider, ca serait fantastiq!!
Merci d'avance....
Vera
Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each ds In ActiveWorkbook.Sheets
If LCase(dsWarningSheet) = LCase(ds.Name) Then
ds.Visible = True
Else
ds.Visible = xlVeryHidden
End If
Next
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal ds As Object, ByVal Target As Excel.Range)
If LCase(ds.Name) = LCase(dsWarningSheet) Then
For Each ds In ActiveWorkbook.Sheets
ds.Visible = True
Next
ActiveSheet.Visible = xlVeryHidden
Sheets("Sheet1").Visible = False
End If
End Sub
Private Sub workbook_open()
Sheets(dsWarningSheet).Select
For Each ds In ActiveWorkbook.Sheets
ds.Visible = True
bonjour,
je n'ai que survolé ton programme, mais est ce que avant d'utiliser les variables tu t'es assurée que tu les ai mises a 0 avant? Parce que si elles gardent leur état le PC sautera des étapes.
topsy
je suis obligee de cliquer sur la focntion "reset" ds VBA... C peut etre la mon erreur...
Pourrais tu me dire comment remetre les variables a 0 stp???
Je sais pas.
Merci!
VN.
tiloter
Messages postés41Date d'inscriptionvendredi 7 mars 2008StatutMembreDernière intervention24 janvier 2010
>
lagazelle
9 déc. 2008 à 15:56
Bonjour,
Afin de remettre les variables a 0, il faut en debut de programme mettre "ta Variable"=0 ("ta Variable" sont tes variables utilisées"). Et ceci pour toutes les variables.
bonne journée
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.
9 déc. 2008 à 09:09
je suis obligee de cliquer sur la focntion "reset" ds VBA... C peut etre la mon erreur...
Pourrais tu me dire comment remetre les variables a 0 stp???
Je sais pas.
Merci!
VN.
9 déc. 2008 à 15:56
Afin de remettre les variables a 0, il faut en debut de programme mettre "ta Variable"=0 ("ta Variable" sont tes variables utilisées"). Et ceci pour toutes les variables.
bonne journée