Fractionner une base de données ?

Bonjour à tous,

J'ai un fichier de pointages horaires avec userform qui rame de plus en plus.

La base de données grossit trop vite, en 5 mois j'en suis rendu à pas loin de 10 000 lignes.

Pour un seul enregistrement, actuellement le temps d'éxécution est de 17 secs ...

Si j'efface ma base il est de près de 3 secs, ce qui est largement acceptable pour moi.

J'utilise des Application.Calculation = xlCalculationManual et des Application.ScreenUpdating = False qui ont bien accéléré (j'étais à 42 secs/enregistrement avant ça ).

Existe-t-il une solution pour "fractionner" la base, ou la compresser, la diviser ?

Mes données s'ajoutent en fin de tableau, y a t-il une soluce pour les ajouter en 1° ligne et est-ce que ça accélérerait le traitement ?

Merci d'avance pour vos pistes de réflexion

Bonjour,

Peux tu fournir ton fichier ou au moins un fichier représentatif et les codes VBA utilisés ?

Je pense qu'il est inutile de fractionner ta base de données, ça complique sa valorisation ensuite. Je suis curieux de voir comment un simple enregistrement de pointage peut mettre autant de temps à s'exécuter...

A mon avis, l'enregistrement sur une nouvelle ligne placée en premier sera plus chronophage que de le réaliser à la suite de tes données.

Enfin, 10000 lignes pour 5 mois, ce n'est pas grand choses. A ce rythme, tu peux encore travailler plus de 40 ans sur la même feuille !

Non, je n'ai pas de version que je peux mettre à disposition et adapter un exemple me prendrait trop de temps, désolé.

Et c'est une telle usine à gaz, je sais qu'il y a un gros travail à faire sur l'optimisation du code, voire tout réorganiser, mais j'y ai passé tellement d'heures que ça me fatigue d'avance...

Merci quand même pour ta réponse !

Je me doutais que c'était infaisable, sinon j'aurais trouvé des infos

Et je laisse tomber la piste de la première ligne

Pour le code qui écrit dans la DB, et c'est peut-être pas le plus rapide, j'ai ça

                        fp.ListObjects(1).ListRows.Add
                        dlt = fp.Range("C99999").End(xlUp).Row
                        fp.Range("C" & dlt) = CDate(Me.txtdate)
                        fp.Range("C" & dlt).NumberFormat = "dd/mm/yyyy;@"
                        fp.Range("F" & dlt) = memoire
                        fp.Range("D" & dlt) = Me.Controls("ListBox" & k).List(j, 0)
                        fp.Range("G" & dlt) = commentaire
                        fp.Range("H" & dlt).Value = Format(Me.txtdebut, "hh:mm")
                        fp.Range("I" & dlt).Value = Format(Me.txtfin, "hh:mm")
                        fp.Range("J" & dlt).Value = Format(Me.txtpause, "hh:mm")
                        fp.Range("AA" & dlt) = Format(Now, "dd.mm.yy hh:mm")
                        fp.Range("AB" & dlt) = NomUtilisateur
                        
Rechercher des sujets similaires à "fractionner base donnees"