Recherche verticale inversée ?

mic2lam

XLDnaute Nouveau
Bonjour,

Je bloque un peu sur ce sujet...

J ai un tableau avec beaucoup de ligne qui s'incrémente quotidiennement avec en première colonne la date du jour, je souhaiterais que quand la même occurrence sur la ligne survient il me donne le résultat de la toute première occurrence donc en partant vers le bas du tableau.

j'arrive pas à le transcrire en vb

Merci pour votre aide

Je joins un fichier pour exemple

Cordialement,
 

Pièces jointes

  • Classeur1.xls
    13.5 KB · Affichages: 45
  • Classeur1.xls
    13.5 KB · Affichages: 44
  • Classeur1.xls
    13.5 KB · Affichages: 45

mic2lam

XLDnaute Nouveau
Re : Recherche verticale inversée ?

Bonjour,

J incrémente les lignes de mon tableau par le haut quand je rajoute une ligne avec la date du jour en B5 & le nom C5 je voudrais également qu il me recherche en colonne D5 la première date à laquelle ce nom est dejà ressorti.

Je crois que c'est plus clair là^^ En me relisant en effet ma question était un chouillat tarabiscotée :p
 

ERIC S

XLDnaute Barbatruc
Re : Recherche verticale inversée ?

Bonjour

sans chercher à optimiser une recherche, je pense que l'exemple fourni par l'aide sur find doit être une piste

Code:
With Worksheets(1).Range("a1:a500")    
Set c = .Find(2, lookin:=xlValues)    
If Not c Is Nothing Then        
firstAddress = c.Address        
Do            
c.Value = 5            
Set c = .FindNext(c)        
Loop While Not c Is Nothing And c.Address <> firstAddress    
End If
End With
 

hbenalia

XLDnaute Occasionnel
Re : Recherche verticale inversée ?

Bonjour à tous,

Peut-être une solution dans le fichier attaché (au cas ou la demande est bien comprise) avec la formule matricielle suivante:
Code:
=SI(NB.SI($C$5:$C$18;C5)>1;MIN(SI($C$5:$C$18=C5;$B$5:$B$18));B5)
qui sera recopiée vers le bas...

Cordialement
 

Pièces jointes

  • Classeur1.xls
    25 KB · Affichages: 67
  • Classeur1.xls
    25 KB · Affichages: 68
  • Classeur1.xls
    25 KB · Affichages: 72

ERIC S

XLDnaute Barbatruc
Re : Recherche verticale inversée ?

Re

autre possibilité, toujours VBA

Code:
For i = Range("C" & Rows.Count).End(xlUp).Row To 5 Step -1
    If Range("C" & i).Value = Range("C5").Value Then
        Range("D5").Value = Range("B" & i).Value
        Exit Sub
    End If
Next

retour sur l'utilisation de find : il suffit de chercher la première occurence et si elle existe de prendre la valeur en D

Code:
Range("D5").Value = Range("B5").Value
derligne = Range("C" & Rows.Count).End(xlUp).Row
If derligne < 6 Then Exit Sub
With Range("C6:c" & derligne)
    Set c = .Find(Range("C5"), LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
        Range("D5").Value = c.Offset(0, 1).Value
    End If
End With
 
Dernière édition:

mic2lam

XLDnaute Nouveau
Re : Recherche verticale inversée ?

Bonjour,

Merci pour ces quelques pistes à exploiter, je vais essayer d'utiliser la commande Find.

Quoi qu'il en soit votre aide m'a été bien précieuse, je débute le vb depuis deux semaines...

Cordialement,
 

Discussions similaires

Réponses
3
Affichages
263
Réponses
2
Affichages
150

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji