Bonjour à toutes et tous;
J'ai un TS de plusieurs centaines de lignes, et j'ai une macro qui me permet d'atteindre une ligne sur la base de la saisie de la valeur de la colonne A.
Une fois positionné, je sélectionne la cellule trouvée.
Voici le bout de code utilisé :
VB:
Option Explicit
'
Public Sub atteindre()
Dim objet As String
Dim MaLigne As Integer
Dim Cel As Range
Dim Plage As Range
Dim k As Long
objet = InputBox("Entrez le N° de l'objet recherché (Juste les chiffres)", "Rechercher un Objet")
If objet = "" Then Exit Sub
objet = "OBJ" & objet
Set Plage = ActiveSheet.Range("A:A")
Set Cel = Plage.Find(objet)
If Not Cel Is Nothing Then
MaLigne = Cel.Row
Cells(MaLigne, 1).Select
End If
End Sub
Le problème que je tente de résoudre est donc de mettre en évidence la ligne du TS où je suis positionné.
J'ai essayé d'utiliser une MFC avec la formule suivante :
' =LIGNE()=CELLULE("ligne") '
La MFC fonctionne bien, mais si je clique sur une autre ligne, même en dehors du tableau, alors la MFC s'applique aussi sur cette ligne.
Existe-t-il un moyen pour éviter cela?
Merci d'avance pour vos conseils.
Bonne journée à toutes et tous.
Bonjour @wDog66 ;
Alors plusieurs raisons à cela, comme par exemple APPRENDRE tout simplement, et ainsi essayer de progresser.
C'est à mes yeux la meilleur réponse que je peux te faire.
Sur ce bonne journée à toi.
Bonjour le fil,
avec une fichier çà aurait été plus simple de répondre .
La fonction CELLULE pose quelques problèmes d'évaluation si le paramètre Référence est omis, ce qui est le cas ici.
Il faut demander un recalcul (F9) pour évaluer quelle est la cellule courante
Merci @crocrocro ;
En effet ta solution répond à ma demande. Même si je ne mets pas visuellement en évidence la ligne sachant qu'elle est en haut de la page cela me convient.
Je te remercie pour ton aide et vais de ce pas tester cela.
Bonne journée à toi.
J'ai un TS de plusieurs centaines de lignes, et j'ai une macro qui me permet d'atteindre une ligne sur la base de la saisie de la valeur de la colonne A.
Concernant le TS, c'est la structure des données dans la feuille. Ne maitrisant pas encore tous le tenants et aboutissants des TS, j'ai cette macro qui me permet de me positionner sur la cellule contenant le N° recherché.
En fait l'idée de la MFC est de mettre en couleur la ligne contenant dans la colonne A la valeur recherchée.
J'ai donc sélectionné les colonnes et lignes de mon TS et appliqué la MFC comme décrit dans mon message de départ.
Cela fonctionne correctement, mais en fait je ne savais pas que cette MFC s'applique à toute la ligne, et non pas aux seules colonnes sélectionnées au départ.
Donc pour l'instant la solution de crocrocro va m'aller.
Mais je vais quand même regarder ta solution de près.
Concernant le TS, c'est la structure des données dans la feuille. Ne maitrisant pas encore tous le tenants et aboutissants des TS, j'ai cette macro qui me permet de me positionner sur la cellule contenant le N° recherché.
Tu semblais tellement insister sur le fait que tu travaillais sur un TS, et vu que tu semblais vouloir apprendre des choses, je ne comprenais pas que tu travailles par rapport à la feuille et non par rapport à ce fameux TS.
J'ai donc sélectionné les colonnes et lignes de mon TS et appliqué la MFC comme décrit dans mon message de départ.
Cela fonctionne correctement, mais en fait je ne savais pas que cette MFC s'applique à toute la ligne, et non pas aux seules colonnes sélectionnées au départ.
@TooFatBoy ;
J'ai également pensé à une erreur dans la définition de la plage pour la MFC, et j'ai recommencé plusieurs fois.
Rien n'y fait.
Par contre cela n'est pas d'une importance capitale, donc la solution de crocrocro me convient et je pense en rester là.
Néanmoins merci de t'être penché sur mon problème.
Bonne journée.
en ajoutant une ligne Calculate à ta macro, tu as le beurre, l'argent du beurre ... mais évidemment seulement dans le cas où la sélection est faite par ta macro.
VB:
Public Sub atteindre()
Dim objet As String
Dim MaLigne As Integer
Dim Cel As Range
Dim Plage As Range
Dim k As Long
objet = InputBox("Entrez le N° de l'objet recherché (Juste les chiffres)", "Rechercher un Objet")
If objet = "" Then Exit Sub
objet = "OBJ" & objet
Set Plage = ActiveSheet.Range("A:A")
Set Cel = Plage.Find(objet)
If Not Cel Is Nothing Then
MaLigne = Cel.Row
Cells(MaLigne, 1).Select
End If
'pour placer la cellule courante en haut à gauche de la page
ActiveWindow.ScrollRow = ActiveCell.Row
ActiveSheet.Calculate
End Sub
EDIT : Pour résoudre ton problème de sélection, il faut corriger ta formule de MFC comme suit pour que la correspondance se fasse sur la ligne et la colonne :