Row

Résolu
Bonjour,

Un ptit peu d'aide svp...
Voilà j'ai un pas de programme pour chercher un code dans une feuille... ça fonctionne bien... mais seulement quand je suis dans la feuille active.
Comment faire pour que ça fonctionne dans n'importe quelle feuille?
Merci de m'aider.

Sub test()

Dim Numéro As String, Ligne As Long
Dim CelluleTrouvée As Range, Col As Integer

Numéro = ["fg280410"]

With Worksheets("Feuil2")
Set CelluleTrouvée = .Range("b4:c122").Find(What:=Numéro, _
LookIn:=xlValues, LookAt:=xlWhole)
End With
If CelluleTrouvée Is Nothing Then
MsgBox "pas trouvé"
Else
Ligne = CelluleTrouvée.Row
Col = CelluleTrouvée.Column + 2
toto = Cells(Ligne, Col).Value

MsgBox ("trouvé : ligne = " & Ligne & " , colonne = " & Col)
Worksheets("Feuil1").Range("F25") = toto
MsgBox "La valeur trouvée """ & toto & """" & " a été copié en feuil1, cellule F25."
End If

End Sub

Lorsque je suis en feuil1 ... rien ne se passe...
@++

4 réponses

  1. Contributeur
    Bonjour,
    Je n'ai pas bien compris, tu veux rechercher dans une feuille X et recopier dans Feuil1 ?
    Déja, pour valider dans toute les feuilles..
    With ActiveSheet

    à la place de
    With Worksheets("Feuil2")

    Et explique un peu mieux stp.
    A+
    1. Bonjour Et merci de ta réponse.
      En fait je travaille dans la feuilx et mon tableau de recherche se trouve en feuil2.
      De ce fait mon programme ne fonctionne pas...
      Il ne fonctionne que lorsque je suis dans ma feuil2...
      Voilà... Merci de ton aide.
      @+
  2. bonjour,
    remplacer cette ligne :
    With Worksheets("Feuil2")
    par:
    With Worksheets(ActiveSheet.Name)
    bonne suite

    edit : à la relecture, je suis complètement à coté ! la recherche devant s'effectuer en feuille 2, si finalement j'ai tout compris

    reedit de plus c'est la m^me proposition que lermite222 en plus compliquée inutilement!

    je retourne à la pêche
    1. Contributeur
      J'ai tester la fonction et la valeur cherchée se transcrit dans la feuille active quel qu'elle soit.
         
      Sub test()   
      Dim Numéro As String   
      Dim CelluleTrouvée As Range   
          Numéro = ["fg280410"]   
          With Worksheets("Feuil2")   
              Set CelluleTrouvée = .Range("b4:c122").Find(What:=Numéro, _   
              LookIn:=xlValues, LookAt:=xlWhole)   
          End With   
          If CelluleTrouvée Is Nothing Then   
              MsgBox "pas trouvé"   
          Else   
              ActiveSheet.Range("F25") = CelluleTrouvée   
          End If   
      End Sub   
      

      A+
      Edit : La macro DOIT se trouver dans un module général (.bas)
      Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      NOTE : Je ne répond pas aux MP pour les questions techniques.
      1. Problème résolu comme suit :
        Sub test()
        Dim Numéro As String, Ligne As Long
        Dim CelluleTrouvée As Range, Col As Integer
        Dim toto
        Numéro = ["FG280210"]
        With Worksheets("Feuil2")
        Set CelluleTrouvée = .Range("b4:c122").Find(What:=Numéro, _
        LookIn:=xlValues, LookAt:=xlWhole)

        If CelluleTrouvée Is Nothing Then
        MsgBox "pas trouvé"
        Else
        Ligne = CelluleTrouvée.Row
        Col = CelluleTrouvée.Column + 2
        toto = .Cells(Ligne, Col).Value
        MsgBox ("trouvé : ligne = " & Ligne & " , colonne = " & Col)
        Worksheets("Feuil1").Range("F25") = toto
        MsgBox "La valeur trouvée """ & toto & """" & " a été copié en feuil1, cellule F25."
        End If
        End With
        End Sub

        Merci encore et @++ pour de nouvelles aventures...
        :-)
    2. Contributeur
      Re,
      Y a plus court..
      Else 
      Worksheets("Feuil1").Range("F25") = CelluleTrouvée.Offset(0,2)

      A+