3 liens privés
Les critères qu'on peut mettre dans un somme.si
- "10" --> = 10
- A1 --> = le contenu de A1 (ne pas mettre =A1, mais si vous le désirez vous pouvez mettre "="&A1)
- "un texte" --> = un texte
- ">10"--> Supérieur à 10
- ">=10"--> Supérieur ou égal à 10
- "<>10"--> Différent de 10
- "<10"--> Inférieur à 10
- "<=10"--> Inférieur ou égal à 10
- ">"&A1 (et non >A1) --> Supérieur au contenu de A1
- ">="&A1 (et non >=A1) --> Supérieur ou égal au contenu de A1
- "<>"&A1 (et non <>A1) --> Différent du contenu de A1
- "<"&A1 (et non <A1) --> Inférieur au contenu de A1
- "<="&A1 (et non <=A1) --> Inférieur ou égal au contenu de A1
- "<>un texte"--> Différent de 'un texte'
- "au" ou "au" ou "au" --> tout les mots commençant par 'au', tout les mots finissant par 'au', tous les mots contenant au.
Une étoile permet de remplacer n'importe quel caractère et ne précise pas le nombre de caractères remplacés. au trouvera aux et autres
Vous pouvez également utiliser un ?, celui-ci remplacera 1 seul caractère, au? trouvera aux mais pas autres.
Si dans cette formule vous remplacez au par &A1 ( ""&A1&"*" par exemple), la recherche se fait sur le contenu de A1.
et autre lien : http://parsabahrami.com/cracking-excels-password/
Option Explicit
Public Sub Nettoie()
'd'après LL par <!-- e --><a href="mailto:GeeDee@m6net.fr">GeeDee@m6net.fr</a><!-- e -->
Dim Sht As Worksheet, _
DCell As Range, plage As Range, _
Calc As Long, _
Rien As String, _
Avant As Double
On Error Resume Next
Calc = Application.Calculation ' ---- mémorisation de l'état de recalcul
'------------------------------------------------------------
MsgBox "Pour le classeur actif : " _
& Chr(10) & ActiveWorkbook.FullName _
& Chr(10) & "dans chaque feuille de calcul" _
& Chr(10) & "recherche la zone contenant des données," _
& Chr(10) & "réinitialise la dernière cellule utilisée" _
& Chr(10) & "et optimise la taille du fichier Excel", _
vbInformation
'-------------------------------------------------------------
MsgBox "Taille initiale de ce classeur en octets" _
& Chr(10) & FileLen(ActiveWorkbook.FullName), _
vbInformation, ActiveWorkbook.FullName
'------------------------------------------------------------
With Application
.Calculation = xlCalculationManual
.StatusBar = "Nettoyage en cours..."
.EnableCancelKey = xlErrorHandler
.ScreenUpdating = True
End With
'-------------------- le traitement
For Each Sht In Worksheets
Avant = Sht.UsedRange.Cells.Count
Application.StatusBar = Sht.Name & "-" & Sht.UsedRange.Address
'-------------------Traitement de la zone trouvée
If Sht.UsedRange.Address <> "$A$1" Or Not IsEmpty(Sht.[A1]) Then
Set DCell = Sht.Cells.Find("*", , , , xlByRows, xlPrevious)(2)
'----------------Suppression des lignes inutilisées
If Not DCell Is Nothing Then
Sht.Range(DCell, Sht.Cells([A:A].Count, 1)).EntireRow.Delete
Set DCell = Nothing
Set DCell = Sht.Cells.Find("*", , , , xlByColumns, xlPrevious)(, 2)
'----------------Suppression des colonnes inutilisées
If Not DCell Is Nothing Then Sht.Range(DCell, Sht.[IV1]).EntireColumn.Delete
End If
Rien = Sht.UsedRange.Address
End If
ActiveWorkbook.Save
'---------------------Message pour la feuille traitée
MsgBox "Nom de la feuille de calcul :" _
& Chr(10) & Sht.Name _
& Chr(10) & Format(Sht.UsedRange.Cells.Count / Avant, "0.00%") _
& " de la taille initiale", vbInformation, ActiveWorkbook.FullName
Next Sht
On Error GoTo 0
'--------------------Message fin de traitement
MsgBox ActiveWorkbook.FullName & Chr(10) & "Taille optimisée de ce classeur en octets " & _
Chr(10) & FileLen(ActiveWorkbook.FullName), vbInformation
'--------------------
Application.StatusBar = False
Application.Calculation = Calc
End Sub
Option Explicit
Sub passwordBreaker(protectedSheet As Worksheet)
'Breaks worksheet password protection.
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
protectedSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox (protectedSheet.Name + " is unprotected")
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
Sub unprotectAll()
Dim sheet As Worksheet
For Each sheet In ActiveWorkbook.Sheets
passwordBreaker sheet
Next
End Sub
Ouvrir un excel par fichier
VBA : étendre des formules :
previousRow.Range("A1:F1").AutoFill Destination:=previousRow.Range("A1:F2")
Modification du registre pour ouvrir Excel dans des fenêtres séparées