Recherche cellule

Résolu/Fermé
raveno39 Messages postés 49 Date d'inscription mardi 6 septembre 2011 Statut Membre Dernière intervention 11 septembre 2014 - Modifié par raveno39 le 3/03/2012 à 20:32
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 - 4 mars 2012 à 17:12
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

Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 3/03/2012 à 22:16
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.
0
raveno39 Messages postés 49 Date d'inscription mardi 6 septembre 2011 Statut Membre Dernière intervention 11 septembre 2014 15
4 mars 2012 à 08:12
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
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
4 mars 2012 à 09:12
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
0
raveno39 Messages postés 49 Date d'inscription mardi 6 septembre 2011 Statut Membre Dernière intervention 11 septembre 2014 15
4 mars 2012 à 10:55
c'est ce que j'avais fait et cela ne fonctionne pas
a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cousinhub29 Messages postés 955 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 15 novembre 2024 344
4 mars 2012 à 11:53
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
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
4 mars 2012 à 14:52
Re,

regarde le fichier joint annoté

https://www.cjoint.com/?BCeo0qUJt9a
0
cousinhub29 Messages postés 955 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 15 novembre 2024 344
4 mars 2012 à 15:23
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
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
4 mars 2012 à 16:22
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

0
raveno39 Messages postés 49 Date d'inscription mardi 6 septembre 2011 Statut Membre Dernière intervention 11 septembre 2014 15
Modifié par raveno39 le 4/03/2012 à 16:53
Les deux formule me vont bien

merci
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
4 mars 2012 à 17:12
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
0