Rechercher des données dans un autre classeur excell

Résolu
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004
- 11 août 2004 à 14:53
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
- 12 août 2004 à 15:15
Bonjour, heum...j ai un gros probleme...bon allez je me jette a l eau.

J'aimerais pouvoir rechercher une donnée (un N° de serie) dans un autre classeur Excel dans une colonne bien precise ("A:A")

je rentre le N° de serie a chercher grace a une inputbox et je fait ouvrir le classeur. le reste j y arrive pas et ca fait 2 jours que je me casse la tete dessus. enfin si quelqu'un peut m aoder je lui en serait gré.

autre chose apres avoir trouver la ligne du N° de serie, est il possible de selectioner une cellule d une autre colonne de cette ligne (je sais c'est pas tres comprehensible). un pti exemple pour me faire comprendre: disons ke la donnee recherche se trouve a la cellule A8 mais en fait cela n est pas important vu que je veux importer les donne de la colonne E (E8 meme ici) donc voila

Je vous remercie d avance.

24 réponses

ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 14:02
Essayes :

dim ligne as integer
Application.Worksheets("sheet1").Activate
Range("a1").Activate
While ActiveCell.Row < Cells(65536, 1).End(xlUp).Row + 1
If ActiveCell.Value = partnumber Then
research = ActiveCell.adress
ligne=activecell.row
Cells(65536, 1).offset(1,0).activate
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend

price =range(research).offset(0,4).Value

A.
3
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 14:39
Vi, chui bete

Je me suis pas relu:
Cells(65536, 1).end(xlup).Offset(1, 0).Activate

A.
3
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 15:15
De rien.

Valides les réponses que ca puisse servir a quelqu'un d'autre !

Bon courage ^^
A.
3
nicosne
Messages postés
37
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
10 mai 2005

11 août 2004 à 16:42
pour moi tu fait un index, tu place en A2 par ex :

=EQUIV(A1;titre de ton classeur et de ta feuille!A:A;0)

A1 est l'emplacement ou tu met la valeur recherché dans ta feuille.
A:A veux dire que tu fais la recherche dans la colonne A du feuillet qui est indiqué juste avant.

Ensuite dans les cases que tu veux remplir avec les infos de ton autre classeur tu develope cette formule :

=SI(ESTNA(INDEX(titre de ton classeur et de ta feuille!A:A;resultat!$A2));"";INDEX(titre de ton classeur et de ta feuille!A:A;resultat!$A2))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicosne
Messages postés
37
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
10 mai 2005

11 août 2004 à 16:42
pour moi tu fait un index, tu place en A2 par ex :

=EQUIV(A1;titre de ton classeur et de ta feuille!A:A;0)

A1 est l'emplacement ou tu met la valeur recherché dans ta feuille.
A:A veux dire que tu fais la recherche dans la colonne A du feuillet qui est indiqué juste avant.

Ensuite dans les cases que tu veux remplir avec les infos de ton autre classeur tu develope cette formule :

=SI(ESTNA(INDEX(titre de ton classeur et de ta feuille!A:A;resultat!$A2));"";INDEX(titre de ton classeur et de ta feuille!A:A;resultat!$A2))
0
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
11 août 2004 à 17:40
Si tu arrives à ouvrir le workbook alors tu n'as plus qu'a faire

Application.worksheets("tafeuille").Activate
numdeserie=range("a8").value

pour changer de colonne utilises la fonction offset(0,nbdecolonnes)

A.
0
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

11 août 2004 à 23:15
Merci shadow mais en fait je dois rechercher le numero de serie dans la colonne A
merci quand meme
0
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 09:49
Dans ce cas la tu appelles une fonction qui sera

Private sub taFonction(taCondition as cequetuveux) as range
application.worksheets("tafeuille").activate
range("a1").activate
while activecell.row < cells(65536,1).end(xlup).row +1
if activecell.value=taCondition then
tafonction=activecell.range(la je suis pas tout a fait sur mais je crois que c'est ca)
exit sub
else
activecell.offset(1,0).activate
end if
wend
end sub

Il faut aussi rajouter un test au moment de faire le cells pour s'assurer que la ligne 65536 est pas utilisée, mais bon, en général, y'a peu de chances

A.
0
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

12 août 2004 à 11:14
ok merci bcp pour ton aide shadow, la recherche s effectue tres bien, le seul probleme que je n comprend pas est que au moment de changer de colonne, excel freeze un bon coup et obliger de quitter en ferment excel a la dure
0
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 11:19
postes ton code

A.
0
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

12 août 2004 à 11:51
'prise du partnumber et ouverture du fichier
partnumber = InputBox("Part number", "Give a part number")
Workbooks.Open Filename:="X:\Administration\Users\Jean-Paul\Spares Price Lists\2004\Changement prix au 01-01-04.xls"
Application.Worksheets("sheet1").Activate

'recherche
Application.Worksheets("sheet1").Activate
Range("a1").Activate
While ActiveCell.Row < Cells(65536, 1).End(xlUp).Row + 1
If ActiveCell.Value = partnumber Then
research = ActiveCell
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend

'changement de colonne

ActiveCell.Offset(0, 4).Activate '(c est ici que excel freeze je pense bien)

price = ActiveCell.Value
Workbook.Open classeur
'retrouver le partumber
Application.Worksheets("sheet1").Activate
Range("b1").Activate
While ActiveCell.Row < Cells(65536, 1).End(xlUp).Row + 1
If ActiveCell.Value = partnumber Then
retrouve = ActiveCell

Else
ActiveCell.Offset(1, 0).Activate
End If
Wend
ActiveCell.Offset(0, 12).Activate

' exportation de données
ActiveCell.Value = price

end sub
0
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 12:06
classeur est un deuxième workbook?

T'as pas besoin de faire un activate pour récupérer la valeur

fais simplement
price =activecell.offset(0,4).value

D'autre part, je pense que ton retrouve=activecell est faux, il te faut un activecell.range si tu veux son adresse

Pour affecter le prix tu peux faire un range(retrouve).offset(0,12).value=price

(si jai bien compris)

A.
0
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

12 août 2004 à 13:26
oui classeur est en fait le workbook d ou on lance la macro

et en fait serai t il possible de ouvrir la sheet2 du workbook
sans mettre le nom exacte vu que cela change a chaque workbook (ce sont les numero de clients vu que c'est pour une entreprise que je fais ca)

je te remercie de ton aide precieuse.
0
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

12 août 2004 à 13:33
mmmh lorsque je met
retrouve = ActiveCell.Range
il me met une erreur: error 449 argument not optional
0
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 13:34
application.worksheets(2).activate je crois
ou peut etre application.worksheet(2).activate ?

Faut tester, mais un des deux doit marcher ^^

A.
0
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 13:35
Effectivement.

Essayes avec retrouve=activecell.adress
0
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

12 août 2004 à 13:53
ok je n ai plus aucune erreur dans le code mais ai toujours excel qui se plante méchament juste apres avoir trouver le partnumber ds la premiere recherche. ca se passe a cette endroit du code:

'recherche
Application.Worksheets("sheet1").Activate
Range("a1").Activate
While ActiveCell.Row < Cells(65536, 1).End(xlUp).Row + 1
If ActiveCell.Value = partnumber Then
research = ActiveCell
Else
ActiveCell.Offset(1, 0).Activate
End If
Wend

'changement de colonne (EXCEL FOIRE A PARTIR D ICI)
price = ActiveCell.Offset(0, 4).Value
Workbook.Open classeur
0
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

12 août 2004 à 14:24
error '438': Object doesn t support this property or method

a cette ligne:
research = ActiveCell.adress
0
ShadowWisp
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
12 août 2004 à 14:31
ben corriges la faute de frappe lol
activecell.address
0
SamaiwaX
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

12 août 2004 à 14:37
lol le pire c'est que j ai fait cette meme faute de frappe plus bas...
erf encore une erreur:

error 1004: Application defined or object defined error

Cells(65536, 1).Offset(1, 0).Activate
0