Masquer la ligne de la cellule active : activecell.entirerow.hidden
= true/ false
Masquer la colonne de la cellule active : activecell.entirecolumn.hidden
= true/ false
Cacher plusieurs lignes en même temps, en faisant une union des
lignes concernées : news
Cacher plusieurs feuilles en même temps : worksheets(array("Sheet1","Sheet2","Sheet3")).Visible=xlHidden
Macros pour cacher et afficher des feuilles : news
Masquer un commentaire : activesheet.comments(1).visible=false/true
ou activesheet.shapes("commentaire 1").visible=false/true
Masquer un objet (dessin, objet de la barre formulaires, etc.) :
activesheet.shapes("nombojet").visible=false/true
Cacher Excel, pour ne montrer qu'un userform : activewindow.visible
= false :Userform1.show ou bien application.visible=false
Sélection de cellules visible
application.range("A2", range("A65536").end(xlUp).Specialcells(xlCelltypeVisible)).select
debug.Print application.range("A2", range("A2").end(xldown)).Specialcells(xlCelltypeVisible).address
Sélection & impression des feuilles visibles
Sub selectionsheetsVisible()
dim LstFeuilles() 'le tableau des feuilles affichées
dim i As Integer 'pour chaque feuille de sheets
dim j As Integer 'le nombre d'éléments du tableau, 1 par feuille affichée
for i = 1 to sheets.count
if sheets(i).Visible = true then
redim preserve LstFeuilles(j)
LstFeuilles(j) = sheets(i).Index
j = j + 1
end if
next
sheets(LstFeuilles).select
end Sub 'Merci catherine
Cacher les feuilles visibles & afficher les feuilles masquées & Inversement !!!
Sub toggleHidesheets()
dim sh As Worksheet
for each sh In activeworkbook.worksheets
select Case sh.Visible
Case xlSheetVisible: sh.Visible = xlSheetHidden
Case xlSheetHidden: sh.Visible = xlSheetVisible
end select
next sh
end Sub
Cacher les colonnes et les lignes vides
Sub MasquerLiCol()
dim nli As Integer, ncol As Integer
for nli = 1 to activesheet.Usedrange.rows.count
if application.Worksheetfunction.counta(rows(nli)) = 0 then
rows(nli).Hidden = true
end if
next nli
for ncol = 1 to activesheet.Usedrange.Columns.count
if application.Worksheetfunction.counta(Columns(ncol)) = 0 then
Columns(ncol).Hidden = true
end if
next ncol
end Sub
Cacher une colonne si une des cellules a un le mot "Préposé" dedans, par DeLand
Option Explicit
Option Compare Text
Sub hideprops()
dim c As range
for each c in usedrange
if c.String Like "*Préposé*" then
c.EntireColumn.Hidden = true
end if
next c
end Sub
'PS : Il y a une autre manière d'effectuer ceci, avec la méthode de recherche find, ce qui est d'ailleurs plus efficace.
Additionner les cellules visibles d'une plage
function SumVisiblecells(cellstoSum As Object)
application.Volatile
for each cell In cellstoSum
if cell.rows.Hidden = false then
if cell.Columns.Hidden = false then
total = total + cell.value
end if
end if
next
SumVisiblecells = total
end function
Protection
Sub protection()
cells.select
selection.Locked = true 'cellule verrouillée
selection.formulaHidden = false 'formule non masquée
activesheet.Protect DrawingObjects:=true, contents:=true, Scenarios:=true
activesheet.Unprotect
end Sub
Classeur protégé ou non : news
Demander un mot de passe avec 3 essais : news
Mot de passe mémorisé dans la base de registres
De Kent Schederin, sujet "Re: Encryting password", le vendredi
22 septembre 2000 14:26
Public strPassword As String
Sub Password()
strPassword = InputBox("Set password")
SaveSetting "Excel", "Protection", "PW", strPassword
End SubSub OpenPassword()
Dim z As String, x As String
z = GetSetting("Excel", "Protection", "PW", strPassword)
igen:x = InputBox("Set Password")
If x = z Then
MsgBox "Password correct"
Exit Sub
Else
strPassword = InputBox("Set new password")
SaveSetting "Excel", "Protection", "PW", strPassword
If MsgBox("Incorrect password. Do you want to try again", vbYesNo, "Index utbildning") = vbYes Then
GoTo igen
End If
End If
End Sub
Trouver le mot de passe de protection d'une feuille : news
Guaranteed Excel 97/2000 Decryptor - just released. http://www.ssl.stu.neva.ru/psw/crack/guaexcel.html
Auto-protéger une cellule
de Harlan Grove, le samedi 28 août 1999 08:09 sur microsoft.public.excel.worksheet.functions,
sujet "Re: how to auto-protected a cell"
Private Sub Worksheet_Change(ByVal Target As Excel.range)
application.enableevents = false
Target.Worksheet.Unprotect
Target.Locked = true
Target.Worksheet.Protect
application.enableevents = true
end Sub
Protéger seulement A1 après saisie dans A1
Message de H. S., le mardi 12 octobre 1999 16:39 sur microsoft.public.fr.excel,
sujet "Protection auto?"
Un peu de précision:
-Tu dois d'abord sélectionné toute ta feuille puis dans format\cell\protection
décoché l'option Locked sinon l'ensemble de ta feuille est protégé.
-Il faut précise l'adresse de ta cellule. Par exemple pour protéger
uniquement la cellule A1 après une saisie :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
if target.address(false,false)="A1" then
ActiveSheet.Unprotect
Target.Locked = True
Target.FormulaHidden = False
ActiveSheet.Protect Contents:=True
end if
End Sub
Créer son propre message concernant la protection
(pour remplacer le message excel)
- Sélectionne toutes les cellules de la feuille (Ctrl-A)
- Fais Format -> Cellules -> Protection et désactive l'option
"Verrouillée"
- Fais Données -> Validation
- Choisis comme critère "Personnalisé"; dans la
zone Formule, tape FAUX
- Entre ton message personnalisé dans l'onglet "Message d'erreur",
puis OK
- Protège la feuille
Protection de l'interface
Protection de barres d'outils (news microsoft.public.fr.excel,
du 24/07/99, de P. F.)
'Cette procédure n'enlève pas l'option "personnaliser", mais interdit d'apporter des changements sur les barres d'outils.
Sub OutilsBarreVerrou()
dim i
for i = 1 to toolbars.count
toolbars(i).Protection = xlNoChanges
next i
end Sub
Il est bien sûr possible de ne verrouiller que certaines barres : debug.print i, toolbars(i).name permet d'obtenir la liste des noms des barres en fonction de l'index i.Protection des barres d'outils : voir aussi xl_bo.htm
Protection avec l'option "UserInterfaceOnly" ?
Cela vous permet d'empêcher la suppression de lignes et colonnes, et la modification de la taille des cellules, ...
If ActiveSheet.ProtectionMode Then MsgBox "Feuille protégée avec l'option UserInterfaceOnly".
Protection & Filtre automatique
'Filtrer d'abord vos données, fixer la propriété "Enableautofilter" à true et protéger l'interface de l'utilisateur POUR UNE FEUILLE DONNER. Ces deux propriétés ne semblent pas être sauvegardées !! Le seul moyen de fixer ces propriétés est de faire une macro (ou passer par la boîte Propriétés de VBE)
'=> vous pourrez alors filtrer vos données.
Sub test()
worksheets("Feuil1").Protect UserInterfaceOnly:=true
worksheets("Feuil1").Enableautofilter = false
end Sub
Autres commandes réalisables sur une feuille protégée
sheets("feuil1").EnablePivotTable = True 'utiliser les tableaux croisés dynamiques
sheets("feuil1").EnableSelection = True 'pouvoir sélectionner des cellules
sheets("feuil1").EnableCalculation = True 'permettre le recalcul
Sheets("Feuil1").EnableAutoFilter = True 'permettre le filtre
Sheets("Feuil1").EnableOutlining = True 'permettre le groupage/dégroupage
Navigation dans les données d'une feuille
Lorsqu'une feuille est protégée, vous pouvez naviguer (en
tabulant notamment) de cellules non protégées à cellules
non protégées. Une feuille a une propriété propre
à la protection appelée Enabledselection qui peut être
fixée de trois manières
propriété fixée à xlnorestrictions, toutes les objets pourront être sélectionnés (mais pas forcément modifiés)
propriété fixée à xlunlockedcells, vous pourrez toujours naviguer dans les cellules non protégées, mais vous ne pourrez pas sélectionner les autres cellules.
propriété fixée à xlnoselection, aucune cellule & objet n'est utilisable.
Comment fixer la propriété EnabledSelection de la feuille
aller dans l'explorateur de projet de Visual Basic Editor, et afficher la boite de dialogue "Propriétés", dans laquelle vous trouverez la propriété en question
ou utiliser l'instruction suivante : activesheet.enabledselection = xlnorestrictions/xlunlockedcells/xlnoselection
La propriété EnableSelection doit être remise par macro sur xlUnlockedCells à chaque ouverture, car sa valeur n'est pas enregistrée avec le classeur. Voici ce qui peut être envisagé pour Excel 97-2000 (explication par L. L. le vendredi 5 mai 2000 16:40 sur microsoft.public.fr.excel, sujet "Re: cellule interdite"
- Laisser la ou les cellules que tu veux "interdire" verrouillée(s) et déverrouiller les autres.
- Active l'éditeur VBA (Alt-F11), double-cliquer sur thisworkbook et copier le code suivant dans le module (remplace "Feuil1" par le nom de la feuille concernée):Private Sub Workbook_Open()
With Worksheets("Feuil1")
.Protect UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End SubExécute manuellement cette procédure (touche F5) la première fois. Aux prochaines ouvertures du classeur, elle interdira automatiquement la sélection des cellules verrouillées.
Sélectionner la première cellule non protégée
Proposée par Chip Pearson, cette macro boucle sur chaque feuille
pour sélectionner la première cellule visible à l'écran
non verrouillée
Dim Rng As Range
For Each Rng In ActiveWindow.VisibleRange.Cells
If Rng.Locked = False Then
Rng.Select
Exit For
End If
Next Rng
Colorier les cellules non verrouillées
Sub Colorunlockedcells()
dim myCell As Excel.range
'activesheet.Unprotect
for each myCell In activesheet.Usedrange
if myCell.Locked = false then myCell.Interior.ColorIndex = 5 'blue
next myCell
end Sub
Comment empêcher l'accès à Visual Basic Editor
1°) Désactiver la barre d'outils VB : application.CommandBars("Visual
Basic").Enabled = false
2°) Rendre inaccessible la commande du menu Outils/ Macro
Sub MasqueMenuOutilsMacros()
application.CommandBars(1).Controls(6).Controls(10).Enabled = false
end Sub'Pour réafficher le Menu Outils, Macros :
Sub AfficheMenuOutilsMacros()
application.CommandBars(1).Controls(6).Controls(10).Enabled = true
end Sub
voir xl_vbacode.htm
verrouiller et déverrouiller le projet VBA : news
vous pouvez aussi tester ça mais c'est une proposition moins récente que la solution ci-dessus
Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As LongDeclare Function BringWindowToTop Lib "User32" _
(ByVal hwnd As Long) As LongSub Test()
Dim Wbk As Workbook
BringWindowToTop FindWindowA(vbNullString, Application.Caption)
SendKeys "%{F11}^r%{F11}", True
For Each Wbk In Workbooks
If Wbk.Windows(1).Visible And _
Wbk.VBProject.Protection = vbext_pp_locked Then
Wbk.Activate
SendKeys "%{F11}{LEFT}Zaza~%{F11}", True
End If
Next Wbk
End Sub
les options de sécurité d'office.
sous XL 97, la possibilité d'être averti de la présence de macros et la possibilité de les désactiver
sous XL 2000, définition de niveaux de sécurité, combinés à une signature électronique qui authentifie l'auteur de la macro
=> Outils/ Macro/ Sécurité, onglet Niveau de sécurité
Niveau de sécurité Haut : seuls les macros provenant de source fiable seront éxécutées, le système vérifie la présence de la signature électronique dans une liste de "Sources Fiables". Vous pouvez vous-même ajouter une signature que vous jugez fiable
Niveau moyen : le système vous demande si vous voulez exécutez la macro
Niveau bas : exécution de toutes les macros sans exception
Comment obtenir un certificat d'authentification (le prix dépend
du nombre et de la taille des macros)
Annuler une certification
il est possible d'annuler (et non de supprimer) la certification en faisant Outils/Macros/Sécurité, onglet "Sources fiables"' de sélectionner le certificat et de cliquer sur "Supprimer".
Désactiver l'alerte macro sous Excel97 (de raliment, vendredi 10
novembre 2000 15:57, "Re: désactiver l'alerte macro pour un document
donné")
pour ouvrir un classeur sans alerte macro, il existe deux moyens (sans enlever
la protection macro excel bien sur):
- tu enregistres ta lmacro dans le dossier XLOuvrir. le désavantage,
c'est que ton fichier sera ouvert ouvert à chaque fois que tu ouvriras
excel
- Tu ouvres ton fichier par une macro ex: de code ci dessous: Workbooks.Open(FileName:="nomfichier").
RunAutoMacros Which:=xlAutoOpen
Créer un certificat
Laurent Mortézai, jeudi 7 décembre 2000 19:40, microsoft.public.fr.excel,
sujet :"Re: Alerte Macro"
-Tu exécutes le programme SELFCERT.EXE (quelque part sur ton disque dur)
-tu ouvres Excel, puis ton fichier, puis dans l'éditeur VBA, tu fais Outils/Signature électronique, bouton Choisir, et tu sélectionnes le certificat créé précédemment
-enregistres le tout, ferme le fichier et tente de l'ouvrir: il te propose plusieurs possibilité, dont l'affichage du certificat; tu coches la case "toujours faire à confiance..." (je ne sais plus le libellé exact!). Et voilà, la prochaine fois, il ne pose plus de questions. A+