@GMB : votre fichier est top.
j'ai essayé de le transposé comme suit :
- changement de place du bouton : de base de données vers suivi budget;
- adaptation des en-têtes de colonnes à prendre en compte :
f.Range("A1:AV1").Copy Sheets("BDD").Range("A1")
- et là, je ne comprends ce que je dois changer dans votre code pour passer du seul résultat trouvé de l'exemple à la totalité :
Option Explicit
Dim f As Worksheet, fn As Worksheet, tablo(), tabloC, tabloR()
Dim i&, ln, j&, k&, n
Sub Extraire()
Set f = Sheets("Base de données")
tablo = Range("A1").CurrentRegion
tabloC = Sheets("Suivi budget").Range("A1").CurrentRegion.Resize(, 1)
Sheets.Add After:=ActiveSheet
On Error Resume Next
ActiveSheet.Name = "BDD"
If Err.Number <> 0 Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Sheets("BDD").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
End If
k = 0
For i = 2 To UBound(tablo, 1)
For ln = 2 To UBound(tabloC, 1)
If tablo(i, 3) = tabloC(ln, 1) Then
ReDim Preserve tabloR(1 To UBound(tablo, 2), 1 To k + 1)
For j = 1 To UBound(tablo, 2)
tabloR(j, k + 1) = tablo(i, j)
Next j
End If
Next ln
Next i
Sheets("BDD").Range("A2").Resize(UBound(tabloR, 2), UBound(tablo, 2)) = Application.Transpose(tabloR)
f.Range("A1:AV1").Copy Sheets("BDD").Range("A1")
Sheets("BDD").Cells.HorizontalAlignment = xlCenter
Sheets("BDD").Cells.EntireColumn.AutoFit
Sheets("BDD").Activate
End Sub