Sélectionner et atteindre

Bonjour le forum,

J'ai le code suivant pour trouver et sélectionner une cellule à l'ouverture d'une feuille :

Private Sub Worksheet_Activate() ' En activant la feuille.

Dim celluletrouvee As Range
Dim numéro As Long

numéro = CLng(Sheets("Data").Range("A3").Value) ' on recherche la dernière valeur entrée dans la base de donnée

Set celluletrouvee = Sheets("JAN").Range("C7:AG122").Find(numéro, lookat:=xlWhole) 'On recherche cette donnée dans la feuille

If celluletrouvee Is Nothing Then

Range("C7").Select 'Si on ne trouve pas de valeur on séléctionne C7

    Else

celluletrouvee.Select 'Si on la trouve on la séléctionne

End If
End Sub

Ce code marche bien puisque la cellule en question est sélectionner néanmoins je ne trouve pas la solution pour "atteindre ?" la cellule, c'est à dire que l'écran la positionne automatiquement au milieu !

Des suggestions ?

Salut Koko_swiff,

quelque chose comme ça?

Private Sub Worksheet_Activate() ' En activant la feuille.

Dim rCel As Range
Dim numéro As Long
'
numéro = CLng(Range("A3").Value) ' on recherche la dernière valeur entrée dans la base de donnée
'
With Worksheets("JAN")
    Set rCel = .Range("C7:AG122").Find(numéro, lookat:=xlWhole) 'On recherche cette donnée dans la feuille
    If rCel Is Nothing Then
       Range("C7").Select 'Si on ne trouve pas de valeur on séléctionne C7
    Else
        .Activate
        rCel.Select 'Si on la trouve on la séléctionne
        ActiveWindow.ScrollRow = IIf(rCel.Row > 10, rCel.Row - (rCel.Row - 10), rCel.Row)
    End If
End With
'
End Sub

A+

Bonjour Curulis

Alors oui c'est bien ça pour quand aucune valeur n'est trouvé pas de problème. En revanche lorsque le numéro correspond il ne trouve pas. Je n'ai pas mentionner que les cellules dans la plages de recherche était des formules et qu'il fallait donc rechercher dans les valeurs.

J'ai donc essayer en enlevant une formule et en mettant un numéro ça marche bien pour la sélection, mais l'écran se déplace un peu sans la positionner au milieu.

Salut Koko_swiif,

voilà ta macro.

Private Sub Worksheet_Activate() ' En activant la feuille.

Dim rCel As Range
Dim numéro As Long
'
numéro = CLng(Range("A3").Value) ' on recherche la dernière valeur entrée dans la base de donnée
'
With Worksheets("JAN")
    Set rCel = .Range("C7:AG122").Find(what:=numéro, lookat:=xlWhole, LookIn:=xlValues) 'On recherche cette donnée dans la feuille
    If rCel Is Nothing Then
       Range("C7").Select 'Si on ne trouve pas de valeur on séléctionne C7
    Else
        .Activate
        iRowV = ActiveWindow.VisibleRange.Rows.Count
        iColV = ActiveWindow.VisibleRange.Columns.Count
        iRow = IIf(rCel.Row < Int(iRowV / 2), 1, rCel.Row - Int(iRowV / 2))
        iCol = IIf(rCel.Column < Int(iColV / 2), 1, rCel.Column - Int(iColV / 2))
        ActiveWindow.ScrollRow = iRow
        ActiveWindow.ScrollColumn = iCol
        rCel.Select
    End If
End With
'
End Sub

A+

Re,

ça marche impeccablement bien merci beaucoup !!!

Est ce que si je n'abuse pas tu pourrais commenter ta macro pour expliquer exactement pourquoi est ce qu'il faut coder cela que je comprenne bien le fonctionnement et puisse l'adapter à d'autre besoin si un jour j'en ai l'utilité ?

Merci en tout cas c'est vraiment top !

Bon weekend

Salut Koko_Swiff,

avec quelques commentaires...

Private Sub Worksheet_Activate() ' En activant la feuille.

Dim rCel As Range
Dim numéro As Long
'
numéro = CLng(Range("A3").Value) ' on recherche la dernière valeur entrée dans la base de donnée
'
With Worksheets("JAN")
    Set rCel = .Range("C7:AG122").Find(what:=numéro, lookat:=xlWhole, LookIn:=xlValues) 'On recherche cette donnée dans la feuille
    If rCel Is Nothing Then
       Range("C7").Select 'Si on ne trouve pas de valeur on séléctionne C7
    Else
        .Activate                                           'activer "JAN"
        iRowV = ActiveWindow.VisibleRange.Rows.Count        'nombre de lignes visibles à l'écran
        iColV = ActiveWindow.VisibleRange.Columns.Count     'nombre de colonnes visibles à l'écran
        iRow = IIf(rCel.Row < Int(iRowV / 2), 1, rCel.Row - Int(iRowV / 2))     'calcul de la ligne devant se trouver en haut de l'cran
        iCol = IIf(rCel.Column < Int(iColV / 2), 1, rCel.Column - Int(iColV / 2)) 'idem pour la colonne devant se trouver à gauche
        ActiveWindow.ScrollRow = iRow           'application...
        ActiveWindow.ScrollColumn = iCol        '...du calcul ci-dessus
        rCel.Select                             'sélection de la cible
    End If
End With
'
End Sub

A+

Rechercher des sujets similaires à "selectionner atteindre"