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 :
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 :
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.
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...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
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.