Macro dans un gros fichier

Bonjour, j’ai une macro qui fonctionne bien mais qui est lente. Ce fichier pourrait aller jusqu’à 15000 lignes. De plus, comme j’ajoute des lignes en-dessous, la macro ne semble pas partir de la cellule non vide mais plutôt d’en haut (ex. No client)… parce que j’ajoute des lignes, il n’y a que l’adresse courriel qui indiqué et la macro doit faire le reste. Alors, si la partie supérieure est complété, il n’aurais qu’à partir de la première cellule non vide.

Je n’ai pas mis le nombre total de lignes dans le fichier. Lorsque je l’exécute dans mon fichier, il tourne et tourne et cela prend un certain temps et qui est, à mon avis, beaucoup trop long parce que souvent, je ne sais plus si Excel va planter…
test macro.xlsm (136,0 Ko)

Merci beaucoup de votre aide.

Bonjour Cyrna000

Effectivement avec 2 boucles ça devait être l’enfer :scream:
Une seule suffit pour parcourir la bdProduits et on effectue un Find pour la ligne de l’adresse mail

Voici le fichier
Cyrna000_test macro.xlsm (145,6 Ko)

On pourrait peut-être l’optimiser en utilisant des variables tableau, mais ça tourne comme ça

@+

Bonjour

Le temps d’exécution pour les 1186 lignes de l’onglet « bdProduitsClients » et 760 lignes onglet « bdClients » est pour moi de 10 secondes
Si je multiplie par 10 le nombre de ligne à chaque onglet cela ferait :

10 secondes * 10 + 10 * 10 soit 200 secondes

Soit pour 10 000 lignes dans chaque onglet environ moins de 3 minutes

Ce n’est pas du tout rédhibitoire comme temps de traitement

J’ai rajouté des instructions pour faire démarrer ce traitement à partir de la première ligne qui colonne R onglet « bdProduitsClients » n’a pas de donnée

Ainsi pour chaque traitement ne pas recommencer à partir de la ligne 2 pour cet onglet

Testes et dis moi
test macro.xlsm (156,7 Ko)

En analysant tes boucles je me suis aperçu que chacune d’elle allait jusqu’à la dernière ligne même si onglet « bdProduitsClients » la mise à jour était réalisée donc inutilité de poursuivre celle de cet onglet
J’ai rajouté une ligne d’instruction pour en sortir dés que la ligne à alimenter avait les données à lui mettre
Gain de temps supplémentaire de 10 secondes à 5 secondes pour le même nombre de lignes à traiter pour les 2 onglets

Cette nouvelle version adaptée dans ce esprit avec l’évolution précédente intégrée

test macro.xlsm (157,2 Ko)

merci beaucoup de votre aide. Cependant, quand j’ajoute des lignes en-dessous, la macro ne fonctionne plus pour les cellules que j’ajoute.
test macro (1).xlsm (156,0 Ko)

J’aimerais ajouter un petit quelque chose à ma demande. Je compile des informations avec une autre macro, sauf quelle ne rempli pas automatiquement ces colonnes. Alors, j’aimerais ajouter cette macro à celle que j’ai déjà. Comme je compile des bons de commande un à un, je dois faire la macro à chaque fois que j’ajoute un bon de commande. Voilà

Bonjour Cyrna000

Avez-vous regardé ma proposition et si oui, qu’est-ce qui cloche :thinking:

A+

Il faudrait compléter avant les colonnes A et B (surtout la B) de ces lignes en jaune :

C’est indispensable pour le code de ta macro car il s’appuie sur celles-ci pour son fonctionnement

Une fois complétées tout fonctionne :

Réessaies ainsi et dis moi

« j’aimerais ajouter cette macro à celle que j’ai déjà »

Tu peux la rajouter à la fin de ta procédure soit en recopiant toutes les lignes (sans les lignes Sub Test() et End Sub) à la fin avant le End Sub soit en créant celle-ci à part en l’état (avec les lignes Sub Test() et End Sub) et de mettre avant le End Sub de celle que tu utilises la ligne suivante :

Run « Test »

si le nom de cette macro reste : Sub Test()

sinon

Run « le nom de la macro »

Attention la structure des données doit être à l’identique attribution des colonnes et des noms d’onglets si tu veux obtenir le même résultat

Si souci envoies moi l’ensemble avec quelques données non confidentielles

A ta disposition et doi moi des nouvelles

Je vous remercie beaucoup, elle fonctionne. 2 petites choses, elle est trop longue pour moi… je sais 45 secondes (je l’ai chronométré lol)… ce n’est pas long, mais quand j’en ai plusieurs à faire et que j’attends que la macro s’exécute… Je ne sais pas trop pourquoi elle est aussi lente…
2. Une autre chose ( tant qu’à y être lol), j’ai un numéro dans la bdClients (colonne C), qui lorsque la macro va l’a chercher, ne l’a copie pas correctement.
Encore une fois, je vous remercie beaucoup parce que je passe énormément de temps à essayer de la faire fonctionner et je n`y arrive pas.
test macro (4).xlsm (919,7 Ko)

Bonsoir
Je suis en déplacement actuellement
Je rentre mercredi
Dès jeudi je t apporterai une réponse
Un peu de patience donc

Bonjour

Ci-joint une nouvelle version
Sont traitement demande 5 secondes environ
Pour cela j’ai modifié son approche et complété sa structure de

Onglet « bdClients » colonne W le numéro de la ligne obtenu par formule sauf la première ligne 2 écrit en dur (ne pas oublier de les prolonger par copier/coller si plus de lignes)

Ajout d’un onglet « Correspondance » qui par formule fait le lien entre les adresse url et ces numéros de lignes

Les 2 premières colonnes sont reliées à l’onglet « bdClients » la troisième à l’onglet « bdProduitsClients » la quatrième affecte le numéro de la ligne de l’onglet « bdClients » à l’adresse url de la colonne précédente

Fais des tests et dis moi

J’ai mis en format nombre sans décimal la colonne R de l’onglet « bdProduitsClients » pour l’affichage correct des nombres de la colonne C de l’onglet « bdClients »

Ton fichier avec ces évolutions

Fais moi un retour

test macro4.xlsm (1,4 Mo)