Recuperer cours de l'action

  • Initiateur de la discussion Initiateur de la discussion biker
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

biker

XLDnaute Occasionnel
Bonjour,

Je recherche un peu partout sur le net pour finaliser mon fichier excel.
Mais le probleme est que je n'y arrive pas.

Je souhaiterai pouvoir recuperer le cours de mes actions en temps reel ("ou decale de 15 min").
Car j'aimerai l'inserer dans la colonne H.

Je vous en remercie par avance de vos suggestions et ainsi que vos reponses


J'ai joint mon fichier
 

Pièces jointes

Re : Recuperer cours de l'action

Il y a 2 problèmes pour retirer les cotations

1/retirer toutes les cotations sauf celle du jour (test si la connexion internet est active + besoin d’un fichier iqy dans lequel on envoit des infos formant un URL du site yahoo finances et qui récupére les cotations d’un fichiers csv)
2/Retirer l’unique cotation du jour en cours cad en différé de 15 min (c'est la procédure nommée inserlign)
2.1/Il faudra activer les objets de la bibliothèque MSXML2.ServerXMLHTTP dans l'editeur de code VBA .J'espère que cette bibilothèque est encore présente pour excel 2007 sinon il faudra trouver celle qui utilise les objets XML ...

Voici le code de principe apres à toi de t’adapter en fonction du nom de tes variables .Bon courage …

Code:
Option Explicit

‘test si la connexion internet est active
  
  Private Declare Function InternetGetConnectedState Lib "wininet.dll" _
                                                   (ByRef lpdwFlags As Long, _
                                                    ByVal dwReserved As Long) As Long

Private Sub testi(onglet, URL, numdelalign)


Dim testconnexion As Boolean
    testconnexion = ConnexionInternetActive    ' appel la fonction ConnexionInternetActive
    
Dim plagedecotations As String

 If testconnexion = True Then
    Call ecritdsfichieriqy(URL)
    Call metdslonglet(plagedecotations, onglet, numdelalign)
 Else
 MsgBox "Il faut d'abord se connecter à internet pour le programme fonctionne correctement"
 End If
 

End Sub

 Private Function ConnexionInternetActive() As Boolean

  ConnexionInternetActive = InternetGetConnectedState(0&, 0&)

  End Function
Sub ecritdsfichieriqy(URL)
 
 Dim Status As Boolean
 Dim FileNumber
       
     Status = False
             
    FileNumber = FreeFile   'FreeFile est une fonction importante
                                                                       
     Open "C:\Program Files\Microsoft Office\Office\Queries\Cotations.iqy" For Output As #FileNumber
     Print #FileNumber, "WEB"
     Print #FileNumber, "1"
     Print #FileNumber, URL
     Close #FileNumber
     Status = True

End Sub

Private Sub metdslonglet(plagedecotations, onglet, numdelalign)
'cette routine sert a coller les colonnne OHLCV dans l'onglet

Dim connectionstring As String

 connectionstring = "FINDER;C:\Program Files\Microsoft Office\Office\Queries\Cotations.iqy"

Dim qt As QueryTable
Set qt = Sheets(onglet.Name).QueryTables.Add(connectionstring, Destination:=Sheets(onglet.Name).Range("A1"))

On Error Resume Next
With qt
 .BackgroundQuery = True
 .TablesOnlyFromHTML = True
 .AdjustColumnWidth = True
 .Refresh BackgroundQuery:=False
 .SaveData = True
End With
 
 Dim r As Range
 Set r = Sheets(onglet.Name).Range("A:A")
 
 'Ci dessous hélas cela creer un décalage
 r.TextToColumns Destination:=Sheets(onglet.Name).Range("A1"), comma:=True    'ici ça fonctionne sans les parenthèses
 Set r = Nothing                                                    

Call inserlign(onglet, numdelalign)  ' appelle inserlign pour ajouter la ligne de cotation du jour courant   cad temps réél ou différé de 15 min

End Sub


Private Sub inserlign(nomaction, numdelalign)
'insere une ligne vierge en A2  et ensuite y colle les cotations de la journée celle qui sont à  15 minutes près éventuellement
ThisWorkbook.Worksheets(nomaction).Range("A2").EntireRow.Insert

Dim URLinternet, tag, cotationLAST As String
Dim HttpReq As Variant
Dim result As String

result = ThisWorkbook.Worksheets("Base").Range("A" & numdelalign)

Dim i As Integer
Dim montableau As Variant
montableau = Array("o", "h", "g", "l1", "v")

ThisWorkbook.Worksheets(nomaction).Cells(2, 1) = Date

For i = 1 To 5
URLinternet = "http://finance.yahoo.com/d/quotes.csv?s=" & result & "&f=" & CStr(montableau(i))  'cette amorce de lien permet de ne retirer q'une
                                                        ' et une seule cotation (pas l'historique tout entier)
                                                        
Set HttpReq = CreateObject("MSXML2.ServerXMLHTTP")

HttpReq.Open "GET", URLinternet, False
HttpReq.Send ""   ' Attention il ne fallait pas oublier les guillemets vides ""

cotationLAST = Trim(HttpReq.responsetext)
cotationLAST = Replace(cotationLAST, Chr$(13), "")  'manipule la string pour enlever les retours chariots
cotationLAST = Replace(cotationLAST, Chr$(10), "")


ThisWorkbook.Worksheets(nomaction).Cells(2, i + 1) = cotationLAST

Set HttpReq = Nothing
Next

End Sub
 
Dernière édition:
Re : Recuperer cours de l'action

Je vous remercie de vos reponses.
Apres m'avoir gratter la tete pour trouver mes resultats.
J'ai reussi a faire ce que je voulais grace a vos conseils.

Par contre une derniere question : je trouve que lors de l'excecution de mise a jour de mes cotes c'est un peu long? Peux t'on accelerer ce proceder.

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
563
Réponses
2
Affichages
3 K
Réponses
1
Affichages
842
Réponses
17
Affichages
2 K
C
  • Question Question
Réponses
2
Affichages
914
O
Réponses
0
Affichages
907
OSCAR57
O
Retour