Aide VBA

Bonjour les rois de la VBA,

7vbaa.xlsm (10.93 Ko)

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"))
4vbaa-2.xlsm (19.00 Ko)

Cordialement,

Merci pour vos explications très détaillées ! J'y vois un peu plus clair

Bonne journée !!!

Suzie

Rechercher des sujets similaires à "aide vba"