Bonjour le forum,
Dans un premier, je voudrais remercier tous les gens qui prennent gentiment le temps de répondre aux néophytes que que nous sommes! Grace à vous, j'ai pu apprendre à mieux comprendre ce langage mais là j'ai tout un soucis et je n'y arrive pas.
Voilà, j'utilise la fonction countifs qui doit se répéter sur 39 colonnes et sur plus de 1000 lignes. J'ai réussi à créer un code qui fonctionne mais il est extrêmement long à exécuter et je n'ai même pas encore fini la programmation de la macro!
J'ai fait des recherches afin de trouver comment optimiser le temps d'exécution d'une macro et j'ai compris qu'en créant un tableau dans lequel on stock les données, la recherche était beaucoup plus rapide. J'ai donc réussi à créer mon tableau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 'Pour chaque cellule de la colonne G à AM, Compte le nombre code de paiement 'Défini la colonne dans une variable i = 7 Do While i <= 39 Set c = Sheets("Exportation").Range("AQ2:A" & DernLigne).Find(Range(Split(Columns(i).Address(ColumnAbsolute:=False), ":")(1) & 1).Value, LookIn:=xlValues) If Not c Is Nothing Then For Each cell In Range(Split(Columns(i).Address(ColumnAbsolute:=False), ":")(1) & "2:" & Split(Columns(i).Address(ColumnAbsolute:=False), ":")(1) & DernLigne) MaValeur = Range("A" & cell.Row).Value Range(Split(Columns(i).Address(ColumnAbsolute:=False), ":")(1) & cell.Row).Value = WorksheetFunction.CountIfs(Sheets("Exportation").Columns("A"), MaValeur, Sheets("Exportation").Columns("AQ"), Range(Split(Columns(i).Address(ColumnAbsolute:=False), ":")(1) & "1")) Next End If i = i + 1 Loop
mais ensuite, je ne sais pas comment faire ma recherche. J'utilise encore mon "for each cell" et je pense que ma nouvelle création prend encore plus de temps que l'ancienne!
Si quelqu'un avait la gentillesse de m'expliquer comment faire une recherche efficace dans mon tableau cela serait grandement apprécié.
Je joints mon fichier pour plus de compréhension.
En gros il y a des dates, des routes et des courses. Je concatène le tout et ensuite je supprime les doublons. Je colle les valeurs sans les doublons dans une autres feuilles dans lequel tous les codes de paiement possible sont inscrit dans les colonnes. La macro doit compter le nombre de code de paiement pour chaque ligne (soit : Date/route/course)
Un immense merci!
Partager