si sa tien qu'à moi j'aurai changer toute la boucle "for Z" (car je ne m'y connait pas du tout sur les boucle for avec les lettre) et le remplacer par :
for z = 5 to 67
If Range("D2").Value = 1 And Range("D3").Value = p Then
Sheets("Base de donnée").Select
h = Split(Columns(z).Address(ColumnAbsolute:=False), ":")(1)
Range(h&3).PasteSpecial Paste:=xlPasteValues
ElseIf Range("D2").Value = 2 And Range("D3").Value = p Then
Sheets("Base de donnée").Select
h = Split(Columns(z).Address(ColumnAbsolute:=False), ":")(1)
Range(h& a).PasteSpecial Paste:=xlPasteValues
ElseIf Range("D2").Value = 3 And Range("D3").Value = p Then
Sheets("Base de donnée").Select
h = Split(Columns(z).Address(ColumnAbsolute:=False), ":")(1)
Range(h& b).PasteSpecial Paste:=xlPasteValues
ElseIf Range("D2").Value = 4 And Range("D3").Value = p Then
Sheets("Base de donnée").Select
h = Split(Columns(z).Address(ColumnAbsolute:=False), ":")(1)
Range(h&3).PasteSpecial Paste:=xlPasteValues
End If
Next Z
ps : j'ai reprit le code de dan et j'ai apport quelque modification