Accélérer l’exécution d'une macro

Bonjour,

J'ai créer un fichier excel afin de rechercher les détails de contrats parmi + de 150000 clients. Je dois transmettre ces renseignement par téléphone, je dois donc être le plus rapide possible.

Voici mon problème :

Feuil 1 (Data) = Base de donné (Numéro client, nom, prénom, etc..)

Feuil 2 (NIA) = Tableau de recherche par nom+prénom via une rechercheV

Tableau de recherche par numéro client (nia) dans le cas de contrat sous le même numéro client (famille, groupe, etc)

J'applique la macro suivante sur la Feuil 2 pour la recherche par numéro client :

Sub RechercheParNumeroV3()

Range("B20:B60000").Select

Selection.ClearContents

Range("A32").Select

Sheets("Data").Activate

Range("Tableau1").Select

nbl = Selection.Rows.Count + 1

numLignes = 20

With ActiveSheet

For i = 1 To nbl

If Range("B" & i) = Sheets("NIA").Range("B2") Then

With Sheets("NIA")

.Cells(numLignes, 2).Value = Sheets("Data").Range("A" & i)

.Cells(numLignes + 1, 2).Value = Sheets("Data").Range("Q" & i)

.Cells(numLignes + 2, 2).Value = Sheets("Data").Range("P" & i)

.Cells(numLignes + 2, 2).NumberFormat = "m/d/yyyy"

.Cells(numLignes + 3, 2).Value = Calculage(Sheets("Data").Range("P" & i), Now())

.Cells(numLignes + 4, 2).Value = Sheets("Data").Range("I" & i)

.Cells(numLignes + 5, 2).Value = Sheets("Data").Range("J" & i)

.Cells(numLignes + 6, 2).Value = Sheets("Data").Range("K" & i)

.Cells(numLignes + 7, 2).Value = Sheets("Data").Range("L" & i)

.Cells(numLignes + 8, 2).Value = Sheets("Data").Range("E" & i)

.Cells(numLignes + 9, 2).Value = Sheets("Data").Range("F" & i)

.Cells(numLignes + 10, 2).Value = Sheets("Data").Range("G" & i)

.Cells(numLignes, 3).Value = Sheets("Data").Range("AH" & i)

.Cells(numLignes + 1, 3).Value = Sheets("Data").Range("AG" & i)

.Cells(numLignes + 2, 3).Value = Sheets("Data").Range("AI" & i)

.Cells(numLignes + 4, 3).Value = Sheets("Data").Range("AO" & i)

.Cells(numLignes + 6, 3).Value = Sheets("Data").Range("AN" & i)

.Cells(numLignes + 8, 3).Value = Sheets("Data").Range("AL" & i)

.Cells(numLignes + 10, 3).Value = Sheets("Data").Range("AK" & i)

.Cells(numLignes, 4).Value = Sheets("Data").Range("AB" & i)

.Cells(numLignes + 1, 4).Value = Sheets("Data").Range("AA" & i)

.Cells(numLignes + 2, 4).Value = Sheets("Data").Range("AC" & i)

.Cells(numLignes + 4, 4).Value = Sheets("Data").Range("AE" & i)

.Cells(numLignes, 5).Value = Sheets("Data").Range("T" & i)

.Cells(numLignes + 1, 5).Value = Sheets("Data").Range("S" & i)

.Cells(numLignes + 2, 5).Value = Sheets("Data").Range("U" & i)

.Cells(numLignes + 4, 5).Value = Sheets("Data").Range("X" & i)

.Cells(numLignes + 6, 5).Value = Sheets("Data").Range("W" & i)

.Cells(numLignes + 8, 5).Value = Sheets("Data").Range("Y" & i)

.Cells(numLignes, 6).Value = Sheets("Data").Range("BH" & i)

.Cells(numLignes + 2, 6).Value = Sheets("Data").Range("AQ" & i)

.Cells(numLignes + 4, 6).Value = Sheets("Data").Range("AR" & i)

.Cells(numLignes + 6, 6).Value = Sheets("Data").Range("AS" & i)

.Cells(numLignes + 8, 6).Value = Sheets("Data").Range("AT" & i)

End With

numLignes = numLignes + 13

End If

Next i

End With

Sheets("NIA").Activate

If IsEmpty(Range("B20")) Then

MsgBox "Aucun client ne correspond à la recherche."

End If

End Sub

Lorsque je lance cette macro elle n'en fini pas, après un certain temps je fini par appuyer sur Echap pour stopper l’exécution et les résultats s'affiche entièrement ou en partie si je n'ai pas attendu assez longtemps...

Avez-vous des suggestions afin de m'aider à faire fonctionner cette macro normalement et rapidement svp

Bonjour

Peut-être en passant par des variables "Tableau" ?

Mais sans fichier, je ne m'y risquerai pas.

Bye !

Bonjour,

Je mettrai bien le fichier à votre disposition mais, même une fois les colonnes et infos supprimées, le fichier pèse 4.88Mo..

Ne sachant pas comment vous le communiquer, j'ai copier la macro.

Cdt,

Bonjour

Essaie en passant par http://www.cjoint.com : tu auras un lien qu'il te suffira de coller dans ton prochain message.

Bye !

Re-bonjour,

Voici le lien https://www.cjoint.com/c/GGkmWe5iPpK

Merci pour le tuyau

Ton tableau Data est en effet énorme, avec ses 15000 lignes.

Mais il est entièrement vide.

Il n'y a même pas les titres des colonnes qui ont été remplacés par "Colonne1", Colonne2" etc...

Difficile de s'y retrouver dans ces conditions.

Désolé.

Bye !

Bonjour,

Problème résolu !!

Je ne sais pas pourquoi mais le problème venait de la Feuil Data, en copiant les informations par dessus cela faisait planter le tableau et donc la macro.

Je vous remercie pour votre assistance.

Rechercher des sujets similaires à "accelerer execution macro"