Bonjour CARREAU,
Un code à adapter et à tester sur ton fichier réel :
Sub test()
Dim f As Workbook, WbkSource As Workbook
Set f = ThisWorkbook 'classeur maitre
Wbk = "C:\Dossier\MonClasseurDeQuestionReponse.xls" 'fichier à adapter
Workbooks.Open Wbk
Set WbkSource = ActiveWorkbook
f.Sheets("Questionsg").Range("B2:B" & Rows.Count).ClearContents
nbQuestParOnglet = Application.InputBox("Prendre combien de questions par onglet ?", Type:=1)
For Each sht In Array("Pression") 'mettre ici les feuilles contenant les questions/réponses sous la forme ("Feuil1", "Feuil2")
f.Sheets("temp").Range("A:K").ClearContents
nbQuest = Application.CountA(WbkSource.Sheets(sht).Columns(1))
limite = Application.Min(nbQuestParOnglet, nbQuest)
For i = 1 To limite
Do
Randomize
NumQuestion = Int((nbQuest) * Rnd + 1)
Set c = f.Sheets("temp").Columns(1).Find(NumQuestion, LookIn:=xlValues, lookat:=xlWhole)
Loop While Not c Is Nothing And Application.CountA(f.Sheets("temp").Columns(1)) < limite
With f.Sheets("temp").Range("A" & Rows.Count).End(xlUp).Offset(1)
.Value = NumQuestion
.Offset(, 1).Resize(, 10).Value = WbkSource.Sheets(sht).Range("B" & NumQuestion + 1).Resize(, 10).Value
End With
Next i
f.Sheets("Questionsg").Range("B" & Rows.Count).End(xlUp).Offset(1).Resize(nbQuestParOnglet, 10).Value = _
f.Sheets("temp").Range("B2").Resize(nbQuestParOnglet, 10).Value
Next sht
WbkSource.Close False
End Sub
Edit : tu dois créer au préalable une feuille appelée temp