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. 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
    1. 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
    2. 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
    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. 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
    5. 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
    6. 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. 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. 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