Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 comment se positionner directement sur une ligne commençant par une lettre

Aphrodyte

XLDnaute Nouveau
Bonjour,
Voilà, je suis perdue avec un tableau comportant des milliers de lignes.
Je dois faire défiler tout mon tableau pour trouver des lignes recherchées, et c'est très long.
Je voudrais juste pouvoir me positionner directement sur la 1ère ligne du tableau "commençant par une lettre donnée", je gagnerai un temps fou (sans avoir à cliquer sur pleins d'onglets ou de boutons) !
Je voudrais exactement faire ceci:
- Ouvrir mon tableau.
- Taper juste une lettre (qui correspond à la 1ère lettre des cellules de la colonne C (à partir de la ligne 3).
- Et directement, mon tableau se positionnerait sur la 1ère ligne correspondante.

Ca doit vous paraître hyper simple à vous tous, mais moi je galère et je n'y arrive pas.
Si quelqu'un pouvait m'aider, ça serait génial.

Merci d'avance et bonne journée.
 
Solution
@Phil69970 pourquoi utiliser une boucle sur des cellules, ça prend beaucoup de temps sur un grand tableau.

Avec la fonction Match (EQUIV) l'exécution est immédiate :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Variant
With Range("C3")
    If Application.Intersect(Target, .Cells) Is Nothing Or Target(1) = "" Then Exit Sub
    i = Application.Match(.Value & "*", .Cells(2).Resize(Rows.Count - .Row), 0)
    If IsError(i) Then MsgBox "Aucune ligne ne correspond", vbCritical, "Problèeme !" Else .Cells(i + 1).Select
End With
End Sub
A+

job75

XLDnaute Barbatruc
Bonjour à tous,
@job75
sur le fichier de la demoiselle ton truc ne fonctionne pas ,je n'ai pas d'explication car ça devrait j'ai pourtant adapté(C1/C3)
Si l'on utilise C3 au lieu de C1 il ne faut pas utiliser EntireColumn mais ceci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
With [C3] 'à adapter
    If .Value <> "" Then .Resize(Rows.Count - .Row + 1).AutoFilter 1, .Value & "*" Else If FilterMode Then ShowAllData
    If Target.Address = .Address Then .Select
End With
End Sub
A+
 

Pièces jointes

  • Filtre(2).xlsm
    21.7 KB · Affichages: 2

Aphrodyte

XLDnaute Nouveau
Bonjour,
Merci encore à vous tous pour vos messages et votre aide.
Je vais continuer d'utiliser la méthode de @Phil69970 car avec son fichier "Choix lettre V4.xlsm" ça fonctionne maintenant exactement comme je voulais.
Merci du fond du coeur, sans vous et votre super communauté, des tas de gens comme moi seraient vraiment très embêtés. Vous êtes trop forts.......
 

Aphrodyte

XLDnaute Nouveau
@Phil69970 , je t'embête une dernière fois:
Si je ne veux pas que la fenêtre "Problèème" s'ouvre quand aucune ligne ne correspond, je supprime quoi dans le code ?
(en fait si je clique sur la cellule sans mettre aucune lettre par exemple, je préfèrerai que ça n'ouvre pas cette fenêtre, juste que ça ne fasse...... rien !)
 

job75

XLDnaute Barbatruc
@Phil69970 pourquoi utiliser une boucle sur des cellules, ça prend beaucoup de temps sur un grand tableau.

Avec la fonction Match (EQUIV) l'exécution est immédiate :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Variant
With Range("C3")
    If Application.Intersect(Target, .Cells) Is Nothing Or Target(1) = "" Then Exit Sub
    i = Application.Match(.Value & "*", .Cells(2).Resize(Rows.Count - .Row), 0)
    If IsError(i) Then MsgBox "Aucune ligne ne correspond", vbCritical, "Problèeme !" Else .Cells(i + 1).Select
End With
End Sub
A+
 

Pièces jointes

  • Choix lettre V5.xlsm
    21.5 KB · Affichages: 6

Aphrodyte

XLDnaute Nouveau
Merci beaucoup à toi aussi @job75 .
Le fichier "Choix lettre V5.xlsm" fait maintenant parfaitement ce que je souhaitais.
J'arrête donc de vous embêter avec mes problèmes.
J'essaye de régler mon dernier tout petit souci toute seule : j'y arrivais , j'y arriverais...

Merci encore et bonne journée.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…