Importation de cours en continu

poilou2607

XLDnaute Nouveau
Bonjour,
J'aimerai savoir si il est possible de récupérer des cours de bourse en continu dans excel.

Par exemple avoir en A1 le cours du CAC40. Est-il possible de l'avoir en continu ? ou par actualisation du fichier ? ou alors part macro ?

Merci d'avance de votre aide !
 

Theze

XLDnaute Occasionnel
Re : Importation de cours en continu

Bonjour,

Regarde du coté de Application.OnTime. dans l'exemple, tu exécute "Timer" et ensuite, toutes les minutes "CAC40()" sera appelée qui elle ensuite rappelera "TRimer" et ainsi de suite :
Code:
Sub Timer()

    Application.OnTime Now + TimeValue("00:01:00"), "CAC40"

End Sub

Sub CAC40()
   
    'ici ton code de récup de la valeur...
    '...
    'rappel de la proc Timer pour la récup suivante
    Timer
    
End Sub

Hervé.
 

poilou2607

XLDnaute Nouveau
Re : Importation de cours en continu

Salut,

Pour obtenir le cours, il faut créer une requête soit manuellement via Données>Données externes>A partir du web.

Soit avec le code :
Code:
With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.boursorama.com/cours.phtml?symbole=1rPCAC", Destination:= _
        Range("A1"))
        .Name = "cours.phtml?symbole=1rPCAC"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "6"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With

Ensuite la macro CAC40 de Theze, actualise cette requête toute les minutes :

Code:
Sub Timer()

    Application.OnTime Now + TimeValue("00:01:00"), "CAC40"

End Sub

Sub CAC40()
   
    Range("A1").QueryTable.Refresh BackgroundQuery:=False

    Call Timer
    
End Sub
 

Discussions similaires