[VBA Excel] Rechercher des données
netman44
Messages postés
59
Date d'inscription
Statut
Membre
Dernière intervention
-
netman44 Messages postés 59 Date d'inscription Statut Membre Dernière intervention -
netman44 Messages postés 59 Date d'inscription Statut Membre Dernière intervention -
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
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:
- [VBA Excel] Rechercher des données
- Trier des données excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Rechercher ou entrer l'adresse - Guide
- Déplacer colonne excel - Guide
3 réponses
Je pourrais peut être vous aider à ne pas parcourir les 3000 lignes.
Pour cela je dois consulter mes programmes. Veuillez patienter.
Pour cela je dois consulter mes programmes. Veuillez patienter.