Microsoft 365 Pointer vers une Ligne/Case selon une sélection

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magnio

XLDnaute Nouveau
Bonjour à tous,

Meilleurs vœux à tous. 🙂

Ci-joint un fichier Test, le but est de "pointer" et se déplacer dans le fichier à la Ligne/Case selon la valeur de la cellule D3 dès lors que l'on clic sur le bouton OK.
Pour ce fichier Test, il faut sélectionner la cellule et saisir manuellement la donnée, mais dans le fichier définitif cela se fera via une ListBox.
J'ai une erreur "d'incompatibilité de type" alors que j'avais déjà utilisé ce code dans un ancien fichier sans plantage.

Le mieux serait que la maccro pointe vers la case en Colonne I mais comme VBA n'aiment pas les cellules fusionnées, j'ai ajouté les valeurs en H. (Le fichier professionnel sera certainement purgé de toutes ces fusions un jour, mais chaque chose en son temps ^^).

D'avance merci pour ceux qui prendront le temps de corriger/modifier ce projet.
 

Pièces jointes

Solution
Bonjour,
En PJ une solution qui se passe du bouton. Il suffit de choisir une valeur en D3 pour y aller automatiquement, en utilisant :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [D3]) Is Nothing Then
        Dim Ligne%
        Ligne = Application.Match(Target, ActiveSheet.Columns(8), 0)
        Application.Goto Cells(Ligne, 1), True
    End If
Fin:
End Sub
+ une MFC pour mieux repérer la ligne.
Bonjour Magnio,
Qu'appelez vous "Enr" ?
Ce n'est ni une cellule appelée, ni une variable.
Zut, comme le fichier a été simplifié dans cette version TEST, c'est un résidu de code qui devait normalement être une variable dans laquelle la valeur du ListBox est "Enregistrée". Je l'avais modifié par la variable "Ligne" dans l'exemple mais je ne suis pas allé au bout de mes modifications.

Re,
Peut être avec :
VB:
Ligne = Application.Match([D3], ActiveSheet.Columns(8), 0)
On selectionne la cellule A57 car la cellule H57 contient la chaine qui est en D3.
NB: J'ai mis une liste déroulante en D3, cela me semble plus ergonomique.
Pas d'importance pour la cellule où l'on pointe, l'intérêt est vraiment d'être sur la bonne ligne.
Oui une liste est et sera plus confortable et pratique, c'est prévu dans le fichier final que je concocte. Je ne voulais pas trop en mettre dans ce fichier TEST mais merci de ton ajout.

En tout cas, ça fonctionne et c'est l'essentiel. Merci à toi. 🙂
 
Bonjour,
En PJ une solution qui se passe du bouton. Il suffit de choisir une valeur en D3 pour y aller automatiquement, en utilisant :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [D3]) Is Nothing Then
        Dim Ligne%
        Ligne = Application.Match(Target, ActiveSheet.Columns(8), 0)
        Application.Goto Cells(Ligne, 1), True
    End If
Fin:
End Sub
+ une MFC pour mieux repérer la ligne.
 

Pièces jointes

Bonjour Magnio, sylvanu,

Les cellules fusionnées en colonne I ne posent aucun problème, ce sont elles qu'il faut sélectionner :

VB:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$3" Or [D3] = "" Then Exit Sub
Cells.Find([D3], [D3], xlValues, xlWhole).Select
ActiveWindow.ScrollRow = ActiveCell.Row 'positionne la ligne de la cellule active
End Sub
A+
 

Pièces jointes

Dernière édition:
Bonjour,
En PJ une solution qui se passe du bouton. Il suffit de choisir une valeur en D3 pour y aller automatiquement, en utilisant :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [D3]) Is Nothing Then
        Dim Ligne%
        Ligne = Application.Match(Target, ActiveSheet.Columns(8), 0)
        Application.Goto Cells(Ligne, 1), True
    End If
Fin:
End Sub
+ une MFC pour mieux repérer la ligne.
Cela fonctionne aussi comme ça, je retiens l'idée de la MFC qui ajoute un petit effet sympa. 🙂

Bonjour Magnio, sylvanu,

Les cellules fusionnées en colonne I ne posent aucun problème, ce sont elles qu'il faut sélectionner :

VB:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$3" Or [D3] = "" Then Exit Sub
Cells.Find([D3], [D3], xlValues, xlWhole).Select
ActiveWindow.ScrollRow = ActiveCell.Row 'positionne la ligne de la cellule active
End Sub
A+
Bonjour Job, intéressant de savoir que cela fonctionne avec une cellule fusionnée. Je vais me garder ce bout de code car ça servira sûrement un jour. Merci à toi aussi. 🙂
 
A votre place j'utiliserais ce "bout de code" maintenant car c'est la solution la plus logique.
Et bien figure toi que c'est ce que j'ai proposé hier juste avant de partir du boulot et qu'à l'unanimité mes collègues ont choisi cette solution. Ce qui correspond de plus à mon idée de base, et me rassure que ma vision initiale du projet partait sur la bonne voie. =)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
817
Retour