recherchev et limite des 65536 lignes

Rigolax

XLDnaute Nouveau
Bonjour, je dois faire une recherchev sur une base de données de plus de 65 536 lignes (225 000 lignes et 2 colonnes, une de la référence d'un produit et l'autre du segment de cette référence).

La seule solution que j'ai trouvée pour l'instant c'est :
-couper en 4 fois 65000 lignes mon tableau de données,
-faire recherchev sur chacun des tableaux de données crées
-comme il n'y a pas de doublon, ensuite je récupère le seul où la recherchev donne qqch.

Seulement excel n'aime pas du tout, il me faut des heures pour faire tourner les formules, j'ai alors essayer de simplifier au maximum :
-je mets sur une colonne le résultat d'un recherchev sur le premier tableau de données (de 1 à 65 534)
-copier/coller valeurs de ces résultats
-puis sur une seconde colonne le résultat du recherchev du second tableau de données
-copier/coller valeurs
- idem pour le troisième et quatrième tableau.
J'ai donc soit 3 #N/A et la référence que je cherche sur une des 4 cellules crées, soit 4 fois #N/A si la référence souhaité n'es pas dans l'un des 4 tableaux de ma base données.

Ensuite la formule suivante :
=SI(ESTNA(B2);"";B2)&SI(ESTNA(C2);"";C2)&SI(ESTNA(D2);"";D2)&SI(ESTNA(E2);"";E2)
(évidemment B2 est le résultat de la recherchev dans le premier tableau, C2 le second etc)

Idem, c'est beaucoup trop lourd pour Excel, d'autant que j'ai à peu près 30 000 valeurs à rechercher et ce, 20 fois...


je me suis donc mis en quête de faire une macro. Je suis tout à fait débutant en la matière, j'ai fait donc la boucle suivante franchement artisanale, j'espère ne pas trop vous effrayer :) :


Sheets("macro").Activate
ref = ActiveCell
Cells.Select
Selection.Find(What:=ref, After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Select
seg = ActiveCell
Sheets("macro").Activate
Cells(i, 2).Select
ActiveCell = seg

Ca marche très bien sauf quand je cherche une valeur qui n'existe pas où ça bug...


Est-ce que qqn aurait une idée ?
Je pense qu'il suffit juste de faire une formule recherche dans la boucle de la macro, mais je n'y arrive pas !

J'espère que j'ai été assez clair...
Merci beaucoup pour votre aide.
 

Pièces jointes

  • modele3.zip
    10 KB · Affichages: 52
  • modele3.zip
    10 KB · Affichages: 62
  • modele3.zip
    10 KB · Affichages: 58

Spitnolan08

XLDnaute Barbatruc
Re : recherchev et limite des 65536 lignes

Re,

J'ai peut être compris...
Dans ce cas modifie ton code ainsi :
Code:
Dim CelCherch as range
Set CelCherch = Selection.Find(What:="362", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If CelCherch Is Nothing Then Exit Sub
Cordialement
 

Rigolax

XLDnaute Nouveau
Re : recherchev et limite des 65536 lignes

Ca marche !!!!

Merci beaucoup !



Voilà le code que j'ai finalement utilisé :
Code:
  For i = 2 To compteur + 1
    
    
    Cells(i, 1).Select
    ref = ActiveCell
    Sheets("tab ref").Activate
    Cells.Select
        Set CelCherch = Selection.Find(What:=ref, After:=ActiveCell, LookIn:=xlFormulas _
        , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
 
    If CelCherch Is Nothing Then
   seg = "XX"
   Else
       CelCherch.Select
       
       ActiveCell.Offset(0, 1).Select

    seg = ActiveCell
    End If
    Sheets("macro").Activate
    Cells(i, 2).Select
    ActiveCell = seg
    Application.CutCopyMode = False
    Next

Merci encore !
:D
 
C

Compte Supprimé 979

Guest
Re : recherchev et limite des 65536 lignes

Bonsoir,

Désolé de m'immiscer comme ça, mais pourquoi ne pas utiliser Access ou un autre SGBD gratuit !?

225000 lignes à traiter, y'en a qui aime perdre du temps sur Excel !

:D
 

Discussions similaires

Statistiques des forums

Discussions
312 973
Messages
2 094 059
Membres
105 933
dernier inscrit
asensio03