Code VBA pour bouton de cde suivant précedent avec FINDNEXT

Bonjour a tous et Bonne Année

Je fais appelle a la communauté car je bloque sur la programmation de bouton de mon UserForm (Résultat) qui me permettrait de passer de la première valeur trouvée à la suivante et de revenir sur la précédente

Pareil avec le bouton Exit, je souhaiterais complétement sortir du Module (RechercheOc)

Ceci en s'appuyant sur le module RechercheOc que j'ai écris ci dessous

Sub RechercheOc()
Dim Ville As String, Villes As String, Pays As String, nbVille As Integer
Dim F As Worksheet
Dim R As Range, c As Range, i As Integer, j As Integer, Idoccurence As Integer
Dim FirstFound As String, nbvillemsg As String, MsgAlerte As String

Ville = Recherche.TextBox1.Value

nbVille = 0
For i = 2 To Sheets("Fiches").Range("B20").End(xlUp).Row
j = i + 1
If Sheets("Fiches").Cells(i, 2) = Ville Then
nbVille = nbVille + 1
End If
Next i

If nbVille > 1 Then
nbvillemsg = MsgBox("Attention cette Valeur " & Ville & " apparait " & nbVille & " fois", vbInformation, "Information importante")
End If

Set F = Worksheets("Fiches")

With F.Range("B20:B2")
    Set R = .Find(What:=Ville, LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext)
        If Not (R Is Nothing) Then
            FirstFound = R.Address
        '   Do
             Idoccurence = Idoccurence + 1
             Resultat.Label11.Caption = Idoccurence & "/" & nbVille
             Villes = R.Offset(0, 1).Value
             Resultat.Label2.Caption = "Ville : " & Villes
             Pays = R.Offset(0, 2).Value
             Resultat.Label4.Caption = "Pays : " & Pays
             Resultat.Show

' recherche valeur suivant
      If Resultat.CommandButton2 = "True" Then
        Ville = Recherche.TextBox1.Value
     Set R = .Find(What:=Ville, LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext)
        If Not (R Is Nothing) Then
            FirstFound = R.Address
           Do
             Idoccurence = Idoccurence + 1
             Resultat.Label11.Caption = Idoccurence & "/" & nbVille
             Villes = R.Offset(0, 1).Value
             Resultat.Label2.Caption = "Ville : " & Villes
             Pays = R.Offset(0, 2).Value
             Resultat.Label4.Caption = "Pays : " & Pays
             Resultat.Show

           Set R = .FindNext(After:=R)

          Loop While R.Address <> FirstFound
         End If
        End If        

' recherche valeur précédente
        If Resultat.CommandButton3 = "True" Then
          Ville = Recherche.TextBox1.Value
     Set R = .Find(What:=Ville, LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlPrevious)
        If Not (R Is Nothing) Then
            LastFound = R.Address
           Do
             Idoccurence = nbVille + 1
             Resultat.Label11.Caption = Idoccurence & "/" & nbVille
             Villes = R.Offset(0, 1).Value
             Resultat.Label2.Caption = "Ville : " & Villes
             Pays = R.Offset(0, 2).Value
             Resultat.Label4.Caption = "Pays : " & Pays
             Resultat.Show

           Set R = .FindNext(After:=R)

          Loop While R.Address <> LastFound
          End If
        End If

     If Resultat.CommandButton1 = "True" Then Exit Sub

    Else
            MsgBox ("Ce type n'est pas répertorié")

End If
End With

End Sub

Merci a tous pour votre aide, je joins aussi le fichier ça peut toujours servir a mieux comprendre

Je reste dispo pour toutes informations supplémentaires qui pourraient vous être utile pour m'aider.

Merci

Niko

Bonsoir et bienvenu(e)

Bonne Année

Une autre manière de faire

Bonjour Banzai64,

Super un grand merci pour le temps que tu m'as accordé. ca marche super !!

Si je peux abuser, pourrais tu juste m'expliquer la fonction des lignes ci dessous

 ReDim Preserve Tablo(Indice)

Et

 If Indice < UBound(Tablo) Then

Merci , oui je débute

Bonne journée

NiKo

Bonjour

ReDim Preserve Tablo(Indice)

Redimensionne le tableau sans perdre les informations qu'il contient déjà

En y (re)pensant on pourrait s'en passer car on connait (avec Nb) le nombre de fois qu'il y a la donnée recherchée il suffit de dimensionner le tableau directement

      ReDim Tablo(Nb - 1)

Mais bon, pas gênant du tout

If Indice < UBound(Tablo) Then

Indice : indique quel élément du tableau (Tablo) on affiche

UBound(Tablo) : Indique le nombre d'élément dans le tableau (Tablo). Dans ce cas on va de 0 à ..... UBound(Tablo)

On teste si on n'a pas atteint le haut du tableau (Tablo)

Bonjour Banzai64

Je bloque a nouveau sur un code

je cherche a afficher l'ensemble des informations du tableau excel dans un userform puis a passer a l'enregistrement suivant ou précedent avec les boutons de navigation.

je voudrais vraiment faire cela en passant par la méthode de création de tableau que tu as utiliser dans la précédente macro, mais je n'y parviens pas.

un grand merci d'avance pour ton aide précieuse

NiKo

84testfiche1.xlsm (29.42 Ko)

Bonjour

A vérifier

Un grand Merci

ca fonctionne parfaitement

Rechercher des sujets similaires à "code vba bouton cde suivant precedent findnext"