Rechercher une valeur sous VBA

Bonjour,

J'ai un tableau avec 2 colonnes A et B.
Et il faut que je tape une valeur de la colonne B pour la trouver dans la colonne A et trouver la nouvelle dans la colonne B.

ex:
je cherche 48172E0017 en colonne B.
je la trouve et je regarde la valeur en colonne A (ici 48172P0004)
Puis cette nouvelle valeur je la cherche en colonne B, et je retrouve la nouvelle valeur en colonne A (48172E0028 ), ainsi de suite.
Lorsque j'aperçois le format texte /COLLC1111, j'arrête la recherche.
Tout cette suite de valeur je l'enregistre dans un la feuille2 (de 48172E0017 à /COLLC1111).

voici mon fichier:
A.............................. B
/COLLC1111 48051P0012
48051E0005 48051J0921
48051E0007 48134E0001
48051E0008 48051E0009
48051E0009 48051J2902
48051E0012 48051E0013
48051E0013 48051E0014
48051E0014 48051E0027
48051E0027 48051E0007
48051E0101 48051E0102
48051E0102 48051E0103
48051E0103 48051E0104
48051E0104 48051E0005
48051J0921 48051P0030
48051J2902 48051P0035
48051P0012 48051E0101
48051P0030 48051E0008
48051P0035 48051E0012
48134E0001 48134E0016
48134E0002 48134E0006
48134E0003 48134E0009
48134E0004 48134E0005
48134E0005 48134E0025
48134E0006 48172E0015
48134E0007 48134E0004
48134E0008 48134E0007
48134E0009 48134E0018
48134E0016 48134J1425
48134E0018 48134E0008
48134E0025 48134J0930
48134J0930 48134E0002
48134J1425 48134E0003
48172E0015 48172E0016
48172E0016 48172E0028
48172E0017 48172E0019
48172E0019 48172P0014
48172E0028 48172P0004
48172P0004 48172E0017

et mon code
Private Sub CommandButton1_Click()

Dim nb As Integer

Range("B2").Select
nb = 2
Do While ActiveCell.Value > ""
ActiveCell.Offset(1, 0).Select
nb = nb + 1
Loop                            'permet de compter le nb de cellules dans la colonne B

For i = 2 To nb

If Range("B" & i) = TextBox1 Then
Worksheets("Feuil2").Select
Range("A1").Select
nb = 1
Do While ActiveCell.Value > ""
ActiveCell.Offset(1, 0).Select
nb = nb + 1
Loop
Range("A" & nb) = Worksheets("donnees").Range("B" & i)

End If
Next i




End Sub

merci d'avance

4 réponses

  1. Bonjour
    Essayez ceci
    Private Sub CommandButton1_Click()
        Dim nb As Long
        Application.ScreenUpdating = False
        Valeur = textbox1
        Sheets("Feuil2").Cells.Clear
        Sheets("Feuil2").Range("A1").Value = Valeur
        DerLig = 1
        Sheets("Donnees").Select
        nb = Range("A1").End(xlDown).Row
        
    Deb:
        Set c = Sheets("Donnees").Columns("B").Find(Valeur, LookIn:=xlValues)
        If c Is Nothing Then Exit Sub
        Valeur = c.Offset(0, -1).Value
        Sheets("Feuil2").Range("A" & DerLig + 1).Value = Valeur
        DerLig = DerLig + 1
        If Valeur = "/COLLC1111" Then
            Sheets("Feuil2").Select
            Exit Sub
        End If
        GoTo Deb
    End Sub
    bonne journée
    cdlt
    0
    1. bonjour,
      lorsque j'execute votre programme, 48172E0019 devient 4,8172E+23.
      Comment trouver une solution pour contourner ce problème?

      merci
      cdt
      0
      1. Bonjour
        Hélas, Excel interprète le "E" comme Exposant, ce qui évidemment n'a plus le même sens, j'ai fait beaucoup de manip (remplacement ou modification du format de cellule), rien n'y fait, dès que l'on remet le "E" Excel traduit systématiquement. Alors pour contourner le problème, j'ai remplacé le "E" par "É". c'est le seul subterfuge que j'ai trouver pour pallier à ce problème, si quelqu'un trouve une autre solution??.
        Je continu à chercher, si je trouve , je vous le ferai savoir.

        Private Sub CommandButton1_Click()
            Dim nb As Long
            Application.ScreenUpdating = False
            valeur = textbox1
            Sheets("Feuil2").Cells.Clear
            Sheets("Feuil2").Range("A1").Value = valeur
            DerLig = 1
            Sheets("Donnees").Select
            nb = Range("A1").End(xlDown).Row
            Columns("A:B").Replace What:="E", Replacement:="É", LookAt:=xlPart
            
        Deb:
            Set c = Sheets("Donnees").Columns("B").Find(valeur, LookIn:=xlValues)
            If c Is Nothing Then Exit Sub
            valeur = c.Offset(0, -1).Value
            Sheets("Feuil2").Range("A" & DerLig + 1).Value = valeur
            DerLig = DerLig + 1
            If valeur = "/COLLC1111" Then
                Sheets("Feuil2").Select
                Exit Sub
            End If
            GoTo Deb
        End Sub


        cordialement
        0
        1. si nous concaténons les valeurs avec une apostrophe il n'y a plus de problème!!
          et je vous remercie pour votre aide!!
          0