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

  • Initiateur de la discussion Initiateur de la discussion Etoto
  • 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 !

Etoto

XLDnaute Barbatruc
Supporter XLD
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

Solution
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...
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
 
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.
 
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
 
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. 👍
 
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:
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
 
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é.
 
- 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

Retour