Bonjour le forum
Je tourne en rond, je cherche à extraire une ligne x d'un tableau et la transférer vers un autre classeur. J'aurais pu le faire par une boucle For mais pour le coup je cherche à faire quelque chose de plus "performant".
Ma question est donc, comment transférer en un coup une ligne x (définie par une variable) d'un tableau vers une feuille ?
(Voir mon approche actuel sur la ligne en commentaire dans le code ci-dessous)
J'ai essayé aussi de m'inspirer de cette ligne, mais sans succès :/
Sheets("Result").Range("A2").Resize(, nbcol) = Application.Index(Me.ListBox1.List, Me.ListBox1.ListIndex + 1)
Mon approche la plus concluante est :
FeuilExt.Range("A" & Max).Resize(, UBound(Tbl)) = Application.Index(BD, Cel.Row)
Le soucis est que j'obtient un #REF
Par avance, merci de l’intérêt porté au sujet
Sub Extraction()
Dim WB1 As Workbook, WB2 As Workbook, FeuilExt As Worksheet, BD As Range
Dim Cel As Object
Dim cpt As Integer, Max As Integer
Dim Trouve, Tbl()
Set WB1 = ThisWorkbook
Set BD = WB1.Worksheets("BD").Range("Tableau1")
Set WB2 = Workbooks.Add
Set FeuilExt = WB2.Worksheets(1)
Tbl = BD.Value
Trouve = InputBox("Tappez un mot ou une suite de lettres correspondant à la recherche :", "Recherche intuitive")
If Trouve = "" Then Exit Sub
cpt = 0
Max = FeuilExt.Range("A" & FeuilExt.Rows.Count).End(xlUp).Row + 2
FeuilExt.Range("A" & Max) = "Résultat(s) pour " & Trouve
For Each Cel In BD
If UCase(Cel) Like "*" & UCase(Trouve) & "*" Then
cpt = cpt + 1
Max = FeuilExt.Range("A" & FeuilExt.Rows.Count).End(xlUp).Row + 1
'FeuilExt.Range("A" & Max).Resize(, UBound(Tbl)) = Application.Index(Tbl, Tbl(Cel.Row, 1))
End If
Next Cel
MsgBox "Extraction terminée, " & cpt & " résultat(s)"
End Sub