Positionner ligne adresse

Résolu
Bonjour,

Je sèche...
J'ai un fichier adresse et cherche les villes, que j'arrive à selectionner.

Cependant le voudrais que la premiere adresse trouvé s'affiche en ligne A2 de ma liste avec la suite.

Ex : je tape "Tou" mon fichier ce positionne en A2 sur le premier élément "Tou" trouvé.

Merci de vous pencher sur mon problème

Cordialement

https://www.cjoint.com/c/KLglfK1NiV6

9 réponses

  1. Contributeur
    Bonjour ,

    en masquant les lignes;

    En vba à mettre dans le module de la feuille Liste tout en haut:

    Option Explicit
    Dim nom As String
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("H3")) Is Nothing Then
    nom = Target.Value
    For_X_to_Next_Ligne
    End If
    End Sub
    Sub For_X_to_Next_Ligne()
    Dim FL1 As Worksheet, NoCol As Integer
    Dim NoLig As Long, Var As Variant
        Set FL1 = Worksheets("Liste")
        NoCol = 1 'lecture de la colonne A
        For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
            Var = FL1.Cells(NoLig, NoCol)
            If Var = nom Then
            Rows("2:" & NoLig - 1).EntireRow.Hidden = True 'masque lignes
            End If
        Next
        Set FL1 = Nothing
    End Sub
    Sub afficher() 'associer à un bouton ou raccourci clavier
    Cells.EntireRow.Hidden = False 'affiche lignes
    End Sub

    0
    1. Bonsoir,

      Bien reçu, j'ai fais un copie/collé dans un module activé par un bouton "Afficher"
      Cependant rien ne se passe
      La macro tourne et rien?

      Je suis novice en VBA

      Pour compléter mon explication j'avais trouver une solution par 2 lien Hypertexte

      En "I1"
      ADRESSE(EQUIV(H3;A2:A500;0)+1;1)

      En "J1"
      Lien qui me descendais cellule A1000

      En "H1"
      SI($H$3<>"";LIEN_HYPERTEXTE("#"&$I$1);$A$1)
      qui remontait sur la cellule recherchée

      J'ai chercher à lier les deux lien mais pas facile en VBA

      Merci de regarder mon problème que je souhaitait effectuer en un clic

      Je reste à ton écoute

      Je prends toutes solutions

      Merci
      A+
      0
      1. Re Bonsoir

        J'ai trouvé pour ta macro super je saisie ma recherche, je valide et on masque les éléments précédents
        donc je suis bien sur le premier élément trouvé.
        Mais,
        Pour revenir à l'ensemble des éléments ? je dois demander à Excel de m'afficher les éléments précédents.

        Celà répond partiellement car je dois pouvoiir consulter l'ensemble des du fichier.
        Merci de ta réponse
        A+
        0
        1. Encore moi,

          Si je tape une ville inconnue la macro boucle et plante ligne 855

          SI tu peux tester.

          Merci encore

          Bonne soirée
          0
          1. Contributeur
            Pour revenir à l'ensemble des éléments ?

            Sub afficher() 'associer à un bouton ou raccourci clavier
            Cells.EntireRow.Hidden = False 'affiche lignes
            End Sub


            Si je tape une ville inconnue la macro boucle et plante ligne 855


            modifier cette macro, comme ceci:

            Sub For_X_to_Next_Ligne()
            Dim FL1 As Worksheet, NoCol As Integer
            Dim NoLig As Long, Var As Variant
                Set FL1 = Worksheets("Liste")
                NoCol = 1 'lecture de la colonne A
                For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
                    Var = FL1.Cells(NoLig, NoCol)
                    If Var = nom Then
                    Rows("2:" & NoLig - 1).EntireRow.Hidden = True 'masque lignes
                    Else
                    MsgBox "Nom inconnu!", vbCritical, "Recherche"
                    Exit Sub
                    End If
                Next
                Set FL1 = Nothing
            End Sub


            @+
            0
        2. Super on avance
          Cependant systematique j'ai le message d'erreur
          un "X recherche inconnue"
          Alors que la recherche est valide
          0
          1. Contributeur
            Pour l'heure je ne vois pas. Supprimer la modification
            0
        3. Ok Pas de problème

          Passes une bonne soirée

          Merci encore de ton intervention

          Demain est un autre Jour

          Bye
          0
          1. Contributeur
            Essaie ceci:

            Sub For_X_to_Next_Ligne()
            Dim FL1 As Worksheet, NoCol As Integer
            Dim NoLig As Long, Var As Variant
                Set FL1 = Worksheets("Liste")
                NoCol = 1 'lecture de la colonne A
                On Error Resume Next
                For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
                    Var = FL1.Cells(NoLig, NoCol)
                    If Var = nom Then
                    Rows("2:" & NoLig - 1).EntireRow.Hidden = True 'masque lignes
                    End If
                Next
                Set FL1 = Nothing
            End Sub


            @+
            0
        4. Bonjour

          Tout fonction bien sauf si je tape une ville non connu

          La macro boucle... jusqu'a la igne 855
          0
          1. Contributeur
            comme ceci:

            Sub For_X_to_Next_Ligne()
            Dim FL1 As Worksheet, NoCol As Integer
            Dim NoLig As Long, Var As Variant
                Set FL1 = Worksheets("Liste")
                NoCol = 1 'lecture de la colonne A
                Application.ScreenUpdating = False
                On Error Resume Next
                For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
                    Var = FL1.Cells(NoLig, NoCol)
                    If Var = nom Then
                    Rows("2:" & NoLig - 1).EntireRow.Hidden = True 'masque lignes
                    If NoLig = 100 Then Exit For ' a adapter
                    End If
                Next
                Set FL1 = Nothing
                Application.ScreenUpdating = True
            End Sub


            a la place de 100, tu peux mettre la dernière ligne utilisée:

            https://excel-malin.com/tutoriels/vba-tutoriels/vba-trouver-la-derniere-cellule-utilisee/

            Dim derligne As Long
            derligne = Cells(Rows.Count, "A").End(xlUp).Row


            @+
            0
        5. Excuses-moi de te répondre si tard

          Sur une ville inconue

          La macro efface une centaine de ligne
          Un message de debogage
          Erreur d'executiion7
          Mémoire insuffisante
          Ligne
          nom = Target.Value

          De plus les lignes avant 100 ne sont pas affichées
          Je dois faire un "affiche"

          Avec ton nouveau Dim derligne.....
          le programme s'arret sur (x1Up)
          0
        6. Effectivement ça fonctionne
          Sur tes conseilles, je vois pour me repositionner sur la dernière cellule utilisé

          Je te remercie de ton travailles celà me fait gagner du temps

          Sur ce site je ne vos pas de coche "problème résolu"

          Bonne soirée

          Très cordialement

          AlainOt
          0