Recherche dernière occurence d'une chaîne de caractère dans une feuille excel

Miguel973

XLDnaute Nouveau
Bonjour à tous,

voilà, j'ai un petit soucis j'ai un fichier excel contenant un tableau avec différents sigles qui sont présent à plusieurs reprises dans une feuille excel.
Je souhaiterai pouvoir obtenir la dernière occurence de chacun de mes sigles afin de récupérer la valeur de la cellule juste à côté du dernier sigle.
Je m'explique, dans mon fichier j'ai par exemple le sigle ZIN qui apparaît à trois reprises, le dernier sigle ZIN représente la somme des deux premiers. je voudrais donc récupérer la valeur de la cellule C3. Qui sera par la suite copier dans un autre fichier.
Je bute à ce niveau là :s

Si quelqu'un pourrait m'aiguiller, ou m'apporter une aide, je lui en serais vraiment reconnaissant.

En espérant m'être bien fait comprendre,

Miguel

Vous trouverez en pièce jointe le fichier
 

Pièces jointes

  • Forum.xls
    36.5 KB · Affichages: 165
  • Forum.xls
    36.5 KB · Affichages: 172
  • Forum.xls
    36.5 KB · Affichages: 171

Miguel973

XLDnaute Nouveau
Re : Recherche dernière occurence d'une chaîne de caractère dans une feuille excel

Bonjour

en fait, tu cherches à récupérer les lignes Total
as tu regardé les filtres ?

Oui et non, car tout les sigles n'ont pas de total. Donc l'option des filtres n'est pas envisageable :s:(

J'avais pensé à la méthode find mais je n'arrive pas très bien à la mettre en place :s
 

laetitia90

XLDnaute Barbatruc
Re : Recherche dernière occurence d'une chaîne de caractère dans une feuille excel

bonjour Miguel973 wilfried_85
pas simple!! si tu peus deja faire quelque chose en copiant les uniques en colonne G

Code:
Sub es()
Dim t As Variant, t2() As Variant, m As Object, x As Long, i As Long, k As Long
On Error Resume Next
Application.ScreenUpdating = False
Set m = CreateObject("Scripting.Dictionary")
t = Range("a1:c" & Cells(Rows.Count, 1).End(xlUp).Row)
 x = 1
For i = UBound(t) To 0 Step -1
If Not m.Exists(t(i, 1)) And t(i, 1) <> "" Then
m.Add t(i, 1), t(i, 1)
ReDim Preserve t2(1 To 3, 1 To x)
For k = 1 To 3
t2(k, x) = t(i, k)
Next k: x = x + 1: End If: Next i
Range("g2").Resize(UBound(t2, 2), UBound(t2, 1)) = Application.Transpose(t2)
Erase t, t2
End Sub
 

Miguel973

XLDnaute Nouveau
Re : Recherche dernière occurence d'une chaîne de caractère dans une feuille excel

bonjour Miguel973 wilfried_85
pas simple!! si tu peus deja faire quelque chose en copiant les uniques en colonne G

Code:
Sub es()
Dim t As Variant, t2() As Variant, m As Object, x As Long, i As Long, k As Long
On Error Resume Next
Application.ScreenUpdating = False
Set m = CreateObject("Scripting.Dictionary")
t = Range("a1:c" & Cells(Rows.Count, 1).End(xlUp).Row)
 x = 1
For i = UBound(t) To 0 Step -1
If Not m.Exists(t(i, 1)) And t(i, 1) <> "" Then
m.Add t(i, 1), t(i, 1)
ReDim Preserve t2(1 To 3, 1 To x)
For k = 1 To 3
t2(k, x) = t(i, k)
Next k: x = x + 1: End If: Next i
Range("g2").Resize(UBound(t2, 2), UBound(t2, 1)) = Application.Transpose(t2)
Erase t, t2
End Sub

Bonjour Laetitia90 et merci pour ta réponse.

Je me suis dépatouillé avec ça

Code:
With Worksheets(2).Range("A1:A300")
    Set c = .Find(What:=donnée, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns)
If Not c Is Nothing Then
    row_number1 = c.Row
'boucle pour trouver la dernière occurence
         Do
         row_number2 = c.Row
         Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Row <> row_number1
End If
End With

Il me cherche la première occurence puis la dernière :). Et ça marche bien, par contre maintenant je rencontre un autre soucis, c'est que je n'arrive pas à récupérer la valeur de ma dernière occurence et la copier dans une autre feuille excel d'un autre classeur :(...
Malgré le fait que je réactive la feuille dans laquelle je veux effectuer la copie. Au départ lorsque je fais l'action de copier, ma copie contient bien la valeur désirée, mais lorsque je la colle dans l'autre feuille cette valeur est à 0 :s... Je comprends pas pourquoi elle perd la valeur en cours de route.
Si quelqu'un aurait une suggestion, je suis preneur.

Encore merci à tous :)

Miguel
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom