Rechercher des données dans un autre classeur excell [Résolu]

Signaler
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004
-
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
-
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

Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
Vi, chui bete

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

A.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
De rien.

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

Bon courage ^^
A.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

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

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))
Messages postés
37
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
10 mai 2005

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))
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
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.
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

Merci shadow mais en fait je dois rechercher le numero de serie dans la colonne A
merci quand meme
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
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.
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

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
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
postes ton code

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

'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
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
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.
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

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.
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

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

Faut tester, mais un des deux doit marcher ^^

A.
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
Effectivement.

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

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
Messages postés
19
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
18 août 2004

error '438': Object doesn t support this property or method

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

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