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+