Skip to content

Instantly share code, notes, and snippets.

@Mandorlo
Created October 5, 2018 22:29
Show Gist options
  • Save Mandorlo/66feab2f4606507efe2cf760a79c89cb to your computer and use it in GitHub Desktop.
Save Mandorlo/66feab2f4606507efe2cf760a79c89cb to your computer and use it in GitHub Desktop.

Documentation LIB_LIST

Liste des fonctions

  • coll2arr : transforme une collection en array
  • trierArr : trie un array selon un critere
  • countOccurArr : compte le nombre d'occurence d'une chaine dans un array
  • arrayMerge : fusionne 2 arrays
  • arrayPadding : complète un array avec une chaine pour qu'il atteigne une certaine longueur
  • isArray : renvoie 0, 1 ou 2 selon la dimension de l'array
  • addArr : renvoie la somme des valeurs de l'array
  • multArr : renvoie la multiplication des valeurs de l'array
  • maxArr : renvoie la valeur max de l'array
  • minArr : renvoie la valeur min de l'array
  • searchArr : renvoie l'index où se trouve la chaine recheerchée dans l'array
  • arrEmpty : indique si l'array est vide ou non
  • join2D : comme la fonction join mais pour les array 2D
  • collKeyExists : indique si une clé existe dans une collection
  • collJoin : comme join mais pour les collections
  • isInColl : dit si une valeur existe dans la collection

coll2arr

Convertit une collection en array

Function coll2arr(ByVal c As Collection) As Variant

trierArr

Trie un array selon le critère.

Function trierArr( _
      ByVal arr As Variant, _
      ByVal critere As Variant)

countOccurArr

Compte le nombre d'occurences de c dans l'array variant arr.

Function countOccurArr(ByVal arr As Variant, ByVal c As String) As Integer

arrayMerge

Integre l'array contenu dans conteneur à l'index ind. Exemple : arrayMerge( array("0","1","2","3","4"), array("A","B","C"), 2) renvoie array("0","1","2","A","B","C","3","4")

Function arrayMerge( _
      ByVal conteneur As Variant, _
      ByVal contenu As Variant, _
      ByVal ind As Integer) As Variant

arrayPadding

Renvoie l'array arr avec des padd à la fin pour qu'il ait la longueur final_length.

Function arrayPadding( _
      ByVal arr As Variant, _
      ByVal final_length As Integer, _
      ByVal padd As String) As Variant

isArray

Renvoie 0 si v n'est pas un array, 1 s'il y a 1D, 2 s'il y a 2D.

Function isArray(ByVal v As Variant) As Integer

addArr

Additionne tous les éléments de l'array arr.

Function addArr(ByVal arr As Variant) As Integer

multArr

Multiplie tous les éléments de l'array arr.

Function multArr(ByVal arr As Variant) As Integer

maxArr

Renvoie le max integer dans arr.

Function maxArr(ByVal arr As Variant) As Integer

minArr

Renvoie le min integer dans arr.

Function minArr(ByVal arr As Variant) As Integer

searchArr

Renvoie la position de needle dans l'array haystack.

Function searchArr( _
      ByVal needle As String, _
      haystack As Variant) As Integer

arrEmpty

Indique si un array est vide ou non.

Function arrEmpty(ByVal arr As Variant) As Boolean

join2D

Joint un array 2D variant colonne ou ligne (typiquement lorsqu'on récupère les valeurs d'une plage avec Sheets("coco").range("A1:A5").value par ex).

Function join2D( _
      ByVal arr As Variant, _
      Optional ByVal sep As String = "") As String

collKeyExists

Dit si la clé k existe dans la collection c.

Function collKeyExists( _
      ByVal c As Collection, _
      ByVal k As String) As Boolean

collJoin

Joint la collection de string c avec le separateur s.

Function collJoin( _
      ByVal c As Collection, _
      Optional ByVal sep As String = ";") As String

isInColl

Indique si la valeur v est dans la collection c.

Function isInColl( _
      ByVal c As Collection, _
      ByVal v As String) As Boolean
