VBA Formule personnalisée
Bonjour,
Je souhaite rassembler dans un seul et même tableau les infos qui se trouvent dans des tableaux identiques qui se trouvent dans différents onglets.
Ce tableau de synthèse est différent des tableaux de données, c’est pourquoi je veux créer une formule qui récupèrera les données en fonctions des entêtes de colonnes ou de lignes.
Malheureusement ma formule de fonctionne pas et ne renvoie pas de valeur.
Pouvez-vous m’aider SVP ?
Code:
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
|
Function informationsPret2() As Double
Dim valeurAnnee As Long, valeurMois As String, valeurPret As String, valeurInfo As String
Dim feuille As String, derniereLigne As Long
Dim deplacementMois As Long, deplacementAnnee As Long
Dim valeurRecherchee As Double
Dim numeroColonne As Long
Dim numeroLigne As Long
Dim lettreColonneValeur As String
Dim plageAnnee As Range
Dim plageMois As Range
Dim colonneValeur As String
Dim plageRechercheValeurPret As String
Application.Volatile
numeroColonne = ActiveCell.Column
numeroLigne = ActiveCell.Row
lettreColonneValeur = Split(Cells(1, numeroColonne).Address, "$")(1)
Set plageAnnee = Range(lettreColonneValeur & 12)
Set plageMois = Range(lettreColonneValeur & 13)
valeurAnnee = plageAnnee.MergeArea.Cells(1, 1).Value
valeurMois = plageMois.MergeArea.Cells(1, 1).Value
valeurInfo = Range(lettreColonneValeur & 14).Value
valeurPret = Range("A" & numeroLigne).Value
feuille = valeurPret
If valeurInfo = " Remboursement Capital" Then
colonneValeur = "C"
deplacementMois = 6
deplacementAnnee = 7
ElseIf valeurInfo = " Intérêts" Then
colonneValeur = "D"
deplacementMois = 5
deplacementAnnee = 6
ElseIf valeurInfo = " Capital dû aprés échéance" Then
colonneValeur = "F"
deplacementMois = 3
deplacementAnnee = 4
End If
derniereLigne = 0
Worksheets(feuille).Activate
Range("A" & Rows.Count).End(xlUp).Select
derniereLigne = Range("A" & Rows.Count).End(xlUp).Row
plageRechercheValeurPret = colonneValeur & "12: L " & derniereLigne
Range(plageRechercheValeurPret).Select
For Each Cell In Selection
Cell.Select
If ActiveCell.Offset(0, deplacementAnnee).Value = valeurAnnee And ActiveCell.Offset(0, deplacementMois).Value = valeurMois Then
valeurRecherchee = ActiveCell.Value
Exit Function
End If
Next Cell
informationsPret2 = valeurRecherchee
End Function |