XL 2013 VBA recherche V

spike29

XLDnaute Occasionnel
Bonjour,

J'ai un code VBA de rechercheV qui m'a généreusement été donné ici même sur ce forum.
Il fonctionne parfaitement.
Seulement j'aimerai enlever les #N/A qui peuvent parfois remonter.

le code :

VB:
Sub Test()
Dim Derlig As String
Derlig = Worksheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row

Range("H26").FormulaLocal = "=RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";2;FAUX)"
Range("I26").FormulaLocal = "=RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";3;FAUX)"
Range("J26").FormulaLocal = "=RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";4;FAUX)"

Range("H26:J26").NumberFormat = "h:mm"
Range("H26:J26").AutoFill Destination:=Range("H26:J" & Derlig), Type:=xlFillDefault
Range("H26").Select

End Sub

Merci d'avance pour votre aide.

Bonne fin de journée à toutes et à tous :)
 
Solution
Bonjour Spike,
Essayez :
VB:
Sub Test()
Dim Derlig As String
Derlig = Worksheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row

Range("H26").FormulaLocal = "=SIERREUR(RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";2;FAUX);"""")"
Range("I26").FormulaLocal = "=SIERREUR(RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";3;FAUX);"""")"
Range("J26").FormulaLocal = "=SIERREUR(RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";4;FAUX);"""")"

Range("H26:J26").NumberFormat = "h:mm"
Range("H26:J26").AutoFill Destination:=Range("H26:J" & Derlig), Type:=xlFillDefault
Range("H26").Select

End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Spike,
Essayez :
VB:
Sub Test()
Dim Derlig As String
Derlig = Worksheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row

Range("H26").FormulaLocal = "=SIERREUR(RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";2;FAUX);"""")"
Range("I26").FormulaLocal = "=SIERREUR(RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";3;FAUX);"""")"
Range("J26").FormulaLocal = "=SIERREUR(RECHERCHEV($C26;Data!$B$14:$H$" & Derlig & ";4;FAUX);"""")"

Range("H26:J26").NumberFormat = "h:mm"
Range("H26:J26").AutoFill Destination:=Range("H26:J" & Derlig), Type:=xlFillDefault
Range("H26").Select

End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Si j'étais moi, je ferai du FillDown pour du Feel Good ;)
Mais étant actuellement sur Excel 2003, mon test ne peut se faire correctement.
Néanmoins, je suppute que cela doit fonctionner sur Excel 2013.
Vous confirmez?
VB:
Sub Test_Bis()
Dim Derlig&, rng As Range
Derlig = Worksheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
Sheets("Data").Range("B14:H" & Derlig).Name = "base"
Set rng = Range("H26:J26")
rng.FormulaLocal = "=SIERREUR(RECHERCHEV($C26;" & [base].Address & ";COLONNE()-6;FAUX);"""")"
rng.NumberFormat = "h:mm"
Range("H26:J" & Derlig).FillDown
End Sub
 

spike29

XLDnaute Occasionnel
Merci pour ton coup de pouce Staple sur le sujet.

J'ai copié ton code tel quel dans un module mais rien ne se passe chez moi.
Pourtant a vu d’œil il paraît très bien.
Le code de sylvanu fonctionne sans souci.
Bonne soirée à vous et encore merci pour votre aide toujours aussi rapide qu’efficace.
 

Staple1600

XLDnaute Barbatruc
Bonjour Sylvanu

J'ai également testé ton code à l'aveugle.
Et les formules sont insérées au même endroit avec ton code et le mien.
Mon souci était qu'avec Excel 2003, SIERREUR renvoie évidemment une "erreur"
D'où ma demande de test par mes pairs. ;)
 

Staple1600

XLDnaute Barbatruc
Re

En attendant le couvre-feu (et pour le fun)
VB:
Sub Test_Ter()
Dim Derlig&, form$, ule$, rng As Range
Derlig = Worksheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
Sheets("Data").Range("B14:H" & Derlig).Name = "base"
form = "=SIERREUR(RECHERCHEV($C26;": ule = ";COLONNE()-6;FAUX);"""")"
Set rng = Range("H26:J26")
rng.FormulaLocal = form & [base].Address & ule
rng.NumberFormat = "h:mm"
Range("H26:J" & Derlig).FillDown
End Sub
Fonctionne normalement
Mais je ne puis l'affirmer avec certitude, puisque SIERREUR n'est pas actuellement dans le pan de réalité qui est mien.
;)
 

Staple1600

XLDnaute Barbatruc
Re

Merci sylvanu, en sortant la rallonge, je viens de voir que j'avais une petite erreur (mais trés impactante)
Donc ceci fonctionne (même à l'aveugle ;))
Le RECHERCHEV ne rentre pas bredouille
VB:
Sub Test_Quattro()
Dim Derlig&, formule$, rng As Range
Derlig = Worksheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
Sheets("Data").Range("B14:H" & Derlig).Name = "base"
MsgBox [base].Parent.Name & "!" & [base].Address
formule = "RECHERCHEV($C26;" & [base].Parent.Name & "!" & [base].Address & ";COLONNE()-6;FAUX)"
Set rng = Range("H26:J26")
rng.FormulaLocal = "=SI(ESTNA(" & formule & ");"""";" & formule & ")"
rng.NumberFormat = "h:mm"
Range("H26:J" & Derlig).FillDown
End Sub
 

spike29

XLDnaute Occasionnel
Bonjour à tous les deux,

En PJ le fichier test avec vos deux codes respectifs.
Les deux fonctionnent parfaitement !

Ne reste plus qu'a vous remercier tous les deux pour ces échanges très productifs ! :)

Bonne journée à tous les deux et surtout bonne fêtes de fin d'année malgré le contexte... ^^
 

Pièces jointes

  • test2 V3 (1).xlsm
    27 KB · Affichages: 21

Staple1600

XLDnaute Barbatruc
Re

Une autresd façon de faire
(histoire de varier les plaisirs)
Tout en VBA
VB:
Private Sub Worksheet_Change(ByVal T As Range)
If T.Column = 3 Then
If T.Row > 25 Then
With Application
    .ScreenUpdating = False
    T(, 6) = .VLookup(T, [base], 2, 0)
    T(, 7) = .VLookup(T, [base], 3, 0)
    T(, 8) = .VLookup(T, [base], 4, 0)
    .ScreenUpdating = True
End With
End If
End If
End Sub
En partant du principe qu'il y a une saisie manuelle en colonne C de la feuille 1.
 

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 179
dernier inscrit
BERSEB50