[VBA Excel] Rechercher des données

Fermé
netman44 Messages postés 59 Date d'inscription dimanche 9 avril 2006 Statut Membre Dernière intervention 29 janvier 2020 - 24 nov. 2006 à 10:29
netman44 Messages postés 59 Date d'inscription dimanche 9 avril 2006 Statut Membre Dernière intervention 29 janvier 2020 - 12 juin 2007 à 11:09
Bonjour,

J'ai deux tableaux Excel, le 1er d'environ 500 lignes (Destination) et le second d'environ 3 000 lignes (Source). A partir du tableau Destination, je souhaite aller chercher dans la Source les lignes correspondant à deux critères.
Par exemple si dans le tableau Destination j'ai le code site BAT1 et la date 15/11/2006, je souhaite aller chercher dans le tableau Source toutes les lignes correspondant à ces critères et faire la somme.
La solution que j'ai trouvée est la suivante mais elle ne me satisfait pas car le traitement est très long.

'Code de ma macro actuelle
Sub RechercheInfo
Application.Screenupdating = False
For i = 1 to 500
Sheets("Dest").Select
CodeSiteDest=Cells(i,5).Value
DateDest=Cells(i,6).Value
AggregDest=CodeSiteDest & DateDest
'Pour la première ligne lorsque i=1, AggregDest vaut "BAT115/11/2006".
For j = 1 to 3000
Sheets("Source").Select
CodeSiteSource = Cells(j,5).Value
DateSource = Cells(j,6).Value
AggregSource = CodeSiteSource & DateSource
'Les lignes pour lesquelles AggregSource vaut "BAT115/11/2006" sont les lignes 5, 251 et 368. Ce qui suit permet de trouver ces lignes et d'additionner la valeur de la colonne 7 dans la variable SommeSource.
If AggregSource = AggregDest Then
SommeSource = SommeSource + Cells(j,7).Value
End If
Next
'Une fois la variable SommeSource calculée, je vais la copier dans le tableau Destination.
Sheets("Dest").Select
Cells(i,7).Value=SommeSource
Next
Application.Screenupdating = True
End Sub

Je sais que le problème de lenteur vient du fait que pour chacune des 500 lignes du tableau Destination, la macro balaye les 3 000 lignes du tableau Source mais je ne vois pas comment faire autrement.
Je précise que je ne peux pas utiliser de tableaux croisés dynamiques pour faire cet exercice car mon application est destinée à des utilisateurs très peu avancés sous Excel.

Merci de votre aide.

Netman
A voir également:

3 réponses

ichoukry Messages postés 3 Date d'inscription vendredi 24 novembre 2006 Statut Membre Dernière intervention 25 novembre 2006 1
24 nov. 2006 à 11:56
Je pourrais peut être vous aider à ne pas parcourir les 3000 lignes.

Pour cela je dois consulter mes programmes. Veuillez patienter.
1
netman44 Messages postés 59 Date d'inscription dimanche 9 avril 2006 Statut Membre Dernière intervention 29 janvier 2020 1
4 déc. 2006 à 09:57
Bonjour,

Quelqu'un a-t-il une idée pour m'aider ?

Merci.

Netman
-2
netman44 Messages postés 59 Date d'inscription dimanche 9 avril 2006 Statut Membre Dernière intervention 29 janvier 2020 1
12 juin 2007 à 11:09
Je n'ai toujours pas eu de réponse sur ce problème.

Merci.

Netman
-2