XL 2013 recherchev en vba

Panda Tsoa

XLDnaute Junior
Bonjour,
Je sollicite votre aide sur le code que quelqu'un m'a déjà aidé.
Merci d'avance.
Cordialement,
 

Pièces jointes

  • VBA RECHERCHE V3.xlsm
    16.6 KB · Affichages: 6

fanch55

XLDnaute Barbatruc
Bonjour,
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Ws As Worksheet
  Set Ws = Sheets("sources") ' Attribution de la variable Ws le nom de la feuille sources
  On Error Resume Next 'si le code produit n'existe pas,n'affiche pas d'erreur
  If Not Application.Intersect(Target, Range("I:I")) Is Nothing Then 'Sur Chgt dans une cellule colonne I
        If Target.Value <> "" Then 'Si la cellule n'est pas vide
          'Réplication de RECHERCHEV()
          ' Target.Row --> Ligne de la cellule en modification
          
          Cells(Target.Row, "J") = Application.WorksheetFunction.VLookup(Target.Value, Ws.Range("A:C"), 2, False)
          Cells(Target.Row, "K") = Application.WorksheetFunction.VLookup(Target.Value, Ws.Range("A:C"), 3, False)
          Cells(Target.Row, "N") = Cells(Target.Row, "K")
        Else
            Columns("J:N").Rows(Target.Row) = ""
        End If
    End If
End Sub
 

Jacky67

XLDnaute Barbatruc
Bonjour,
Je sollicite votre aide sur le code que quelqu'un m'a déjà aidé.
Merci d'avance.
Cordialement,
Bonjour à tous
Ne pas mettre un Application.EnableEvents = False sur un Worksheet_Change , n'est pas une bonne idée.
Ceci traite également si la valeur saisie n'existe pas
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Ws As Worksheet
    Set Ws = Sheets("sources")    ' Attribution de la variable Ws le nom de la feuille sources
    On Error Resume Next    'si le code produit n'existe pas,n'affiche pas d'erreur
    Application.EnableEvents = False
    If Not Application.Intersect(Target, Range("I:I")) Is Nothing Then    'Sur Chgt dans une cellule colonne I
        'Réplication de RECHERCHEV()
        ' Target.Row --> Ligne de la cellule en modification

        Cells(Target.Row, "J") = Application.WorksheetFunction.VLookup(Target.Value, Ws.Range("A:C"), 2, False)
        Cells(Target.Row, "K") = Application.WorksheetFunction.VLookup(Target.Value, Ws.Range("A:C"), 3, False)
        Cells(Target.Row, "N") = Cells(Target.Row, "K")
    End If

    If Err Then Cells(Target.Row, "J") = "": Cells(Target.Row, "K") = "": Cells(Target.Row, "N") = ""
    Application.EnableEvents = True
End Sub
Nb: Ceci pourrait être traité facilement sans vba
 
Dernière édition:

Panda Tsoa

XLDnaute Junior
Bonjour à tous
Ne pas mettre un Application.EnableEvents = False sur un Worksheet_Change , n'est pas une bonne idée.
Ceci traite également si la valeur saisie n'existe pas

Nb: Ceci pourrait être traité facilement sans vba
Bonjour Jacky 76,
Je suis nul en vba et c'est un travail de quelqu'un que j'ai envoyé, si tu peux rectifier l'erreur dans le fichier svp.
Le soucis aussi c'est que le résultat de la recherche v ne fonctionne pas si je fais une copie valeur de 1000 lignes par exemple dans la colonne clé de recherche, le traitement ne fonctionne pas tant qu'on n'entre pas une à une les clés de recherche.
Merci beaucoup
 

Panda Tsoa

XLDnaute Junior
Re-bonjour,
Je pensais que le choix du code ne pouvait pas être remis en cause ..
Sinon les formules de @JHA sont ok, il faut juste les encadrer par un sierreur pour éviter les #N/A
VB:
=SIERREUR(RECHERCHEV(I5;Tableau2;2;FAUX);"")
Re, J'ai déjà utilisé des formules mais c'est trop lourd et c'est pour cela que quelqu'un m'a conseillé de faire le traitement sur VBA.
Cdlt,
 

Jacky67

XLDnaute Barbatruc
Bonjour Jacky 76,
Je suis nul en vba et c'est un travail de quelqu'un que j'ai envoyé, si tu peux rectifier l'erreur dans le fichier svp.
Le soucis aussi c'est que le résultat de la recherche v ne fonctionne pas si je fais une copie valeur de 1000 lignes par exemple dans la colonne clé de recherche, le traitement ne fonctionne pas tant qu'on n'entre pas une à une les clés de recherche.
Merci beaucoup
Re..
Voir si le classeur en Pj* convient
*Modifié
 

Pièces jointes

  • VBA RECHERCHE V3.xlsm
    24 KB · Affichages: 8
Dernière édition:

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87