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 SubMerci 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) ThenMerci , 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) ThenIndice : 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
Un grand Merci
ca fonctionne parfaitement