recherche dans plusieurs feuilles (Resolu)

miremy

XLDnaute Nouveau
bonjour,
je ne connais pas bien visual basic et j'ai trouve dans un forum un code qui me convient presque.
je veux dans la feuille1 trouver les caracteristiques des noms de la feuille3 qui sont contenus dans la feuille2
voici le code que j'ai en feuille1 :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then

With Worksheets(2).Range("a:a" )
Set c = .Find(Target, LookIn:=xlValues)
If Not c Is Nothing Then
monr = "a" & c.Row
Application.EnableEvents = False
Worksheets(2).Range(monr).EntireRow.Copy Destination:=Target
Application.EnableEvents = True
Else
MsgBox "inconnu"
End If
End With
End If
End Sub

_quand je copie les noms un par un cela fonctionne
mais si je copie la colonne entiere çà ne va pas cela me donne que le 1°nom de la selection
quelqu'un peut il m'aider a resoudre mon probleme
merci
ci-joint fichier exRegarde la pièce jointe essai 2.xls
:)
 

Pièces jointes

  • essai 2.xls
    24.5 KB · Affichages: 95
  • essai 2.xls
    24.5 KB · Affichages: 95
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : recherche dans plusieurs feuilles

Bonjour.
Comme ça:
VB:
Option Explicit
'

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C1F2 As Range, R As Range, C As Range
If Target.Column = 1 And Target.Columns.Count = 1 Then
   Application.EnableEvents = False
   Set C1F2 = Worksheets(2).Columns(1)
   For Each R In Target
      Set C = C1F2.Find(R.Value, LookIn:=xlValues)
      If C Is Nothing Then
         R.Offset(0, 1).Value = "*** Inconnu ***"
      Else
         C.EntireRow.Copy Destination:=R
         End If
      Next R
   Application.EnableEvents = True
   End If
End Sub
À+
 

miremy

XLDnaute Nouveau
Re : recherche dans plusieurs feuilles

:confused:
Bonjour et bonne annee à tous
Dranreb
Avec le code que tu m'a donne je viens de m'appercevoir que lorsque je met un nom qui n'est pas dans la liste de donnees il m'inscrit les donnees d'un nom ressemblant (ex ici si je met "ne" il me donne martine,pour rot ,j'ai pierot etc.....)
Y a il un code pour rechercher le nom exact dans les donnees

Bonjour.
Comme ça:
VB:
Option Explicit
'

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C1F2 As Range, R As Range, C As Range
If Target.Column = 1 And Target.Columns.Count = 1 Then
   Application.EnableEvents = False
   Set C1F2 = Worksheets(2).Columns(1)
   For Each R In Target
      Set C = C1F2.Find(R.Value, LookIn:=xlValues)
      If C Is Nothing Then
         R.Offset(0, 1).Value = "*** Inconnu ***"
      Else
         C.EntireRow.Copy Destination:=R
         End If
      Next R
   Application.EnableEvents = True
   End If
End Sub
À+

merci de me donner la solution
:)
ci joint fichier ex:
Too Files - Hébergement Gratuit de Fichiers - Aucune limite - Essaitri - essaitri.xls - Too Files
 

Dranreb

XLDnaute Barbatruc
Re : recherche dans plusieurs feuilles

Bonjour
J'avais simplement repris le Find comme vous l'aviez écrit, mais c'est sûr qu'il manque plein de choses, notamment LookAt:=xlWhole.
Mettez le curseur sur le mot Find, touche F1, développez "Méthode Find telle qu'elle s'applique à l'objet Range.". Lisez surtout la 1ère note en fin.
Cordialement.
 

miremy

XLDnaute Nouveau
Re : recherche dans plusieurs feuilles

Bonjour Dranreb
j'ai rajoute une ligne avec" LookAt:=xlWhole"et çà fonctionne.

Set C = C1F2.Find(R.Value, LookIn:=xlValues)
Set C = C1F2.Find(R.Value, LookAt:=xlWhole)

Merci mille fois
Miremy
 

Dranreb

XLDnaute Barbatruc
Re : recherche dans plusieurs feuilles

Bonjour
Demandez donc à enregistrer une nouvelle macro. Pendant que ça enregistre, faite une recherche Excel avec toutes les options correctement choisies, arrêtez l'enregistrement de la macro et inspirez vous fortement du code engendré.
Et rappelez vous ce qui est dit dans l'aide à propos des paramètres LookIn, LookAt, SearchOrder et MatchByte. Il vaut donc mieux toujours les spécifier tous les 4 en même temps pour éviter de mauvaises surprises.
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 339
Membres
111 107
dernier inscrit
cdel