XL 2016 Sauvegarder Ancienne Version Requête PQ dans Tableau Excel

Etoto

XLDnaute Impliqué
Bonjour,

Sur mon classeur Excel, j'ai une requête qui permet de récupérer les données des changes actualisée, mais j'aimerais savoir si sur la deuxième feuille, s'il est possible de stocker les anciennes version, par exemple j'aimerais récupérer les données de ma requête une fois par jour pour la stocker sur mon autre tableau.

Si je m'explique mal, dites-moi.

Voici la PJ


Cela risque d'être complexe, je sais même pas si c'est possible, merci d'avance.
 

Pièces jointes

  • Données boursière actualisée.xlsx
    21.2 KB · Affichages: 3

Lolote83

XLDnaute Accro
Re bonjour ETOTO,
Voici le code modifié de façon à ne plus être obligé de faire appel à la cellule J6 (Onglet Données Boursière) pour le calcul de la ligne.
VB:
Sub ReupDonnées()
    xPlage1 = Range("Données_boursières[Dernier Prix]")
    xPlage2 = Range("Tableau3[Dernier Prix]")
    On Error GoTo Erreur
    'xLig = [J6] + 2
    xLig = Application.Match(CLng(Date), Range("Tableau2[Nom]"), 0) + 2
    With Sheets("Historique Bourse")
        For F = 1 To 24
            .Cells(xLig, 2 + F) = xPlage1(F, 1)
        Next F
        For F = 1 To 19
            .Cells(xLig, 26 + F) = xPlage2(F, 1)
        Next F
    End With
    Exit Sub
Erreur:
    MsgBox "Date du jour n'est pas dans le tableau", vbCritical, "ERREUR"
End Sub
Du coup, tu peux maintenant lancer la macro directement depuis l'onglet Historique Bourse
Pour cela, j'ai posté une demande sur le forum que tu peux retrouver ici. Merci à Patrick Toulon pour la solution
https://www.excel-downloads.com/threads/fonction-equiv-en-vba-bizare.20057647/

Bonne journée
@+ Lolote83
 

Etoto

XLDnaute Impliqué
Re bonjour ETOTO,
Voici le code modifié de façon à ne plus être obligé de faire appel à la cellule J6 (Onglet Données Boursière) pour le calcul de la ligne.
VB:
Sub ReupDonnées()
    xPlage1 = Range("Données_boursières[Dernier Prix]")
    xPlage2 = Range("Tableau3[Dernier Prix]")
    On Error GoTo Erreur
    'xLig = [J6] + 2
    xLig = Application.Match(CLng(Date), Range("Tableau2[Nom]"), 0) + 2
    With Sheets("Historique Bourse")
        For F = 1 To 24
            .Cells(xLig, 2 + F) = xPlage1(F, 1)
        Next F
        For F = 1 To 19
            .Cells(xLig, 26 + F) = xPlage2(F, 1)
        Next F
    End With
    Exit Sub
Erreur:
    MsgBox "Date du jour n'est pas dans le tableau", vbCritical, "ERREUR"
End Sub
Du coup, tu peux maintenant lancer la macro directement depuis l'onglet Historique Bourse
Pour cela, j'ai posté une demande sur le forum que tu peux retrouver ici. Merci à Patrick Toulon pour la solution
https://www.excel-downloads.com/threads/fonction-equiv-en-vba-bizare.20057647/

Bonne journée
@+ Lolote83
C'est parfait mais tu avais pas besoin de te donner tant de peine pour supprimer le contenu de 2 cellules, merci beaucoup d'avoir fait tout cela pour moi.
 

Lolote83

XLDnaute Accro
Re bonjour.
Le problème est que si tu venais a créer des lignes ou colonnes avant la cellule J6 (donc la date du jour) dans l'onglet Données Boursières, la macro n'aurait plus fonctionné. Maintenant, plus de problème. La date est directe en VBA et la correspondance aussi.
Cela m'a permit aussi de voir ou était mon erreur car dès le début, j'étais parti sur ce principe, mais ne fonctionnant pas, je ma suis rabattus sur une formule dans la cellule J6.
Et du coup, j'ai encore appris quelque chose. Donc que du positif.
Voili voilà.
@+ Lolote83
 

Etoto

XLDnaute Impliqué
Re bonjour.
Le problème est que si tu venais a créer des lignes ou colonnes avant la cellule J6 (donc la date du jour) dans l'onglet Données Boursières, la macro n'aurait plus fonctionné. Maintenant, plus de problème. La date est directe en VBA et la correspondance aussi.
Voili voilà.
@+ Lolote83
Merci beaucoup top, maintenant j'aurai l'historique de la bourse sur Excel. 👍
 

Etoto

