Recherche cellule

Résolu
Bonjour,

je voudrais savoir comment faire pour que le curseur ce place directement dans une cellule quand:
en k4 je mets une valeur et que je veux que le curseur cherche dans une colone la valeur demandée
voici le code que j'ai mis et que j'ai trouve sur le net mais ça marche pô

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("K4")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
'Range("b" & [MATCH(K4,B:B,0)]).Select

'-- ou affiche en haut de l'écran --
Application.Goto Range("b" & [MATCH(K4,B:B,0)]), Scroll:=True
End If
End Sub


excel 2007

10 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,

    colle ce code dans les propriétés de ta feuille concernée (clic droit sur l'onglet/Visualiser le code), sélectionne la cellule colonne B contenant la valeur saisie en K4. J'ai inclus une gestion d'erreur dans le cas de valeur absente

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x, c, firstAddress As Variant
    On Error Resume Next
    If Not Application.Intersect(Target, Range("K4")) Is Nothing Then
    Range("K4").Select
    x = ActiveCell.Value
    With ActiveSheet.Range("B:B")
    Set c = .Find(x, LookIn:=xlValues)
    If Not c Is Nothing Then
    firstAddress = c.Address
    End If
    End With
    Range(firstAddress).Select
    If Err.Number <> 0 Then
    MsgBox "Cette valeur est absente colonne B ", , "La recherche ne peut aboutir,"
    Err.Clear
    End If
    End If
    End Sub

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    1. Merci pour ta réponse qui repond à mes attentes
      j'ai installé ton code et l'ai adapté à mon tableau en modifiant les référence de cellule et ça marche.
      Par contre j'ai voulu m'en servir dans un tableau où la valeurs dans la colonne est une date (ven 06/1), ça ne marche que si je transforme cette date en nombre (49014).
      pourrais-je abuser de ta patient pour m'indiquer comme modifier ton code pour que cela marche avec une date.
      bonne journée
      1. Re,

        Faudrait voir comment sont saisies tes dates, pour ven 06/1 si tu saisis la date comme cela, elle est considérée comme texte alors soit tu saisis dans la cellule critère de la même façon soit ven 06/1 qui correspond certainement à une date vendredi 6 janvier 2012 il faut donc saisir la date dans un format alphanumérique reconnu par Excel 6/1/12 par exemple et formater la ou les cellules avec un format personnalisé jjj jj/mm ce qui affichera bien Ven 06/01
        ou jjj jj/m pour afficher Ven 06/1

        et la ça marche
        1. Bonjour,

          Essaie ainsi :

          Dim LaDate As Date
          Dim C As Range
          LaDate = CDate(Range("F1").Value)
          Set C = Columns(2).Find(LaDate, LookIn:=xlValues)
          If Not C Is Nothing Then
              MsgBox C.Address
          End If
          


          Bon dimanche
          1. re-,

            En partant du principe de Mike, un essai :

            Private Sub Worksheet_Change(ByVal Target As Range)
            If Not Intersect(Range("K4"), Target) Is Nothing Then
                If Not IsError(Application.Match(Target, Columns(2), 0)) Then
                    MsgBox Cells(Application.Match(Target, Columns(2), 0), 2).Address
                End If
            End If
            End Sub
            


            Bon dimanche
            1. Re,

              Je crois que Raveno souhaitait sélectionner la cellule colonne B contenant la valeur en K4, en panachant les codes avec celui de Cousinhub que je salue cela pourrait
              donner ceci
              1/ sélection de la valeur
              2/ message si la valeur est absente colonne B
              3/ reformatage de la cellule en standard en fin de procédure

              Option Explicit

              Private Sub Worksheet_Change(ByVal Target As Range)
              Dim x As Variant
              If Not Intersect(Range("K4"), Target) Is Nothing Then
              If Not IsError(Application.Match(Target, Columns(2), 0)) Then
              x = Cells(Application.Match(Target, Columns(2), 0), 2).Address
              Range(x).Select
              End If
              If x = False Then MsgBox "Cette valeur est absente colonne B ", , "La recherche ne peut aboutir,"
              End If
              [K4].NumberFormat = "General"
              End Sub

              1. Re,

                L'union fait la force et celle d'un forum de référence comme comment ça marche.

                N'oublie pas de mettre le statut de la discussion en résolu que cette discussion serve de référence

                Cordialement