Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu] Température SQL supprimer des données rapidement

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

MJ13

XLDnaute Barbatruc
Bonjour à tous

J'ai des courbes de températures qui se créent à partir de requête SQL. Mon pas de scan est de 5 minutes. Donc si je veux faire une courbe avec plus de 111 jours (288 *111 = 31968), c'est impossible avec Excel qui n'affiche que 32000 points maximum.

Comment en VBA, à partir d'un tableau puis-je rapidement supprimer 11 points tous les 12 points pour avoir un point par heure (voir fichier) ?

Merci d'avance 🙂.
 

Pièces jointes

Dernière édition:
Re : Température SQL supprimer des données rapidement

Salut Michel,

Je suppose que tu lances ta requête toutes les 5 mn via un timer ?

Si oui, au premier scan, mémoriser le nombre de valeurs de ta liste

Au 2ème scan tu compte le nombre de valeurs si > à celle mémorisée + 11 alors tu supprimes les 11 premières

A+
 
Re : Température SQL supprimer des données rapidement

Bonjour Bruno, Philippe.

Merci pour vos réponses 🙂.

En fait, j'ai des fichiers txt (1 par capteur de 19 Mo pour 4 ans de mesures). Je gère l'extraction en SQL sur le min et le max sur la date de début et date de fin.

Le problème avec ton fichier Philippe, c'est que si je prend, une longue période de 2 ans par exemple avec plus de 200 000 données, c'est long (voire très long 😱).

Sinon je pensais plus avec des tableaux (genre scripting dictionnary ou autre), mais la c'est pas trop mon fort 😱.
 
Re : Température SQL supprimer des données rapidement

Bonsoir,

Dans le fichier joint, 2 solutions, selon que tu n'as qu'une colonne de données, ou plusieurs...

Mais le filtre élaboré semble quand même plus rapide qu'un Dictionary...

Les codes :

Code:
Sub script()
Dim Cel As Range
Dim Tablo As Object
t = Timer
Set Tablo = CreateObject("Scripting.Dictionary")
For Each Cel In Range("A2", Cells(Rows.Count, 1).End(xlUp))
    If (Cel.Row + 10) Mod 12 = 0 Then Tablo(Format(Cel.Value, "mm/dd/yy hh:mm")) = Cel.Offset(, 1)
Next Cel
With Sheets("scripting")
    .Range("A2").Resize(Tablo.Count) = Application.Transpose(Tablo.Keys)
    .Range("B2").Resize(Tablo.Count) = Application.Transpose(Tablo.Items)
End With
MsgBox Timer - t
End Sub

et le second :

Code:
Sub Filtre_elabore()
Dim Plg As Range
Dim DerLig As Long, DerCol As Long
t = Timer
With Sheets("base")
    If [A1] = "" Then [A1] = "Date"
    DerLig = Cells(Rows.Count, 1).End(xlUp).Row
    DerCol = Cells(1, Columns.Count).End(xlToLeft).Column
    Set Plg = Range("A1", Cells(DerLig, DerCol))
    .Range("H2").FormulaR1C1 = "=MOD(ROW(RC[-7])+10,12)=0"
    Sheets("filtre_elabore").Cells.Clear
    Plg.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("H1:H2"), _
        CopyToRange:=Sheets("filtre_elabore").Range("A1:E1"), Unique:=False
    .Range("H2").Clear
End With
MsgBox Timer - t
End Sub

sans oublier le fichier de test...

Bonne soirée
 

Pièces jointes

Re : Température SQL supprimer des données rapidement

Re,
Le problème avec ton fichier Philippe, c'est que si je prend, une longue période de 2 ans par exemple avec plus de 200 000 données, c'est long (voire très long 😱).
Je confirme, 5.000 lignes supprimées par minute

prévision pour 200.000 lignes ---> 40 minutes

revoir ma réponse au post #2

à+
Philippe
 
Re : Température SQL supprimer des données rapidement

Re-,

Avec mes codes :

Pour 54 000 lignes de données

Avec le Dictionary (donc 1 colonne de données) : 0.32 seconde pour garder 4500 lignes

Avec le Filtre élaboré : 0.13 seconde pour garder les 4 colonnes de données (et bien sûr les 4500 lignes.....)

Bonne soirée
 
Re : Température SQL supprimer des données rapidement

Re , Bonjour Cousin Hub

Hubert: Merci beaucoup 🙂, c'est tout à fait ce qu'il me fallait (0.6 seconde pour 192000 lignes).

En plus 2 solutions que j'affectionne bien. Que demande le peuple 😱.


Philippe:

je vais peut-être dire une bêtise, mais si ton pas est d'une heure cela t"évitera de supprimer 11/12 données
Le problème est que si je met 1 heure pour mes scans, comment faire pour savoir ce qui s'est passé entre 2 heures 😱?

Mon but est que je peux avoir des demandes courtes pour faire des graphiques avec des cycles frigorifiques par exemple (je pourrais déscendre à la minute) et des cycles plus longs.

Un des autres buts est d'avoir qu'un fichier de données et ensuite c'est Excel qui calculera en fonction du nombre de données par heures ou par jour.

Enfin, cela pourra être utilisé pour d'autes types de données comme des données météo, des mesures rapides...

Bonne journée ou soirée selon le cas 🙂.
 
Dernière édition:
- 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

B
Réponses
4
Affichages
884
Balek69
B
L
Réponses
5
Affichages
3 K
D
Réponses
8
Affichages
3 K
daviddu60
D
D
Réponses
4
Affichages
1 K
D
X
Réponses
2
Affichages
4 K
X
S
Réponses
2
Affichages
3 K
super_newbie_pro
S
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…