Macro trop lente

Bonjour au Forum !

Ma demande se décompose en trois parties.

1) Dans un premier temps j’aimerais accélérer les macros « Sub Transfert_données() » et « Sub Stats_Rues() » je pense qu’elles doivent avoir un bug car le temps d’attente est extrêmement long.

2) Ensuite j’aimerai faire la même macro mais sans effacer les données déjà présentent dans « Débarras_STD ». Pour ce faire, je supprimerai « Range("A2:A" & Rows.Count & " , B2:B" & Rows.Count & " , C2:C" & Rows.Count & " , D2:D" & Rows.Count).ClearContents » . Par contre les données devraient venir se coller dans la feuille « Débarras_STD » à la suite des données déjà importées

3) Enfin, je rencontre un problème s’agissant de la colonne « H » Nbre d’objets car elle vient se coller sous un autre format que nombre et ne le considère pas comme un chiffre...

J’espère avoir été clair et que quelqu’un pourra m’aider et remercie d’avance toute personne qui essayera de la faire. Je joins le doc avec un lien car trop gros… D’ailleurs je ne comprends pourquoi il est si gros…

Je vous souhaite une excellente journée.

Fabrice

Bonjour

Un essai à tester. Te convient-il ?

https://www.cjoint.com/c/EKysmPDgKaz

Bye !

Bonjour gmb,

Merci pour ton aide, je suis impressionné par cette macro que j'ai de la peine à déchiffrer (je ne suis pas un grand macroteur) tous juste au début...

Les "tablo1, 2 et 3" correspondent à quoi?

Par contre la macro ne fonctionne pas, car les valeurs "BD_Débarras" ne sont pas extraites. Il n'y a qu'une ligne qui est transférée.

Malheureusement, je n'arrive pas à comprendre comment fonctionne la macro, ce qui me permettrait de la corriger...

Encore merci pour ton aide et à disposition pour tout complément d'info pour faire fonctionner la macro

Bonjour

FBF a écrit :

la macro ne fonctionne pas, car les valeurs "BD_Débarras" ne sont pas extraites.

Je viens de télécharger le fichier que je t’ai joint et l’ai refait tourner en cliquant sur le boubon figuré par un dessin de camion sur la feuille ‘’Débarras_STD’’

Cette feuille, au départ contient 867 lignes (avec les titres).

Quand la macro a fini son travail, elle en compte 1733. Soit 866 de plus. Et en vérifiant, ces nouvelles lignes sont bien celles copiées dans la feuille ‘’BD_Débarras’’

Je ne comprends donc pas que cela ne marche pas sur ton PC puisque cela marche sur le mien.

Et comme je n’ai touché qu’à cette macro, je ne comprends pas non plus, si elle ne marche pas, comment elle peut t’impressionner…

J’aimerais bien comprendre avant de regarder la macro ‘’Stats_Rues » » car, apparemment, on peut la faire tourner plus vite. Mais si cela ne marche pas sur ton PC, c’est inutile…

A te relire

Bye !

Re-Bonjour,

Si l'on efface les données présente dans le fichier "Débarras_STD" sauf pour les colonnes C et D qui sont des formules et non des données à importer seul une ligne apparaît.

Quoi qu'il en soit les données à importer correspondent aux 13523 lignes de "BD_Débarras" puisqu'elles répondent toutes à la condition : avoir rien de renseigner dans la colonne M (sauvage) de la base de données.

Il devrait y avoir donc 13523 lignes et les mois devrait être entre juin et octobre (pas uniquement juin)

En te remerciant encore pour ton aide.

Nouvelle version à tester.

https://www.cjoint.com/c/EKznKy12GIz

Bye !

Vraiment un grand merci, la macro fonctionne très bien

Je vais essayer de comprendre comment elle fonctionne... pour modifier le remplissage de la colonne C de la feuille "Statistique Rues".

Ce sont les nombres d’objets colonne N de la feuille "BD_Débarras" qui doivent être importés.

Vraiment MERCI pour cet excellent travail qui servira certainement à plein d'autres personnes

Je te souhaite une excellente journée.

Encore MERCI

Bonjour gmb,

Encore merci pour ton aide. La macro ci-après est assez longue. Pour qu'elle soit plus rapide devrais-je la faire compter à partir de G?

En modifiant comme ceci: tablo1 = .Range("G2:N" & .Range("G" & Rows.Count).End(xlUp).Row) ?

Macro Stats_Rues

Sub Stats_Rues()

Dim i As Integer, k As Integer, DerLig As Integer

Range("A2:D" & Range("A" & Rows.Count).End(xlUp)(2).Row).ClearContents

With Sheets("BD_Débarras")

tablo1 = .Range("G2:N" & .Range("A" & Rows.Count).End(xlUp).Row)

ReDim tablo2(3, 1)

k = 0

For i = 1 To UBound(tablo1, 1)

If tablo1(i, 7) = "" Then

ReDim Preserve tablo2(3, k + 1)

tablo2(0, k) = tablo1(i, 2)

tablo2(1, k) = tablo1(i, 1)

tablo2(2, k) = tablo1(i, 8)

k = k + 1

End If

Next i

End With

Range("A2").Resize(UBound(tablo2, 2), 3) = Application.Transpose(tablo2)

MsgBox "MàJ terminée", vbExclamation

Merci de ton aide

Bonjour

Je ne suis pas sûr qu’en prenant une colonne de plus pour définir le tablo1 (N au lieu de M) on accélère la macro.

En revanche, situ es sûr que le nombre de lignes ne dépassera pas 15000, tu peux écrire :

tablo1 = .Range("G2:M" & [A15000].End(xlUp).Row)

Sur mon PC, on passe ainsi de 51 secondes à 6 secondes.

Bye !

Re-Bonjour,

J'aurai maximum 40'000 lignes je vais essayer avec cela.

Merci encore pour ton aide.

Avec mes meilleurs messages!

Bonjour gmb,

Je te sollicite volontiers pour la suite...

J'attache en pièce jointe (ralentissement) le message qui s'affiche en bas de ma page Excel (si je ne touche rien à la macro que tu m'as faite pour "Statistique Rues". C'est comme si la macro tournait en boucle puis se terminait au bout d'une 20aine de relances...

Si jamais, en insérant: tablo1 = .Range("G2:M" & [A40000].End(xlUp).Row)

J’obtiens un code erreur:

Erreur d’exécution '9'

L'indice n'appartient pas à la sélection

Merci encore pour ton précieux soutien

FBF

ralentissement bug

Bonjour

Joins ton fichier : s'il sagit d'un bug, je dois pouvoir le reproduire pour le corriger.

Bye !

Désolé, je ne vois pas ce que je peux faire : sur mon PC, la macro marche et va jusqu'au bout mais... elle met plus de 8 mn.

Je pense que les ''relances'' dont tu parles sont des va et vient vers une mémoire provisoire car en fait, si on met des points d'arrêt, on voit que le plus long pour elle est l'écriture du résultat...

Je n'ai pas d'idée pour en sortir.

Mais il y a sur le forum beaucoup plus fort que moi. Crée un nouveau post en demandant pourquoi c'est si long et comment aller plus vite au résultat.

Bye !

https://www.cjoint.com/c/ELbqVKdtmLl

Merci pour ton aide! Grâce à toi j'ai déjà avancer sur mes stats 8)

Je vais suivre tes conseils

Rechercher des sujets similaires à "macro trop lente"