XL 2019 Récupération de la dernière valeur d'un tableau

jui42

XLDnaute Junior
Bonjour,
J'ai un programme VBA me permettant de récuperer la valeur d'une cellule et de chercher toutes les cellules correspondantes dans une feuille.
La recherche peut se faire sur toute la feuille mais je la restreint uniquement à la colonne A. J'aimerais pouvoir, une fois que la recherche est terminé, recupérer l'adresse de la dernière cellule trouvé. Je sais que c'est possible mais il faut alors peut-être changer la structure de ma fonction de recherche ?

Merci de votre temps,
VB:
       Dim kadres As String
        Dim kam As Variant
        Dim dataArea As Range
        
        Dim p_trouve As String
        Dim trouve As Range, tot As Range
        Dim maplaj As Range, d_trouve As Range
        Dim kk As Range
      
        Set maplaj = ActiveSheet.Range("A1:A7")
      
        
      
        
        Set dataArea = maplaj.Range("A2")  ' Voir la doc microsoft sur la manipulation de la propriété Range.Value
        kam = dataArea.Value
        
        kadres = dataArea.Address
        MsgBox (kadres)
        

        
        Set d_trouve = maplaj.Cells(maplaj.Cells.Count)
        'MsgBox (d_trouve.Address)
        Set trouve = maplaj.Find(what:=kam, LookAt:=xlWhole)
        If Not trouve Is Nothing Then
            p_trouve = trouve.Address
                    
        Else
            GoTo NothingFound
        End If
                
        Set tot = trouve
                
                
        Do Until trouve Is Nothing
            Set trouve = maplaj.FindNext(After:=trouve)
            Set tot = Union(tot, trouve)
                    
                    
            If trouve.Address = p_trouve Then Exit Do
        Loop
        
        tot.Select
        Dim DerniereLigneUtilisee As Range
        
        
        
        Set DerniereLigneUtilisee = Range("A" & Rows.Count).End(xlUp).Rows
                End If

    
    Exit Sub
NothingFound:
    
    MsgBox ("Aucune valeur " & "        'a été trouvé. Veuillez réessayer")

    
End Sub
 

Pièces jointes

  • 6.B27.xlsm
    16.8 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour jui42, le forum,

Votre fichier en retour avec le code modifié comme ceci :
VB:
        Do
            Set trouve = maplaj.FindNext(After:=trouve)
            Set tot = Union(tot, trouve)
            If trouve.Address = p_trouve Then
                Dim dercel As Range
                Set dercel = tot.Find(kam, SearchDirection:=xlPrevious)
                Exit Do
            End If
        Loop
        
        tot.Select
        MsgBox "Dernière cellule trouvée = " & dercel.Address(0, 0)
A+
 

Pièces jointes

  • 6.B27.xlsm
    25.6 KB · Affichages: 2
Dernière édition:

job75

XLDnaute Barbatruc
Une autre solution, sans boucle :
VB:
Sub a()
    Dim plage As Range, premcel As Range, dercel As Range
    Set plage = Range("A2:A7")
    Set premcel = plage(1)
    MsgBox "Première cellule = " & premcel.Address(0, 0) & vbLf & "Recherche de " & premcel
    Application.ScreenUpdating = False
    plage.Insert xlToRight 'insère une colonne auxiliaire
    plage.Columns(0) = "=1/(""""&RC[1]=""" & premcel & """)"
    plage.Columns(0).SpecialCells(xlCellTypeFormulas, 1).Select 'formules renvoyant un nombre
    plage.Columns(0).Delete xlToLeft 'supprime la colonne auxiliaire
    Application.ScreenUpdating = True
    Set dercel = Selection.Find(premcel, , xlValues, xlWhole, , xlPrevious)
    MsgBox "Dernière cellule = " & dercel.Address(0, 0)
End Sub
 

Pièces jointes

  • 6.B27(1).xlsm
    26.6 KB · Affichages: 1

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
302 236
Messages
2 001 688
Membres
215 256
dernier inscrit
Adso