' convertit une collection en array
Function coll2arr(ByVal c As Collection) As Variant
Dim v As Variant
If c.Count > 0 Then
ReDim v(c.Count - 1)
For i = 1 To c.Count
v(i - 1) = c(i)
Next i
End If
coll2arr = v
End Function
' ===============================================================================
' GESTION DES ARRAYS
' ===============================================================================
Function trierArr(ByVal arr As Variant, ByVal critere As Variant)
used = ","
Dim res_arr As Variant
ReDim res_arr(UBound(arr))
For i = 0 To UBound(arr)
curr_min = -1
ind_min = -1
For j = 0 To UBound(arr)
If (critere(j) < curr_min Or ind_min = -1) And InStr(used, "," & j & ",") = 0 Then
curr_min = critere(j)
ind_min = j
End If
Next j
res_arr(i) = arr(ind_min)
used = used & ind_min & ","
Next i
trierArr = res_arr
End Function
' compte le nombre d'occurences de c dans l'array variant arr
Function countOccurArr(ByVal arr As Variant, ByVal c As String) As Integer
countOccurArr = 0
For i = 0 To UBound(arr)
If CStr(arr(i)) = c Then
countOccurArr = countOccurArr + 1
End If
Next i
End Function
' integre l'array contenu dans conteneur à l'index ind
' arrayMerge( array("0","1","2","3","4"), array("A","B","C"), 2) renvoie array("0","1","2","A","B","C","3","4")
Function arrayMerge(ByVal conteneur As Variant, ByVal contenu As Variant, ByVal ind As Integer) As Variant
Dim arr_final As Variant
ReDim arr_final(UBound(conteneur) + UBound(contenu) + 1)
For i = 0 To ind
arr_final(i) = conteneur(i)
Next i
For i = 0 To UBound(contenu)
arr_final(i + ind + 1) = contenu(i)
Next i
For i = ind + 1 To UBound(conteneur)
arr_final(i + UBound(contenu) + 1) = conteneur(i)
Next i
arrayMerge = arr_final
End Function
' renvoie l'array arr avec des padd à la fin pour qu'il ait la longueur final_length
Function arrayPadding(ByVal arr As Variant, ByVal final_length As Integer, ByVal padd As String) As Variant
n = UBound(arr)
ReDim Preserve arr(final_length - 1)
For i = n + 1 To final_length - 1
arr(i) = padd
Next i
arrayPadding = arr
End Function
' renvoie 0 si v n'est pas un array, 1 s'il y a 1D, 2 s'il y a 2D
Function isArray(ByVal v As Variant) As Integer
On Error GoTo isarraystop
isArray = 0
n = UBound(v, 1)
isArray = 1
n = UBound(v, 2)
isArray = 2
Exit Function
isarraystop:
End Function
' additionne tous les éléments de l'array arr
Function addArr(ByVal arr As Variant) As Integer
addArr = 0
For i = 0 To UBound(arr)
addArr = addArr + arr(i)
Next i
End Function
' multiplie tous les éléments de l'array arr
Function multArr(ByVal arr As Variant) As Integer
multArr = 1
For i = 0 To UBound(arr)
multArr = multArr * arr(i)
Next i
End Function
' renvoie le max integer dans arr
Function maxArr(ByVal arr As Variant) As Integer
If UBound(arr) < 0 Then Exit Function
maxArr = arr(0)
For i = 1 To UBound(arr)
If maxArr < arr(i) Then maxArr = arr(i)
Next i
End Function
' renvoie le min integer dans arr
Function minArr(ByVal arr As Variant) As Integer
If UBound(arr) < 0 Then Exit Function
minArr = arr(0)
For i = 1 To UBound(arr)
If minArr > arr(i) Then minArr = arr(i)
Next i
End Function
' renvoie la position de needle dans l'array haystack
Function searchArr(ByVal needle As String, haystack As Variant) As Integer
searchArr = -1
s = Join(haystack, ";")
n = InStr(s, needle)
If n > 0 Then
subs = Left(s, n)
searchArr = countOccur(";", subs)
End If
End Function
' indique si un array est vide ou non
Function arrEmpty(ByVal arr As Variant) As Boolean
On Error GoTo fin
arrEmpty = True
arrEmpty = UBound(arr) < 0
fin:
End Function
' joint un array 2D variant colonne ou ligne (typiquement lorsqu'on récupère les valeurs d'une plage avec Sheets("coco").range("A1:A5").value par ex)
Function join2D(ByVal arr As Variant, Optional ByVal sep As String = "") As String
On Error GoTo erreur
If VarType(arr) = 8 Or VarType(arr) = 0 Then
join2D = arr
Exit Function
ElseIf isArray(arr) = 1 Then
join2D = Join(arr, sep)
Exit Function
End If
' on essaie la méthode rapide
join2D = Join(WorksheetFunction.Transpose(arr), sep)
Exit Function
erreur:
' sinon on fait avec la méthode lente
join2D = ""
For i = LBound(arr, 1) To UBound(arr, 1)
For j = LBound(arr, 2) To UBound(arr, 2)
join2D = join2D & arr(i, j) & sep
Next j
Next i
join2D = Left(join2D, Len(join2D) - Len(sep))
End Function
' ===============================================================================
' GESTION DES COLLECTIONS
' ===============================================================================
' dit si une clé existe dans une collection
Function collKeyExists(ByVal c As Collection, ByVal k As String) As Boolean
On Error GoTo fin
collKeyExists = False
truc = c(k)
collKeyExists = True
Exit Function
fin:
collKeyExists = collKeyExists_aux(c, k)
End Function
Function collKeyExists_aux(ByVal c As Collection, ByVal k As String) As Boolean
On Error GoTo fin
collKeyExists_aux = False
Set truc = c(k)
collKeyExists_aux = True
Exit Function
fin:
End Function
' joint la collection de string c avec le separateur s
Function collJoin(ByVal c As Collection, Optional ByVal sep As String = ";") As String
collJoin = ""
If c.Count > 0 Then
collJoin = c(1)
For i = 2 To c.Count
collJoin = collJoin & sep & c(i)
Next i
End If
End Function
' indique si la valeur v est dans la collection c
Function isInColl(ByVal c As Collection, ByVal v As String) As Boolean
isInColl = False
For Each el In c
If el = v Then
isInColl = True
Exit Function
End If
Next el
End Function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment