1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
|
' Module destiné à travailler sur les ListObject.
'-----------------------------------------------------
'
' fRechercherData : trouver un élément dans un listobject, renvoi un Range sinon Nothing
'---
' fLoRelativeRow fLoRelativeColumn : renvoient la position de l'élément dans le listobject
' fLoAbsoluteRow fLoAbsoluteColumn : renvoient la position de l'élément dans la feuille
'---
' fLoRelativeAddress : renvoit l'adresse de l'élément dans le listobject
' fLoAbsoluteAddress : renvoit l'adresse de l'élément dans la feuille
'---
' sDebugInfoDataLo : Affichage d'une MsgBox avec tous les appels pour visualiser rapidement une donnée (destiné au Debug)
' testfRechercherData : test pour exemple
Option Explicit
'*
'*
'**************************************************
Public Function fRechercherData(s_Item As String, s_loTabName As String, s_loColID As String) As Range
Dim r_Item As Range
' si erreur lors du code qui suivra on saute en gestion d'erreur
On Error GoTo ErrorHandler
' recherche de l'élément dans le tableau
Set r_Item = sheet_bdd.ListObjects(s_loTabName).ListColumns(s_loColID).DataBodyRange.Find(s_Item)
' on renvoit l'item trouvé sous forme de Range
Set fRechercherData = r_Item
'on sort de la fonction pour ne pas interférer avec la gestion d'erreur
Exit Function
ErrorHandler:
Debug.Print "Description: " & Err.Description & Chr(10) & "numero: " & Err.Number, _
vbCritical + vbOKOnly + vbDefaultButton2, _
"Dans fRechercherData"
' sur erreur, aucun élément trouvé, on renvoit nothing
Set fRechercherData = Nothing
End Function
'*
'*
'***********************************************************************
Public Function fLoRelativeRow(r_Item As Range, s_loTabName As String) As Long
' si erreur lors du code qui suivra on saute en gestion d'erreur
On Error GoTo ErrorHandler
fLoRelativeRow = sheet_bdd.Range(r_Item.Address).Row - sheet_bdd.ListObjects(s_loTabName).DataBodyRange.Row + 1
Exit Function
ErrorHandler:
Debug.Print "Description: " & Err.Description & Chr(10) & "numero: " & Err.Number, _
vbCritical + vbOKOnly + vbDefaultButton2, _
"Dans fLoRelativeRow"
' sur erreur, aucun élément trouvé, on renvoit -1
fLoRelativeRow = -1
End Function
'*
'*
'***********************************************************************
Public Function fLoAbsoluteRow(r_Item As Range, s_loTabName As String) As Long
' si erreur lors du code qui suivra on saute en gestion d'erreur
On Error GoTo ErrorHandler
fLoAbsoluteRow = sheet_bdd.Range(r_Item.Address).Row
Exit Function
ErrorHandler:
Debug.Print "Description: " & Err.Description & Chr(10) & "numero: " & Err.Number, _
vbCritical + vbOKOnly + vbDefaultButton2, _
"Dans fLoAbsoluteRow"
' sur erreur, aucun élément trouvé, on renvoit -1
fLoAbsoluteRow = -1
End Function
'*
'*
'***********************************************************************
Public Function fLoRelativeColumn(r_Item As Range, s_loTabName As String) As Long
' si erreur lors du code qui suivra on saute en gestion d'erreur
On Error GoTo ErrorHandler
fLoRelativeColumn = sheet_bdd.Range(r_Item.Address).Column - sheet_bdd.ListObjects(s_loTabName).DataBodyRange.Column + 1
Exit Function
ErrorHandler:
Debug.Print "Description: " & Err.Description & Chr(10) & "numero: " & Err.Number, _
vbCritical + vbOKOnly + vbDefaultButton2, _
"Dans fLoRelativeColumn"
' sur erreur, aucun élément trouvé, on renvoit -1
fLoRelativeColumn = -1
End Function
'*
'*
'***********************************************************************
Public Function fLoAbsoluteColumn(r_Item As Range, s_loTabName As String) As Long
' si erreur lors du code qui suivra on saute en gestion d'erreur
On Error GoTo ErrorHandler
fLoAbsoluteColumn = sheet_bdd.Range(r_Item.Address).Column
Exit Function
ErrorHandler:
Debug.Print "Description: " & Err.Description & Chr(10) & "numero: " & Err.Number, _
vbCritical + vbOKOnly + vbDefaultButton2, _
"Dans fLoAbsoluteColumn"
' sur erreur, aucun élément trouvé, on renvoit -1
fLoAbsoluteColumn = -1
End Function
'*
'*
'***********************************************************************
Public Function fLoAbsoluteAddress(r_Item As Range, s_loTabName As String) As String
' si erreur lors du code qui suivra on saute en gestion d'erreur
On Error GoTo ErrorHandler
fLoAbsoluteAddress = sheet_bdd.Range(r_Item.Address).Address
Exit Function
ErrorHandler:
Debug.Print "Description: " & Err.Description & Chr(10) & "numero: " & Err.Number, _
vbCritical + vbOKOnly + vbDefaultButton2, _
"Dans fLoAbsoluteAddress"
' sur erreur, aucun élément trouvé, on renvoit -1
fLoAbsoluteAddress = ""
End Function
'*
'*
'***********************************************************************
Public Function fLoRelativeAddress(r_Item As Range, s_loTabName As String) As String
' si erreur lors du code qui suivra on saute en gestion d'erreur
On Error GoTo ErrorHandler
fLoRelativeAddress = Cells((sheet_bdd.Range(r_Item.Address).Row - sheet_bdd.ListObjects(s_loTabName).DataBodyRange.Row + 1), (sheet_bdd.Range(r_Item.Address).Column - sheet_bdd.ListObjects(s_loTabName).DataBodyRange.Column + 1)).Address
'fLoRelativeAddress = Cells(sheet_bdd.Range(r_Item.Address).Row - [t_bdd].Row + 1, sheet_bdd.Range(r_Item.Address).Column - [t_bdd].Column + 1).Address
Exit Function
ErrorHandler:
Debug.Print "Description: " & Err.Description & Chr(10) & "numero: " & Err.Number, _
vbCritical + vbOKOnly + vbDefaultButton2, _
"Dans fLoRelativeAddress"
' sur erreur, aucun élément trouvé, on renvoit -1
fLoRelativeAddress = ""
End Function
'*
'* Affichage en message popup pour debug et compréhension.
'***************************************
Public Sub sDebugInfoDataLo(r_Item As Range, s_loTabName As String)
MsgBox "Inter n° " & r_Item.Value & Chr(10) _
& "------------------" & Chr(10) _
& "Absolute Adresse: " & fLoAbsoluteAddress(r_Item, "t_bdd") & Chr(10) _
& "Relative Adresse: " & fLoRelativeAddress(r_Item, "t_bdd") & Chr(10) _
& Chr(10) _
& "Absolute Row : " & fLoAbsoluteRow(r_Item, "t_bdd") & Chr(10) _
& "Relative Row : " & fLoRelativeRow(r_Item, "t_bdd") & Chr(10) _
& Chr(10) _
& "Absolute Col : " & fLoAbsoluteColumn(r_Item, "t_bdd") & Chr(10) _
& "Relative Col : " & fLoRelativeColumn(r_Item, "t_bdd")
End Sub
'*
'* test pour exemple utilisateur
'*********************************
Public Sub testfRechercherData()
Dim r_Item As Range
Set r_Item = fRechercherData("10", "t_bdd", "col_Numero")
If Not r_Item Is Nothing Then
sDebugInfoDataLo r_Item, "t_bdd"
Else
MsgBox "Aucun élément trouvé "
End If
Set r_Item = nothing
End Sub |
Partager