![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2007
Localisation: Prague
Version Excel : Excel XP (PC)
Messages: 3
|
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").ActivateCa 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. |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: décembre 2006
Version Excel : Excel 2003 (PC)
Messages: 2 267
|
Bonjour,
Comment fais tu pour avoir une valeur qui n'existe pas puisque la valeur que tu cherches est dans la page En tout cas c'est ce que ton code fait...Pas clair tout ça... Cordialement
__________________
Ne pas oublier d'effectuer une recherche dans les pages "questions-les-plus-frequentes-faq-et-didacticiels" avant de poser une question. La réponse s'y trouve bien souvent. |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: décembre 2006
Version Excel : Excel 2003 (PC)
Messages: 2 267
|
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
__________________
Ne pas oublier d'effectuer une recherche dans les pages "questions-les-plus-frequentes-faq-et-didacticiels" avant de poser une question. La réponse s'y trouve bien souvent. |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2007
Localisation: Prague
Version Excel : Excel XP (PC)
Messages: 3
|
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
![]() |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 2 572
|
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 ! ![]()
__________________
Cordi@lement. La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses. ![]() VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro ! Menu -> Outils -> Macro -> Nouvelle macro ![]() Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI Petite citation : C'est en XLDant que l'on devient XLDnaute Barbatruc ...
|
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: octobre 2007
Localisation: Prague
Version Excel : Excel XP (PC)
Messages: 3
|
En fait je n'ai normalement pas accès à Access sauf demande justifiée...
Mais de toutes façons, la macro si elle marche bien est tellement longue, que ça me semble justifier l'accès... ![]() |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| importation d'un fichier de plus de 65536 lignes | nico0007 | Forum Excel | 4 | 05/06/2007 15h50 |
| HELP ! Pb de requete avec + de 65536 lignes | hebustroll1 | Forum Excel | 1 | 05/01/2007 17h23 |
| Importation Accees de plus de 65536 lignes | Art | Forum Excel | 9 | 21/08/2006 21h58 |
| Plus de 65536 lignes dans une feuille ??? | Gillou | Forum Excel | 2 | 13/06/2005 14h24 |
| RESET de 65536 lignes BARRE | Christian | Forum Excel Downloads - Archives | 0 | 27/09/2002 16h45 |