Microsoft 365 recherche valeur dans colonne si vba

gothc

XLDnaute Occasionnel
Bonjour le forum
sur la feuil 1 dans la colonne E (Désignation) je recherche à afficher la valeur de la feuil 2 colonne B (Désignation) uniquement quand j'ai le code scan de la feuil 1 en D (Result Outil qui manques)
Je cherche une méthode VBA
Merci de votre aide
bonne soirée
 

Pièces jointes

  • Classeur1.xlsx
    15.1 KB · Affichages: 16

Jacky67

XLDnaute Barbatruc
Bonjour le forum
sur la feuil 1 dans la colonne E (Désignation) je recherche à afficher la valeur de la feuil 2 colonne B (Désignation) uniquement quand j'ai le code scan de la feuil 1 en D (Result Outil qui manques)
Je cherche une méthode VBA
Merci de votre aide
bonne soirée
Bonjour,
Une piste en PJ avec ce code dans le module de la feuille "Feuil1"


  • VB:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim C As Range
    If Intersect(Target, [d:d]) Is Nothing Or Target.Row = 1 Then Exit Sub
    Application.EnableEvents = False
    For Each C In Target
    If IsNumeric(Application.Match(C, [Feuil2!A:A], 0)) Then
    C.Offset(, 1) = Feuil2.Cells(Application.Match(C, [Feuil2!A:A], 0), 2)
    Else
    C.Offset(, 1) = ""
    End If
    Next
    Application.EnableEvents = True
    End Sub
 

Pièces jointes

  • outillage.xlsm
    20.7 KB · Affichages: 11
Dernière édition:

gothc

XLDnaute Occasionnel
Je regarde maintenant comment afficher le résultat dans un userform
encore merci Jacky je laisse mon vrai fichier qui va permettre de le modifier et simplifier le fichier (plus facilement pour comprendre le fonctionnement) j'ai une base de donnée avec des articles
pour faire l'inventaire je scan le code barres de l'outil pour valider la présence de l'outil je recherche à afficher le résultat dans un userform puis demander à l'opérateur de contrôler la liste des outils qui manquent
Merci
 

Pièces jointes

  • outil.xlsm
    56.5 KB · Affichages: 3

gothc

XLDnaute Occasionnel
Re bonjour dans l'affichage du résultat dans mon userform1 je pense quil serais mieux d'avoir le numéro de l'outil feuil1 en G quand je rajoute cette ligne j'ai le résultat avec un décalage

Merci de votre aide
 
Dernière édition:

gothc

XLDnaute Occasionnel
Bonjour je cherche une petite modification du code pour avoir en plus le numero en feuil1 G pour le résultat de la recherche en E feuil3

quand je rajoute cette ligne j'ai un decalage je sais pas pourquoi Feuil3.Cells(Lig, "f") = C.Offset(, 6)


VB:
Sub traiter()
    Dim Lig, C As Range
    Lig = 2
    Feuil3.Range("d2:e" & Rows.Count).ClearContents
    With Feuil1
    For Each C In .Range("a2:a" & .Cells(.Rows.Count, "A").End(xlUp).Row)
        If IsError(Application.Match(C, [Feuil3!A:A], 0)) Then
            Feuil3.Cells(Lig, "d") = C
            Feuil3.Cells(Lig, "e") = C.Offset(, 1)
            Lig = Lig + 1
        End If
    Next
    End With
End Sub
 

gothc

XLDnaute Occasionnel
Bon j'ai trouvé une solution avec 2 macros pour faire le boulot c'est pas la solution la plus simple mais elle fonctionne
VB:
Sub traiter()
    Dim Lig, C As Range
    Lig = 2
    Feuil3.Range("d2:e" & Rows.Count).ClearContents
    With Feuil1
    For Each C In .Range("a2:a" & .Cells(.Rows.Count, "A").End(xlUp).Row)
        If IsError(Application.Match(C, [Feuil3!A:A], 0)) Then
            Feuil3.Cells(Lig, "d") = C
            Feuil3.Cells(Lig, "e") = C.Offset(, 1)
            Lig = Lig + 1
        End If
    Next
    End With
End Sub

Sub traiter1()
    Dim Lig, C As Range
    Lig = 2
    Feuil3.Range("f2:f" & Rows.Count).ClearContents
    With Feuil1
    For Each C In .Range("a2:a" & .Cells(.Rows.Count, "A").End(xlUp).Row)
        If IsError(Application.Match(C, [Feuil3!A:A], 0)) Then
            Feuil3.Cells(Lig, "d") = C
            Feuil3.Cells(Lig, "f") = C.Offset(, 6)
            Lig = Lig + 1
        End If
    Next
    End With
End Sub
 

Jacky67

XLDnaute Barbatruc
Je laisse le fichier avec la dernière version si une personne veut simplifier ou amélioré le fichier
merci
Re..
Ma version d'Excel ne permet pas de travailler sur ton classeur, désolé.
Ouvre un nouveau poste avec ton classeur en PJ pour d'autres questions.
Néanmoins, ce code met bien le n° de la colonne G(feuil1) en colonne F (feuille3) sans décalage.
VB:
Sub traiter()
    Dim Lig, C As Range
    Lig = 2
    Feuil3.Range("d2:f" & Rows.Count).ClearContents
    With Feuil1
        For Each C In .Range("a2:a" & .Cells(.Rows.Count, "A").End(xlUp).Row)
            If IsError(Application.Match(C, [Feuil3!A:A], 0)) Then
                Feuil3.Cells(Lig, "d") = C
                Feuil3.Cells(Lig, "e") = C.Offset(, 1)
                Feuil3.Cells(Lig, "f") = C.Offset(, 6)
                Lig = Lig + 1
            End If
        Next
    End With
End Sub

Bon courage et bonne année 2021
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2