[VBA]Rechercher un élement copié depuis un autre classeur

Résolu
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018 - 24 nov. 2011 à 15:03
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018 - 25 nov. 2011 à 10:21
Bonjour à tous,

je suis débutant sur VBA et je me trouve devant un problème.

J'ai deux classeurs excel (A et B), et je voudrais
rechercher dans A le contenu d'une cellule qui se trouve dans B.

J'ai trouvé que je pouvais faire un recherche grâce à Cells.Find(What:="*"...
Mais je ne sais pas comment dire à VBA de remplacer * par ce qui se trouve dans le presse-papier (que je viens de copier depuis le classeur B avec la fonction .Copy).

Est-ce que quelqu'un sait comment faire?

Merci

17 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 nov. 2011 à 10:12
derligne et laquelle sont des variables (on aurait pu leur donner n'importe quel autre nom).
derligne a été typée en Long. elle est la dernière ligne remplie de la colonne U (on ne va pas bêtement rechercher sur toute la colonne, mais uniquement jusqu'à sa dernière ligne remplie)
laquelle a été typée en Range. Elle est la cellule où ta valeur cruitère de recherche a été trouvée. Elle est Nothing si aucune trouvée.
Range("B3").text pour rechercher comme c'est affiché dans B3. la propriété Text est différente de la propriété Value.
-une fois que je lance l'éxecution de ce code depuis VBA, est-ce que cela sélectionne la cellules trouvée sous excel?

Oui, si trouvée (et c'est la cellule définie par la variable laquelle).

Mais tu as très visiblement le plus grand besoin d'ouvrir ton aide VBA, d'y apprendre les rudiments, avant de "foncer tête en avant" dans le développement.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 nov. 2011 à 15:48
Bonjour,

Avant tout : nous te serions reconnaissant de bien vouloir dorénavant ouvrir tes discussions dans la section correspondant à ton outils de développement. Tu ne développes pas sous VB.Net, pais sous VBA (le VBA de Excel). C'est important.

Je ne comprends pas pourquoi tu passes par le presse-papier pour tyraiter le problème que tu exposes !
Montre-nous le code que tu as écrit (indenté et entre balises code).
Commente-le au besoin.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
24 nov. 2011 à 15:50
Bonjour,
Je pense que c'est la catégorie VBA et non VB2005 donc essaie ceci:

 Application.CutCopyMode = False
    Selection.Copy
With New DataObject
.GetFromClipboard
Contenu = .GetText(1)
End With
MsgBox (Contenu)



@+Le Pivert
0
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018
24 nov. 2011 à 16:09
En effet, je me suis trompé de section et je m'en excuse.
J'ai réussi à simplifier le problème,
maintenant je n'ai plus qu'à trouver comment mettre le nom de la cellule (soit B23, soit le nom que j'ai défini) là ou je l'ai indiqué dans le code:

Cells.Find(What:="Nom de cellule", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 nov. 2011 à 16:14
Tu recherches sur toutes les cellules d'une feuille (m'étonnerait un peu) ou dans une colonne de cette feuille ?



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018
24 nov. 2011 à 16:16
Je recherche uniquement dans une colonne (U).
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 nov. 2011 à 16:34
C'est alors ainsi :

Dim laquelle as range, derligne as long
derligne = Sheets("nom_de_ta_feuille_de_recherche").Range("U" & rows.count).end(xlup)

Set laquelle = Sheets(""nom_de_ta_feuille_de_recherche"").Range("U1:U" & derligne).Find(Sheets("nom_de_la_feuille_contenant_ta_valeur").Range("B23").Text, LookIn:=xlValues, LookAt:=xlPart)

If not is nothing laquelle then laquelle.select ' juste pour constater.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 nov. 2011 à 16:36
en lève les "" (erreur de frappe) à remplacer par un seul ".


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018
24 nov. 2011 à 16:47
Merci mais j'ai une erreur d'éxecution '13' (imcompatibilité de ligne sur cette partie:
et qu'appelles tu derligne?

derligne = Sheets("nom_de_ta_feuille_de_recherche").Range("U" & rows.count).end(xlup)

0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 nov. 2011 à 16:55
Oui. J'ai frappé à main levée et ai oublié la propriété .row ===>>

derligne = Sheets("feuil1").Range("B" & Rows.Count).End(xlUp).Row

Par ailleurs : je viens de voir que tes feuilles sont sur des classeurs différents, dont il faut donc préciser le nom devant chaque Sheets ===>>
Exemple :
Workbooks("ggggg").Sheets("kkkhk"). .... etc ...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018
24 nov. 2011 à 17:04
Cela ne fonctionne toujours pas.
Dans ce que tu m'as donné, ou est ce que je met la cellule qui contient le texte recherché?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 nov. 2011 à 17:11
Set laquelle = Sheets("nom_de_ta_feuille_de_recherche").Range("U1:U" & derligne).Find(Sheets("nom_de_la_feuille_contenant_ta_valeur").Range("B23").Text, LookIn:=xlValues, LookAt:=xlPart)
C'est quoi, d'après toi, ce que je mets ici en rouge ?
J'espère que tu as remplacé les chaînes "......." par celles du nom tes feuilles !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018
24 nov. 2011 à 17:17
Oui je comprends mieux, il manquait la fin de cette ligne dans ton autre post.

Merci beaucoup.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 nov. 2011 à 17:19
Bon.
Je viens quand même de faire un petit essai (d'où le B au lieu du U) ===>> fonctionne bien.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018
25 nov. 2011 à 10:02
Cela ne fonctionne toujours pas chez moi...
C'est surement de ma faute étant donné que je suis débutant sur VBA
et que je ne le maitrise pas.

J'ai quelques petites questions:
-A quoi correspondent "laquelle" et "derligne".
-Pourquoi .text après range ("B23")?
-une fois que je lance l'éxecution de ce code depuis VBA, est-ce que cela sélectionne la cellules trouvée sous excel?

Et oui, désolé, je ne connais VBA que depuis 2 semaines et je n'ai eu droit qu'à
de brèves explications de la part d'un collègues.

Merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 nov. 2011 à 10:21
et :
Oui je comprends mieux, il manquait la fin de cette ligne dans ton autre post.

pas du tout !
C'est toi qui ne l'as pas parcourue jusqu'au bout !
As-tu remarqué la présence d'une scrollbar horizontale au bas du code mis entre balises ? Ca sert à quoi ?



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Mushroom52 Messages postés 22 Date d'inscription vendredi 5 novembre 2010 Statut Membre Dernière intervention 10 janvier 2018
25 nov. 2011 à 10:21
Merci pour toutes ces infos, j'ai bien regardé l'aide, mais je n'y ai pas trouvé
de réponses, et cetta application était assez urgente.

A bientôt
0
Rejoignez-nous