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

Signaler
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018
-
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
6983
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 octobre 2020
114
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
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018

Je recherche uniquement dans une colonne (U).
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018

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)

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018

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é?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018

Oui je comprends mieux, il manquait la fin de cette ligne dans ton autre post.

Merci beaucoup.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
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
Messages postés
22
Date d'inscription
vendredi 5 novembre 2010
Statut
Membre
Dernière intervention
10 janvier 2018

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