XLDnaute Impliqué
Re bonjour ETOTO,
Voici le code modifié de façon à ne plus être obligé de faire appel à la cellule J6 (Onglet Données Boursière) pour le calcul de la ligne.
VB:
Sub ReupDonnées()
    xPlage1 = Range("Données_boursières[Dernier Prix]")
    xPlage2 = Range("Tableau3[Dernier Prix]")
    On Error GoTo Erreur
    'xLig = [J6] + 2
    xLig = Application.Match(CLng(Date), Range("Tableau2[Nom]"), 0) + 2
    With Sheets("Historique Bourse")
        For F = 1 To 24
            .Cells(xLig, 2 + F) = xPlage1(F, 1)
        Next F
        For F = 1 To 19
            .Cells(xLig, 26 + F) = xPlage2(F, 1)
        Next F
    End With
    Exit Sub
Erreur:
    MsgBox "Date du jour n'est pas dans le tableau", vbCritical, "ERREUR"
End Sub
Du coup, tu peux maintenant lancer la macro directement depuis l'onglet Historique Bourse
Pour cela, j'ai posté une demande sur le forum que tu peux retrouver ici. Merci à Patrick Toulon pour la solution
https://www.excel-downloads.com/threads/fonction-equiv-en-vba-bizare.20057647/

Bonne journée
@+ Lolote83
Hello, ton code est super c'est parfait,. Désormais j'essaie de le comprendre, à quoi sert le 2 et le 26 pour les

.Cells(xLig, 2 + F) = xPlage1(F, 1)
.Cells(xLig, 26 + F) = xPlage2(F, 1)

??

Merci d'avance.
 
Dernière édition:

Lolote83

XLDnaute Accro
Bonjour ETOTO,
Dans la ligne .Cells(xLig, 2 + F) = xPlage1(F, 1)
La fonction Cells(Rows,Column) ou en français Cells(Ligne,Colonne)
Exemple :
- Si on a : Cells(1,1) = 1ère ligne, 1ère colonne soit la cellule A1
- Si on a : Cells(4,2) = 4ème ligne, 2ème colonne soit la cellule B4
- Si on a : Cells(18,7) = 18ème ligne, 7ème colonne soit la cellule G18 etc etc etc etc

Donc sur ce principe, ton premier tableau dans l'onglet Historique (B à Z), commençant en colonne B mais les données devant être copiées à partie de la colonne C on a :
.Cells(xLig, 2 + F) avec une variable xLig qui détermine donc la ligne et 2 + F avec la variable F qui varie de 1 à 24 pour les colonnes.
F=1 donc 2+F=3 donc colonne 3 donc colonne C
F=2 donc 2+F=4 donc colonne 4 donc colonne D
F=3 donc 2+F=5 donc colonne 5 donc colonne E etc etc etc

Puis, tu as rajouté dans ce tableau les colonnes de AA à AT, les premières données à copiées seront donc à partir de la colonne Z (26) + 1
Donc
F=1 donc 26+F=27 donc colonne 27 donc colonne AA
F=2 donc 26+F=28 donc colonne 28 donc colonne AB
F=3 donc 26+F=29 donc colonne 29 donc colonne AC etc etc etc

Voili voilà, en espérant que cela aura eclairé ta lanterne.
@+ Lolote83
 

Etoto

XLDnaute Impliqué
Bonjour ETOTO,
Dans la ligne .Cells(xLig, 2 + F) = xPlage1(F, 1)
La fonction Cells(Rows,Column) ou en français Cells(Ligne,Colonne)
Exemple :
- Si on a : Cells(1,1) = 1ère ligne, 1ère colonne soit la cellule A1
- Si on a : Cells(4,2) = 4ème ligne, 2ème colonne soit la cellule B4
- Si on a : Cells(18,7) = 18ème ligne, 7ème colonne soit la cellule G18 etc etc etc etc

Donc sur ce principe, ton premier tableau dans l'onglet Historique (B à Z), commençant en colonne B mais les données devant être copiées à partie de la colonne C on a :
.Cells(xLig, 2 + F) avec une variable xLig qui détermine donc la ligne et 2 + F avec la variable F qui varie de 1 à 24 pour les colonnes.
F=1 donc 2+F=3 donc colonne 3 donc colonne C
F=2 donc 2+F=4 donc colonne 4 donc colonne D
F=3 donc 2+F=5 donc colonne 5 donc colonne E etc etc etc

Puis, tu as rajouté dans ce tableau les colonnes de AA à AT, les premières données à copiées seront donc à partir de la colonne Z (26) + 1
Donc
F=1 donc 26+F=27 donc colonne 27 donc colonne AA
F=2 donc 26+F=28 donc colonne 28 donc colonne AB
F=3 donc 26+F=29 donc colonne 29 donc colonne AC etc etc etc

Voili voilà, en espérant que cela aura eclairé ta lanterne.
@+ Lolote83
Ok merci, j'aime comprendre les codes et tu me l'as bien expliqué.
 

Etoto

XLDnaute Impliqué
Re-Bonjour,

Je m'excuse mais ta macro ne fonctionne pas pour le jour d'aujourd'hui (10.06.21). Que ce soit sur le fichier que tu m'as donné dans cette discussion ou celui qui est en pièce jointe.

Merci d'avance
 

Pièces jointes

  • données boursières.xlsm
    41 KB · Affichages: 0

Discussions similaires

Statistiques des forums

Discussions
288 632
Messages
1 893 633
Membres
169 984
dernier inscrit
mdemrs
Haut Bas