Vba recherche valeur

Résolu
titi17-08 Messages postés 123 Statut Membre -  
michel_m Messages postés 18903 Statut Contributeur -
Bonjour à tous
a l'aide!!!!:)
un petit soucis sur le code ci dessous
mon code a pour but de rechercher une valeur d'une cellule classeur A dans un autre classeur.
si j'ai trouvé la valeur, je renvoie un autre valeur du classeur A vers une colonne en correspondance avec la ligne de la valeur trouvée..
cela me mentionne une erreur sur la ligne plage de recherche 'erreur 09'
merci d'avance
titi
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String

'********* ? adapter ***********
'affectation de valeurs aux variables :
    'on cherche le mot "Trouve"
Valeur_Cherchee = Range("c10").Value
    'dans la premi?re colonne de la feuille active
Set PlageDeRecherche = Workbooks("[RECAP DOSSIER.xlsm]Reference Dossiers").Range("A8:AR700")

'm?thode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)

'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
    'ici, traitement pour le cas o? la valeur n'est pas trouv?e
    AdresseTrouvee = Valeur_Cherchee
    Workbook.Select("[RECAP DOSSIER.xlsm]Reference Dossiers").Offset(0, 27).Select
    Selection = "0"
Else
    'ici, traitement pour le cas o? la valeur est trouv?e
    AdresseTrouvee = Trouve.Address
    Worksheets(1).cell("H1").Copy Destination:=cel
   Application.Goto cel.Offset(0, 27)
   
End If
MsgBox AdresseTrouvee
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub
A voir également:

3 réponses

Patrice33740 Messages postés 8930 Statut Membre 1 780
 
Bonjour,

La syntaxe serait plutôt :
Set PlageDeRecherche = Workbooks("RECAP DOSSIER.xlsm").Worksheets("Reference Dossiers").Range("A8:AR700") 
1
titi17-08 Messages postés 123 Statut Membre 1
 
Patrice, vous devenez mon formateur attitré...
merci pour la correction de cette ligne.
une valeur non requise apparait sur le set adresse trouve= worksheet.active recap
avec le code ci dessous
merci pour votre aide ;)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String

'********* ? adapter ***********
'affectation de valeurs aux variables :
    'on cherche le mot "Trouve"
Valeur_Cherchee = Range("c10").Value
    'dans la premi?re colonne de la feuille active
Set PlageDeRecherche = Workbooks("RECAP DOSSIER.xlsm").Worksheets("Reference Dossiers").Range("A8:AR700")

'm?thode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)

'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
    'ici, traitement pour le cas o? la valeur n'est pas trouv?e
    AdresseTrouvee = Valeur_Cherchee
    Set AdresseTrouvee = Worksheet.Active("RECAP DOSSIER.xlsm").Worksheets("Reference Dossiers").cell.Offset(0, 27).Select
    Selection = "0"
Else
    'ici, traitement pour le cas o? la valeur est trouv?e
    AdresseTrouvee = Trouve.Address
    Worksheets(1).cell("H1").Copy Destination:=cel
   Application.Goto cel.Offset(0, 27)
   
End If
MsgBox AdresseTrouvee
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
Bonjour

Worksheets(1).cell("H1").Copy Destination:=cel


je n'ai pas vu "cel" non déclarée, non définie

Pour t'aider prends l'habitude de mettre en ent^te de feuille de code "option explicit" qui t'indiquera où il y a problème
0
titi17-08 Messages postés 123 Statut Membre 1
 
Michel,
merci pour option explicit
voici mes erreurs

merci pour ton aide
Titi
0
Patrice33740 Messages postés 8930 Statut Membre 1 780
 
Re,

Je ne sais pas ce que tu voudrais faire quand la valeur n'est pas trouvée mais on ne peut pas écrire :
Dim AdresseTrouvee As String
'....
    Set AdresseTrouvee = Worksheet.Active("RECAP DOSSIER.xlsm").Worksheets("Reference Dossiers").cell.Offset(0, 27).Select

Set sert à affecter un Objet à une variable (pas à une String)
Active n'as pas d'argument (pas de "RECAP DOSSIER.xlsm") et encore moins de Worksheets ...
Select s'applique aussi à un Objet
.Cell n'est pas une propriété qui existe, on ne peut donc pas faire un Offset dessus. Si tu emploies Cells (avec un s) il faut précise laquelle des Cells. (michel est passé à coté du manque de s)
0
titi17-08 Messages postés 123 Statut Membre 1
 
Patrice,
il est sur que la valeur existe de toute façon car la ref renseignée est obligatoirement dans le fichier source.
Si la valeur n'est pas trouvée, rien afficher
merci pour votre aide en tout cas
Titi
0
Patrice33740 Messages postés 8930 Statut Membre 1 780 > titi17-08 Messages postés 123 Statut Membre
 
La partie suivante de ton code traite le cas où la valeur n'est pas trouvée :
If Trouve Is Nothing Then
    'ici, traitement pour le cas o? la valeur n'est pas trouv?e
    AdresseTrouvee = Valeur_Cherchee
    Set AdresseTrouvee = Worksheet.Active("RECAP DOSSIER.xlsm").Worksheets("Reference Dossiers").cell.Offset(0, 27).Select
    Selection = "0"
Else

Si tu ne dois rien faire, alors supprimes les lignes entre If et Else.

Ceci dit, on n'est jamais assez prudent, il est toujours préférable de vérifier que la valeur est trouvée :
If Not Trouve Is Nothing Then
    'ici, traitement pour le cas où la valeur est trouvée
    '....
End If
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
je parlais de Cel par de cell
et qui reste sans valeur calculée ni donnée
0
titi17-08 Messages postés 123 Statut Membre 1 > michel_m Messages postés 18903 Statut Contributeur
 
Désolé mais la je suis perdu ....;(
0
michel_m Messages postés 18903 Statut Contributeur 3 317 > titi17-08 Messages postés 123 Statut Membre
 
C'était une réponse à Patrice ....

mais j'ai l'impression que l'on va tourner en rond :-/

Mettre le classeur sans données confidentielles en pièce jointe sur 
https://mon-partage.fr
Dans lien de téléchargement
faire un clic droit- copier l’adresse du lien et le coller dans votre message en cours sur ccm
0