Vba recherche valeur
Résolu
titi17-08
Messages postés
123
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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
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
3 réponses
-
Bonjour,
La syntaxe serait plutôt :Set PlageDeRecherche = Workbooks("RECAP DOSSIER.xlsm").Worksheets("Reference Dossiers").Range("A8:AR700")-
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
-
-
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
-
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)
-
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- 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
-
- 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
-
