|
Fonctions pour EXCEL
Public Function SOMME_SI_COULEUR(PlageSomme As Range,
PlageCouleur As Range) As Double
Dim Cel As Range
Dim Som As Double
For Each Cel In PlageSomme
If Cel.Interior.ColorIndex = PlageCouleur.Interior.ColorIndex
Then Som = Som + Cel
Next
SOMME_SI_COULEUR = Som
End Function
Cette fonction pose un problème, car elle ne se met pas automatiquement à jour
lorsque vous changez la couleur de fond de PlageCouleur ou une couleur
de fond d'une ou plusieurs cellules de la plage PlageSomme. En conséquence,
vous êtes obligé de 'bidouiller' : soit vous fermer le
classeur en enregistrant, puis vous le réouvrez, soit vous modifiez
une cellule entrant en compte dans la formule d'une autre cellule, soit
vous sélectionnez la cellule contenant la fonction SOMME_SI_COULEUR,
vous cliquez dans la barre de formule et appuyez sur la touche Entrée.
Cette fonction donne le numéro de la semaine selon la norme Européenne
(1ère semaine = 1ère semaine de 4 jours) :
Public Function NoSem(UneDate As Date) As Integer
On Error Resume Next
NoSem = CInt(Format(UneDate, "ww", vbMonday, vbFirstFourDays))
End Function
Dans une cellule, vous pouvez utiliser la fonction CELLULE("nomfichier") pour
insérer le nom complet d'un fichier, mais vous n'avez aucune fonction
qui vous propose le simple nom du fichier, le chemin du classeur et le
nom de l'onglet. Vous pouvez donc tapez ces fonctions dans un module
du classeur et les utiliser comme fonction dans une cellule.
Public Function Nom_Classeur() As String
On Error Resume Next
Nom_Classeur = ActiveWorkbook.Name
End Function
Public Function Chemin_Classeur() As String
On Error Resume Next
Chemin_Classeur = ActiveWorkbook.Path
End Function
Public Function Nom_Onglet(Plage As Range) As String
On Error Resume Next
Nom_Onglet = Plage.Parent.Name
End Function
Dans une procédure si vous avez besoin du nom complet du classeur
(chemin & nom) utiliser la propriété FullName
:(ActiveWorkbook.FullName).
L' auteur de ce code est Marc Salacroup et je l'ai trouvé sur "Le
petit monde de Visual Basic".
Public Function Jour_Paques(An As Integer) As Date
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f
As Integer
Dim g As Integer, h As Integer, i As Integer, j As Integer, k As Integer, l
As Integer
Dim m As Integer, n As Integer, p As Integer
a = An Mod 19
b = An \ 100
c = An Mod 100
d = b \ 4
e = b Mod 4
f = (b + 8) \ 25
g = (b - f + 1) \ 3
h = (19 * a + b - d - g + 15) Mod 30
i = c \ 4
k = c Mod 4
l = (32 + 2 * e + 2 * i - h - k) Mod 7
m = (a + 11 * h + 22 * l) \ 451
n = (h + l - 7 * m + 114) \ 31
p = (h + l - 7 * m + 114) Mod 31
Jour_Paques = DateSerial(An, n, p + 1)
End Function
|
|
V.
Un timer (code s'exécutant toutes les x secondes)
|
Dans un module tapez le code suivant :
Dim Lheure As Double
Dim Interval as Integer
Sub LancerTimer(NbS as integer)
'L'application ExecutionTimer se lancera toutes les 0 heure, 0 minute et Interval
seconde
Interval =NbS
Application.OnTime Now + TimeSerial(0, 0,Interval ), "ExecutionTimer"
End Sub
Sub ArretTimer()
On Error Resume Next
Application.OnTime Lheure, "ExecutionTimer", , False
End Sub
Sub ExecutionTimer()
'code à exécuter à la fin de chaque Interval secondes
'code obligatoire
Lheure = Now + TimeSerial(0, 0, Interval )
Application.OnTime Lheure, "ExecutionTimer"
End Sub
Vous lancez le timer en appelant la procédure LancerTimer(N),
puis elle exécute le code de ExecutionTimer toutes les N secondes
et enfin, vous l'arrêter avec ArretTimer.
|