OVH Cloud OVH Cloud

problème avec recherchev

10 réponses
Avatar
AfterBoy
Bonjour,

j'ai un dossier c:\test. Ce dossier contient 1 classeur excel nomm=E9s
classeur1.xls.
Ce classeur contient 2 colonnes :
A B
pomme 1
orange 2
banane 3
tomate 4
gruau 5
.=2E. .

Maintenant, j'ouvre excel et je me cr=E9e une feuille vierge. Je veux
maintenant aller chercher dans c:\test\classeur1 la valeur orange dans
la colonne A et une fois trouv=E9 je veux copier le contenu de la
cellule B correspondante dans mon nouveau classeur. Je gosse depuis 2
heures sur la syntaxe de la fonction recherchev. Est-ce que le
classeur1 doit etre ouvert pour que je puisse y faire une recherche et
aussi pour pouvoir copier-coller des cellules??.

j'ai essay=E9 pleins de trucs...

=3DRECHERCHEV("orange";'C:\test\[classeur1.xls]) mais jai toujours une
erreur qui me dit "nom non valide"
etc...
Existe t-il une autre fonction qui pourrait mieux faire ce dont j'ai
besoin.
Une fois ce probl=E8me r=E9gl=E9, je vais m'attaquer =E0 celui du copier
coller.
J'aimerais bien avoir le code en VB.

Merci de m'aider.

10 réponses

Avatar
lSteph
Bonjour,

Une fois ce problème réglé, je vais m'attaquer à celui du copier
coller.

J'aimerais bien avoir le code en VB. "vlookup"


Avant d'envisager de sauter des choses simples, un regard moins pressé:

Peut-être commencer par lire ce qui apparaît dans la fenêtre fx coller une
fonction lorsque tu choisis recherchev.
Il est aussi vivement conseillé de cliquer sur aide sur cette fonction.
RECHERCHEV(valeur_cherchée;table_matrice;no_index_col;valeur_proche)
ta proposition
=RECHERCHEV("orange";'C:test[classeur1.xls])


...je te laisse lire ce qu'est une matrice (voir exemple proposé dans
l'aide)
par rapport à ce que tu mets en second paramètre puis de constater que le
3ème est utile pour savoir ce que l'on veut ramener
et le quatrième quoique facultatif, essentiel sur la façon de le faire.

Existe t-il une autre fonction qui pourrait mieux faire ce dont j'ai
besoin.
Oui bien sûr par exemple intéresse toi aussi à Index et Equiv .

Cordialement.

lSteph



"AfterBoy" a écrit dans le message de news:

Bonjour,

j'ai un dossier c:test. Ce dossier contient 1 classeur excel nommés
classeur1.xls.
Ce classeur contient 2 colonnes :
A B
pomme 1
orange 2
banane 3
tomate 4
gruau 5
... .

Maintenant, j'ouvre excel et je me crée une feuille vierge. Je veux
maintenant aller chercher dans c:testclasseur1 la valeur orange dans
la colonne A et une fois trouvé je veux copier le contenu de la
cellule B correspondante dans mon nouveau classeur. Je gosse depuis 2
heures sur la syntaxe de la fonction recherchev. Est-ce que le
classeur1 doit etre ouvert pour que je puisse y faire une recherche et
aussi pour pouvoir copier-coller des cellules??.

j'ai essayé pleins de trucs...

=RECHERCHEV("orange";'C:test[classeur1.xls]) mais jai toujours une
erreur qui me dit "nom non valide"
etc...
Existe t-il une autre fonction qui pourrait mieux faire ce dont j'ai
besoin.
Une fois ce problème réglé, je vais m'attaquer à celui du copier
coller.
J'aimerais bien avoir le code en VB.

Merci de m'aider.

Avatar
JB
Bonsoir,

=RECHERCHEV("orange";champ;colonneRésultat;FAUX)

=RECHERCHEV("orange";[Classeur1.xls]Feuil4!$A$1:$B$6;2;FAUX)

Le classeur peut être fermé

Cordialement JB
Avatar
isabelle
bonjour,

=INDEX('C:test[classeur1 .xls]Feuil1'!$B:$B;EQUIV("orange";'C:test[classeur1 .xls]Feuil1'!$A:$A;0))

isabelle


Bonjour,

j'ai un dossier c:test. Ce dossier contient 1 classeur excel nommés
classeur1.xls.
Ce classeur contient 2 colonnes :
A B
pomme 1
orange 2
banane 3
tomate 4
gruau 5
... .

Maintenant, j'ouvre excel et je me crée une feuille vierge. Je veux
maintenant aller chercher dans c:testclasseur1 la valeur orange dans
la colonne A et une fois trouvé je veux copier le contenu de la
cellule B correspondante dans mon nouveau classeur. Je gosse depuis 2
heures sur la syntaxe de la fonction recherchev. Est-ce que le
classeur1 doit etre ouvert pour que je puisse y faire une recherche et
aussi pour pouvoir copier-coller des cellules??.

j'ai essayé pleins de trucs...

=RECHERCHEV("orange";'C:test[classeur1.xls]) mais jai toujours une
erreur qui me dit "nom non valide"
etc...
Existe t-il une autre fonction qui pourrait mieux faire ce dont j'ai
besoin.
Une fois ce problème réglé, je vais m'attaquer à celui du copier
coller.
J'aimerais bien avoir le code en VB.

Merci de m'aider.



Avatar
JB
Exemples sur Recherchev(),Index() et Equiv():
http://cjoint.com/?evwifgspPb

Pour le cas présenté, le + simple est d'utiliser la fonction
Recherchev().
On utilise Equiv()/Index lorsque la colonne de recherche n'est pas la
première colonne de la table.

JB
Avatar
lSteph
Certes mais dans la plupart des cas il est préférable de prendre
la "bonne habitude" d'utiliser Index Equiv que Recherchev.
De même qu'il vaut mieux apprendre à pêcher que de donner le poisson.

lSteph

"JB" a écrit dans le message de news:

Exemples sur Recherchev(),Index() et Equiv():
http://cjoint.com/?evwifgspPb

Pour le cas présenté, le + simple est d'utiliser la fonction
Recherchev().
On utilise Equiv()/Index lorsque la colonne de recherche n'est pas la
première colonne de la table.

JB
Avatar
AfterBoy
Merci ca répond a la première partir de mon problème. Une fois que
j'ai trouvé le texte cherché, je dois copier une partie de la feuille
a partir de cet cellule(la cellule trouvé) et coller ca dans le
document en cours.

Je récapitule, je dois ramener dans un document vierge des cellules
dans d'autres documents excel. Mais avant je dois trouver leur
emplacement car ca peut varier. Je dois dabord chercher il est ou
ensuite je dois copier à partir de la cellule trouvé le tableau qui
se trouve en dessous. donc :

donc la macro devra sélectionner (Range) (la cellule trouvé)+4
horizontalement, (la cellule trouvée)+4 verticalement la copier et
ramener le tout dans le document présent.

Avec rechercheV, je trouve la valeur mais ca ne me donne pas
l'emplacement de la celule trouvée.

Je cherche toujours....
Avatar
AV
Avec rechercheV, je trouve la valeur mais ca ne me donne pas
l'emplacement de la celule trouvée.


Regarde la fonction EQUIV et un petit coup de INDEX ensuite...

AV

Avatar
isabelle
bonjour,

=INDEX('C:test[classeur1 .xls]Feuil1'!A:A;EQUIV("orange";'C:test[classeur1 .xls]Feuil1'!$A:$A;0)+LIGNE()-3)

le chiffre -3 dans la formule correspond à la première ligne ou tu mets la formule sur ton nouveau classeur,
dans cette exemple la formule a été ecrite sur la ligne 3.
ensuite tu la recopie à droite et vers le bas.

isabelle

Merci ca répond a la première partir de mon problème. Une fois que
j'ai trouvé le texte cherché, je dois copier une partie de la feuille
a partir de cet cellule(la cellule trouvé) et coller ca dans le
document en cours.

Je récapitule, je dois ramener dans un document vierge des cellules
dans d'autres documents excel. Mais avant je dois trouver leur
emplacement car ca peut varier. Je dois dabord chercher il est ou
ensuite je dois copier à partir de la cellule trouvé le tableau qui
se trouve en dessous. donc :

donc la macro devra sélectionner (Range) (la cellule trouvé)+4
horizontalement, (la cellule trouvée)+4 verticalement la copier et
ramener le tout dans le document présent.

Avec rechercheV, je trouve la valeur mais ca ne me donne pas
l'emplacement de la celule trouvée.

Je cherche toujours....



Avatar
lSteph
Bonsoir,
c'est précisément l'intérêt de combiner index et equiv
index(matrice;ligne;colonne)
index renvoie la valeur correspondant à la position(ligne colonne)
C'est ainsi qu'on utilise equiv(valeur;tableau;type)
pour ramener la position d'un élément cherché aussi bien en ligne
qu'en colonne.

Sinon pour répondre à ton autre question en VBA voici un exemple
(en supposant pas de doublons dans ce qui est cherché)
imaginons en ligne 1 titre1 titre2 titre3 titre4
en colonne1:
bleu
jaune
orange
rouge

'Ainsi pour afficher l'adresse de l'intersection de orange et titre3:

'''''*****
Sub toto()
Dim i As Long, j As Byte
i = WorksheetFunction.Match("orange", [a:a], 0)
j = WorksheetFunction.Match("titre3", [1:1], 0)
MsgBox Cells(i, j).Address
End Sub
'''''*****
'(outre le message, on pourrait aussi remplacer cette sub utilisant les
coordonnées par une fonction)


'Pour le reste si j'ai bien compris
'''''*****

Sub Quadra()
Dim i As Long, j As Byte
i = WorksheetFunction.Match("orange", [a:a], 0)
j = WorksheetFunction.Match("titre3", [1:1], 0)
Range(Cells(i, j), Cells(i + 4, j + 4)).Copy
Sheets.Add
ActiveSheet.Paste

End Sub
'''''*****
'te copiera une plage carrée de 5 cellules de coté depuis la cellule i, j
'dans une nouvelle feuille

'Je te laisse adapter le reste à tes objectifs.

'lSteph



"AfterBoy" a écrit dans le message de news:

Merci ca répond a la première partir de mon problème. Une fois que
j'ai trouvé le texte cherché, je dois copier une partie de la feuille
a partir de cet cellule(la cellule trouvé) et coller ca dans le
document en cours.

Je récapitule, je dois ramener dans un document vierge des cellules
dans d'autres documents excel. Mais avant je dois trouver leur
emplacement car ca peut varier. Je dois dabord chercher il est ou
ensuite je dois copier à partir de la cellule trouvé le tableau qui
se trouve en dessous. donc :

donc la macro devra sélectionner (Range) (la cellule trouvé)+4
horizontalement, (la cellule trouvée)+4 verticalement la copier et
ramener le tout dans le document présent.

Avec rechercheV, je trouve la valeur mais ca ne me donne pas
l'emplacement de la celule trouvée.

Je cherche toujours....
Avatar
JB
Les 2 classeurs doivent être ouverts:

Destination.xls: http://cjoint.com/?eywJXnxm6x
Source.xls: http://cjoint.com/?eywMpgxT8o

Dans Destination.xls (F1 contient la valeur cherchée -orange e.g.)

Set class = Workbooks("source.xls").Sheets(1)
class.[A1].Offset(Application.Match([f1], class.[a:a], 0) - 1,
1).Resize(4, 4).Copy Sheets(1).[A1]

Recopie un carré de 4 x 4 cellules dans le classeur Destination.xls en
A1 (adapter)

JB