Recherchev trop longue en temps de calcul.
Résolu/Fermé
HUGO BASS
Messages postés
20
Date d'inscription
dimanche 11 août 2013
Statut
Membre
Dernière intervention
18 septembre 2015
-
26 mars 2015 à 21:47
HUGO BASS Messages postés 20 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 18 septembre 2015 - 27 mars 2015 à 20:45
HUGO BASS Messages postés 20 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 18 septembre 2015 - 27 mars 2015 à 20:45
A voir également:
- Recherchev trop longue en temps de calcul.
- Blocage agriculteur carte en temps réel - Accueil - Transports & Cartes
- Calcul moyenne excel - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Combien de temps reste une story sur facebook - Guide
- Recherchev + somme plusieurs lignes ✓ - Forum Excel
4 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
Modifié par eriiic le 26/03/2015 à 22:50
Modifié par eriiic le 26/03/2015 à 22:50
Bonjour,
Tu as conscience que ça fait 927x1345 formules, soit 1 246 815 ?
Soit t'acheter un Cray One d'occasion, soit aborder ton problème différemment, soit t'acheter de la patience et avoir une machine à café en état de fonctionnement...
Vu que les fonctions feuille sont bien optimisées et qu'il faut une recherche par cellule, en vba ça risque d'être encore plus lent.
Et si tu ramènes toujours la colonne 2 pourquoi une plage si large (BASE!$C$3:$L$40352) ?
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Tu as conscience que ça fait 927x1345 formules, soit 1 246 815 ?
Soit t'acheter un Cray One d'occasion, soit aborder ton problème différemment, soit t'acheter de la patience et avoir une machine à café en état de fonctionnement...
Vu que les fonctions feuille sont bien optimisées et qu'il faut une recherche par cellule, en vba ça risque d'être encore plus lent.
Et si tu ramènes toujours la colonne 2 pourquoi une plage si large (BASE!$C$3:$L$40352) ?
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié par Mike-31 le 26/03/2015 à 22:53
Modifié par Mike-31 le 26/03/2015 à 22:53
Bonsoir,
colle ce bout de code dans les propriétés de ta feuille RECAP
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [A3]) Is Nothing Then
With Sheets("Feuil1")
.Range("B3").Value = WorksheetFunction.VLookup(.Range("A3").Value, [BASE], 2, False)
End With
End If
End Sub
lorsque tu saisiras ou changeras une donnée de la cellule A3, la donnée de la colonne 2 de ta base s'affichera en B3 voir si tu gagnes un peu de temps
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
colle ce bout de code dans les propriétés de ta feuille RECAP
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [A3]) Is Nothing Then
With Sheets("Feuil1")
.Range("B3").Value = WorksheetFunction.VLookup(.Range("A3").Value, [BASE], 2, False)
End With
End If
End Sub
lorsque tu saisiras ou changeras une donnée de la cellule A3, la donnée de la colonne 2 de ta base s'affichera en B3 voir si tu gagnes un peu de temps
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Boisgontierjacques
Messages postés
175
Date d'inscription
jeudi 19 septembre 2013
Statut
Membre
Dernière intervention
26 décembre 2018
64
26 mars 2015 à 23:46
26 mars 2015 à 23:46
Bonsoir,
http://boisgontierjacques.free.fr/pages_site/recherchev.htm#FonctionRechVM
Jacques Boisgontier
http://boisgontierjacques.free.fr/pages_site/recherchev.htm#FonctionRechVM
Jacques Boisgontier
Boisgontierjacques
Messages postés
175
Date d'inscription
jeudi 19 septembre 2013
Statut
Membre
Dernière intervention
26 décembre 2018
64
Modifié par Boisgontierjacques le 27/03/2015 à 16:59
Modifié par Boisgontierjacques le 27/03/2015 à 16:59
Bonjour,
Voir PJ
https://www.cjoint.com/c/ECBrhGtcbMV
Function RechvM(clé As Range, dt As Range, champ As Range, colResult)
Application.Volatile
Set d = CreateObject("Scripting.Dictionary")
a = champ.Value
b = clé.Value
c = dt.Value
For i = LBound(a) To UBound(a)
d(a(i, 1)) = a(i, colResult)
Next i
Dim temp()
ReDim temp(LBound(b) To UBound(b), 1 To UBound(c, 2))
For i = LBound(b) To UBound(b)
For k = 1 To UBound(c, 2)
tmp = b(i, 1) & CDbl(c(1, k))
temp(i, k) = d(tmp)
Next k
Next i
RechvM = temp
End Function
Sélectionner C4:D273
=rechvm(A4:A273;C3:D3;BASE;2)
valider avec maj+ctrl+entrée
Jacques Boisgontier
Voir PJ
https://www.cjoint.com/c/ECBrhGtcbMV
Function RechvM(clé As Range, dt As Range, champ As Range, colResult)
Application.Volatile
Set d = CreateObject("Scripting.Dictionary")
a = champ.Value
b = clé.Value
c = dt.Value
For i = LBound(a) To UBound(a)
d(a(i, 1)) = a(i, colResult)
Next i
Dim temp()
ReDim temp(LBound(b) To UBound(b), 1 To UBound(c, 2))
For i = LBound(b) To UBound(b)
For k = 1 To UBound(c, 2)
tmp = b(i, 1) & CDbl(c(1, k))
temp(i, k) = d(tmp)
Next k
Next i
RechvM = temp
End Function
Sélectionner C4:D273
=rechvm(A4:A273;C3:D3;BASE;2)
valider avec maj+ctrl+entrée
Jacques Boisgontier
HUGO BASS
Messages postés
20
Date d'inscription
dimanche 11 août 2013
Statut
Membre
Dernière intervention
18 septembre 2015
27 mars 2015 à 20:45
27 mars 2015 à 20:45
Bonjour Jacques,
Tout d'abord merci pour votre solution.
Il semblerait en première lecture rapide que cela réponde à mes attentes
Je fais les tests sur ma base complète ce week end.
Cordialement
Hugues
Tout d'abord merci pour votre solution.
Il semblerait en première lecture rapide que cela réponde à mes attentes
Je fais les tests sur ma base complète ce week end.
Cordialement
Hugues