Rechercher une valeur sous VBA

Fermé
vefa12 Messages postés 6 Date d'inscription lundi 29 avril 2013 Statut Membre Dernière intervention 19 août 2013 - 16 août 2013 à 16:05
vefa12 Messages postés 6 Date d'inscription lundi 29 avril 2013 Statut Membre Dernière intervention 19 août 2013 - 19 août 2013 à 20:47
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

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
16 août 2013 à 18:48
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
vefa12 Messages postés 6 Date d'inscription lundi 29 avril 2013 Statut Membre Dernière intervention 19 août 2013
19 août 2013 à 10:01
bonjour,
lorsque j'execute votre programme, 48172E0019 devient 4,8172E+23.
Comment trouver une solution pour contourner ce problème?

merci
cdt
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
19 août 2013 à 17:26
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
vefa12 Messages postés 6 Date d'inscription lundi 29 avril 2013 Statut Membre Dernière intervention 19 août 2013
19 août 2013 à 20:47
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