Aide VBA
Bonjour les rois de la VBA,
Je dois faire un programme en VBA pour que cela me donne la performance absolue et la volatilité en fonction des dates de début et de fin (cf Excel). Il faut que ça soit automatisé pour que si l'on change les dates le programme s'adapte.
J'ai donc cherchée à faire une recherche V mais en VBA et j'ai essayée de faire ça pour trouver la performance absolue, pour déjà trouver la valeur de fin, mais je n'arrive pas à le faire fonctionner ..
Dim Worksheet As Integer
Worksheets("Feuil1").Cells(16,8).Value = Application.WorksheetFunction.VLookup(Worksheets("Feuil1").Cells(14,7).Value, Worksheets("Feuil1).Range("A1:C25"), 2, 0)
Merci pour vos retour !
Suzie
Bonjour suzie99, le forum,
Pour la rechercheV:
Sub test()
Dim F1 As Worksheet, dl As Long, plage As Range, résultat
Set F1 = Sheets("Feuil1")
With F1
dl = .Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne utilisée de la colonne A
Set plage = .Range("A1:C" & dl) 'plage de recherche
résultat = Application.WorksheetFunction.VLookup(F1.Cells(14, 7).Value, plage, 2, 0) 'rechercheV
.Cells(16, 8).Value = IIf(IsError(résultat), 0, résultat) 'résultat rechercheV avec gestion d'erreur
End With
End Sub
Mais pourquoi en VBA ?
Si j'ai bien compris, ta formule en G16 devrait être:
=B25/RECHERCHEV($G$14;$A$2:$C$25;2;FAUX)-1
Cordialement,
Merci beaucoup pour votre réponse détaillée, j'ai réussie à le faire,
Néanmoins je ne comprends pas à quoi servent le "SET" et le "end(xlup) ?
Pourquoi en VBA, c'est pour un devoir nous devons le faire sur Excel et sur VBA pour nous entrainer je suppose ...
J'ai trouvée ces données sur le net pour calculer un écart type, néanmoins je n'arrive pas à la faire fonctionner, je ne comprends si je dois déclarer une variable ? lorsque j'essaye de la mettre en place je reçois une erreur du type 1004 "erreur définie par l'application ou par l'objet" je ne comprends pas trop ou ça bug ...
'si echantillon population
dev = Application.StDev(Sheets(1).Range("A2:A25"))
'si population entiere
devP = Application.StDevP(Sheets(1).Range("A2:A25"))
Merci pour votre aide,
Suzie
Re,
Néanmoins je ne comprends pas à quoi servent le "SET" et le "end(xlup) ?
Le SET sert à associer plage à ma variable range (Dim plage as range)
dl = .Range("A" & Rows.Count).End(xlUp).Row
On définit la dernière cellule utilisée de la colonne A en partant du bas....
Si ta plage est fixe on peut simplifier ainsi:
Sub test()
Dim F1 As Worksheet, plage As Range, résultat
Set F1 = Sheets("Feuil1")
With F1
Set plage = .Range("A1:C25") 'plage de recherche
résultat = Application.WorksheetFunction.VLookup(F1.Cells(14, 7).Value, plage, 2, 0) 'rechercheV
.Cells(16, 8).Value = IIf(IsError(résultat), 0, résultat) 'résultat rechercheV avec gestion d'erreur
End With
End Sub
Cordialement,
Re,
je ne comprends pas trop ou ça bug ...
dev = Application.StDev(Sheets(1).Range("A2:A25"))
devP = Application.StDevP(Sheets(1).Range("A2:A25"))
A tester.... Attention, la colonne A contient des dates....
dev = WorksheetFunction.StDev(Sheets("Feuil1").Range("B2:B25"))
devP = WorksheetFunction.StDevP(Sheets("Feuil1").Range("B2:B25"))
Cordialement,
Merci pour vos explications très détaillées ! J'y vois un peu plus clair
Bonne journée !!!
Suzie