Macro RechercheV
Résolu
pajude
Messages postés
84
Statut
Membre
-
pajude Messages postés 84 Statut Membre -
pajude Messages postés 84 Statut Membre -
Bonjour,
J'ai trouvé cette macro sur le net que j'arrive un peu à comprendre (je n'y connais pas grand chose en VBA) et je bloque.
Je voudrais la modifier pour faire des recherches de la colonne B de la Feuil2 et afficher les valeurs des colonnes B à D de la Feuil1 si les valeurs sont trouvées, sinon afficher NA.
Y a t'il quelqu'un pour me répondre avec une macro simple que je puisse comprendre
Fichier joint : https://www.cjoint.com/?0HfpGOu6EBH
Merci
J'ai trouvé cette macro sur le net que j'arrive un peu à comprendre (je n'y connais pas grand chose en VBA) et je bloque.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B5")) Is Nothing Then
Target.Offset(0, 1).Formula = "=VLOOKUP(B5,Feuil1!A2:D7,2,0)"
Target.Offset(0, 1).Value = Target.Offset(0, 1).Value
End If
End Sub
Je voudrais la modifier pour faire des recherches de la colonne B de la Feuil2 et afficher les valeurs des colonnes B à D de la Feuil1 si les valeurs sont trouvées, sinon afficher NA.
Y a t'il quelqu'un pour me répondre avec une macro simple que je puisse comprendre
Fichier joint : https://www.cjoint.com/?0HfpGOu6EBH
Merci
1 réponse
-
Bonjour,
Pourquoi voulez-vous une macro ??????-
-
-
-
Bonjour,
J'ai testé, et si je comprends, les 2 macros sont donc liées, et une doit être dans la Feuil2 et l'autre laissé dans Module 1.
Que fait la 1ère macro, car je ne vois que la colonne B
La 2ème je comprends mieux, elle écrit dans C,D,E si B est trouvé dans A Feuil1, sinon écrit NA (texte de TNA, qu'il est possible de modifier) dans les cellules.
Y a t'il moyen de mettre les 2 dans le module1.
Merci de vos explications -
Re,
Y a t'il moyen de mettre les 2 dans le module1. Non, tout dans le code VBA de la feuil2 oui. Le code dans la feuil2 vous permet de traiter en temps reel la recherche sur l'evenement change d'une cellule, sinon il faut un autre evenement (ex: un click bouton ou une combinaison de touches) pour lancer le code si vous voulez tout mettre dans le module1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig As Long, lig, Ligne, Plage As Range, Nb
Dim TNA
'si erreur rendre evenements excel actifs
On Error GoTo traite_erreur
'Desactive les evenements excel: cause--->passage en majuscule de la cellule active cree une recurcivite qui plante excel
Application.EnableEvents = False
'derniere cellule non vide colonne B
derlig = Range("B" & Rows.Count).End(xlUp).Row
'test cellule active colonne B
If Not Application.Intersect(Target, Range("B5:B" & derlig)) Is Nothing Then
'ecriture en majuscule
Target = UCase(Target)
'ligne cellule active
Ligne = Target.Row
'Tableau NA
TNA = Array("NA", "NA", "NA")
With Worksheets("feuil1")
'derniere cellule non vide colonne A
derlig = .Range("A" & Rows.Count).End(xlUp).Row
'mise en memoire plage cellule colonnre A---> recherche plus rapide (vous avez 10000 lignes)
Set Plage = .Range("A1:A" & derlig)
'recherche si l'infos existe
Nb = Application.CountIf(Plage, Target)
'test si >0
If Nb > 0 Then
lig = 1
'recherche ligne des infos a copier
lig = .Columns("A").Find(Target, .Cells(lig, "A"), , xlWhole).Row
'ecriture des infos sur feuil1
Range("C" & Ligne).Resize(, 3) = .Range("B" & lig).Resize(, 3).Value
Else
'ecriture NA si infos pas trouvees
Range("C" & Ligne).Resize(, 3) = TNA
End If
'libere la memoire
Set Plage = Nothing
End With
End If
traite_erreur:
Application.EnableEvents = True
End Sub
-