Bonjour,
J'ai un problème avec mon programme VBA.
Quand je le lance dans mon environnement de développement, il fonctionne parfaitement et me renvoie la bonne valeur.
Par contre quand je le lance à partir de ma feuille Excel, il m'avertit d'un problème de référencement circulaire et m'affiche tout le temps la valeur 0.
Je fais d'abord une recherche sur la feuille 'OPCVM_BLOOMBERG' pour trouver une valeur 'isin2' et je fais ensuite une autre recherche dans un tableau situé sous la valeur 'isin2' (composé de date) pour trouver deux dates différentes ('31/04/2010' et '32/04/2010'). Je fais cette recherche en type 'string' parce que je n'ai pas réussi à l'effectuer avec des types 'date'
Une fois que je les aie trouvé je prend la valeur de la case à droite de chacune de ces dates. et j'effectue une opération toute bête dessus.
Quand je lance ce programme dans mon environnement de développement, il marche parfaitement, mais à partir de ma feuille excel il s'exécute partiellement plusieurs fois. Il s'arrête tout le temps juste avant la dernière division, redémarre et au bout d'un moment s'arrête complétement en me renvoyant la valeur zéro.
Est-ce quelqu'un a une idée sur le pourquoi?
Cordialement,
Guillaume
PS: mon fichier excel est trop volumineux pour être mis en pièce jointe.
J'ai un problème avec mon programme VBA.
Quand je le lance dans mon environnement de développement, il fonctionne parfaitement et me renvoie la bonne valeur.
Par contre quand je le lance à partir de ma feuille Excel, il m'avertit d'un problème de référencement circulaire et m'affiche tout le temps la valeur 0.
Je fais d'abord une recherche sur la feuille 'OPCVM_BLOOMBERG' pour trouver une valeur 'isin2' et je fais ensuite une autre recherche dans un tableau situé sous la valeur 'isin2' (composé de date) pour trouver deux dates différentes ('31/04/2010' et '32/04/2010'). Je fais cette recherche en type 'string' parce que je n'ai pas réussi à l'effectuer avec des types 'date'
Une fois que je les aie trouvé je prend la valeur de la case à droite de chacune de ces dates. et j'effectue une opération toute bête dessus.
Quand je lance ce programme dans mon environnement de développement, il marche parfaitement, mais à partir de ma feuille excel il s'exécute partiellement plusieurs fois. Il s'arrête tout le temps juste avant la dernière division, redémarre et au bout d'un moment s'arrête complétement en me renvoyant la valeur zéro.
Est-ce quelqu'un a une idée sur le pourquoi?
Cordialement,
Guillaume
Code:
Function perf_mois() As Integer
Dim isin2 As String
Dim CaseIsin, CaseJour, CaseJourMoisPrecedent, LigneIsin As Range
Dim jour As Date
Dim prix_moix, prix_mois_precedent As Integer
jour2 = "32/04/2010"
jour = "31/04/2010"
isin2 = "FR0010096552 "
Debug.Print Val(jour2)
Sheets ("OPCVM_BLOOMBERG") 'sélectionne la feuille OPCVM BLOOMBERG
colonneIsin = Application.WorksheetFunction.Match(isin2, Rows("4"), 0) 'recherche le code isin sur la ligne 4
Cells(7, colonneIsin).Select 'selectionne la première des dates du bon code isin
Set c = Columns(colonneIsin)
CaseJour = Application.WorksheetFunction.Match(jour, c, 0) 'trouve la case avec la bonne date ou celle la plus élevée qui lui est inférieure
Cells(CaseJour, colonneIsin).Select
CasePrix = ActiveCell.Offset(0, 1).Select 'selectionne la case à droite de la case où se trouve la bonne date (ou celle juste inférieure à celle-ci)
prix_mois = Selection.Value 'prend la valeur de la case à droite de la case où se trouve la bonne date (ou celle juste inférieure à celle-ci)
CaseJourMoisPrecedent = Application.WorksheetFunction.Match(jour2, c, 0) 'trouve la case avec la bonne date ou celle la plus élevée qui lui est inférieure
Cells(CaseJourMoisPrecedent, colonneIsin).Select
CasePrixMoisPrecedent = ActiveCell.Offset(0, 1).Select ' selectionne la case à droite de la case où se trouve la date de fin du mois précédent (ou celle juste inférieure à celle-ci)
prix_mois_precedent = Selection.Value ' prend la valeur de la case à droite de la case où se trouve la date de fin du mois précédent (ou celle juste inférieure à celle-ci)
prix_mois_precedent2 = prix_mois_precedent
prix_mois2 = prix_mois
perf_mois = (prix_mois2 / prix_mois_precedent2)
Debug.Print perf_mois
End Function
PS: mon fichier excel est trop volumineux pour être mis en pièce jointe.