Vba recherche valeur
Résolu
titi17-08
Messages postés
123
Statut
Membre
-
michel_m Messages postés 18903 Statut Contributeur -
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
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:
- Vba rechercher une valeur dans un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Rechercher ou saisir une url - Guide
3 réponses
Bonjour,
La syntaxe serait plutôt :
La syntaxe serait plutôt :
Set PlageDeRecherche = Workbooks("RECAP DOSSIER.xlsm").Worksheets("Reference Dossiers").Range("A8:AR700")
Bonjour
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
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 :
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)
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)
La partie suivante de ton code traite le cas où la valeur n'est pas trouvée :
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 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 :-/
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
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 ;)