Créer une table historique
Bonjour à tous,
Je cherche actuellement à historiser les données tous les jours provenant d'une requête MS Query quotidienne.
Ma requête Query se lance à partir du planificateur de tâches tous les soirs et donc se modifie tous les jours.
Comment peut-on historiser les résultats de chaque requête dans un seul fichier Excel du type : colonne 1 = Date; colonne 2 = Valeur A; colonne 3 = Valeur B ;.... ?
Merci pour votre aide
Bonjour tifflir67 et
Dans l'onglet "Développeur" qu'il faut afficher, tu as : Enregistrer une macro
Tu lances l'enregistrement, tu copies tes données de requête et tu les colles dans ton historique
Tu arrêtes l'enregistrement, cela te donne un code qu'il faudra remanier
Merci de nous joindre ton fichier après
A+
Ci-joint le code
Re,
Si ta requête SQL est lancer via macro, il suffit ensuite de lancer également le code suivant
Sub SauvegardeHisto()
Dim NLig As Long
'
' Copier la ligne de la feuille LENOM
Sheets("LENOM").Range("A2:F2").Copy
' Avec al feuille HISTO
With Sheets("HISTO")
' Récupérer la prochaine ligne vide
NLig = .Range("B" & Rows.Count).End(xlUp).Row + 1
' Coller les valeurs
.Range("B" & NLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
' Inscrire la date du jour en colonne A
.Range("A" & NLig).Value = Format(Now(), "m/d/yyyy")
End With
End Sub
A+
C'est parfait un très grand merci
J'ai encore un souci à quel niveau de la macro puis-je l'intégrer ?
Voici le code de la macro
Merci d'avance
Re,
Peut-être comme cela
Private Sub Workbook_Open()
If ActiveWorkbook.Name = "AUTO.xlsm" Then
Application.DisplayAlerts = False
BackgroundQuery = False
RefreshAll
' Historiser les données
Call SauvegardeHisto
' Sauvegarde les classeurs
ActiveWorkbook.SaveAs "C:\...\RAL" & "_" & Format(Now, "yyyy-mm-dd") & ".xlsm"
ActiveWorkbook.SaveAs "U:\...\RAL" & "_" & Format(Now, "yyyy-mm-dd") & ".xlsm"""
ActiveWorkbook.SaveAs "C:\...\JOUR.xlsm"
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim Nom_Fichier As String
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
'---------------------------------------------------------
'Exemple pour envoyer un classeur en pièce jointe
'Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
'If Nom_Fichier = "Faux" Then Exit Sub
'---------------------------------------------------------
'Ou bien entrer le path et nom du fichier autrement
Nom_Fichier = "C:\...\JOUR.xlsm"
If Nom_Fichier = "" Then Exit Sub
'---------------------------------------------------------
With oBjMail
.To = "...@mail.com;" ' le destinataire
.Subject = "En-Commande" ' l'objet du mail
.Body = "... " 'le corps du mail ..son contenu
.Send
Application.Wait (Now + TimeValue("0:05:30"))
End With
ObjOutlook.Quit
Set oBjMail = Nothing
Set ObjOutlook = Nothing
Application.DisplayAlerts = True
Application.Quit
End If
End Sub
Sub SauvegardeHisto()
Dim NLig As Long
'
' Copier la ligne de la feuille LENOM
Sheets("LENOM").Range("A2:F2").Copy
' Avec al feuille HISTO
With Sheets("HISTO")
' Récupérer la prochaine ligne vide
NLig = .Range("B" & Rows.Count).End(xlUp).Row + 1
' Coller les valeurs
.Range("B" & NLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
' Inscrire la date du jour en colonne A
.Range("A" & NLig).Value = Format(Now(), "m/d/yyyy")
End With
End Sub
A+