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

72macro.txt (525.00 Octets)

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

31macro.txt (1.44 Ko)

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+

Merci tout fonctionne

Re,

Ok nickel,

N'oublie pas d'activer [RESOLU]

Rechercher des sujets similaires à "creer table historique"