Vba recherche valeur

Résolu/Fermé
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 - 13 mars 2020 à 09:48
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 - 13 mars 2020 à 16:13
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

3 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 763
13 mars 2020 à 10:12
Bonjour,

La syntaxe serait plutôt :
Set PlageDeRecherche = Workbooks("RECAP DOSSIER.xlsm").Worksheets("Reference Dossiers").Range("A8:AR700") 
1
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1
13 mars 2020 à 10:57
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 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 3 292
13 mars 2020 à 11:30
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 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1
13 mars 2020 à 13:29
Michel,
merci pour option explicit
voici mes erreurs

merci pour ton aide
Titi
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 763
Modifié le 13 mars 2020 à 13:42
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)
Cordialement
Patrice

Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
0
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1
13 mars 2020 à 13:41
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 763 > titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023
13 mars 2020 à 14:39
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 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 3 292
13 mars 2020 à 13:56
je parlais de Cel par de cell
et qui reste sans valeur calculée ni donnée
0
titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023 1 > michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023
13 mars 2020 à 15:19
Désolé mais la je suis perdu ....;(
0
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 3 292 > titi17-08 Messages postés 122 Date d'inscription mercredi 29 janvier 2020 Statut Membre Dernière intervention 20 janvier 2023
13 mars 2020 à 16:13
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