Bonjour
J’utilise feuil "caisse " comme un formulaire pour saisir des montants et après je les archiver dans un autre feuil " table " et je vide le formulaire
au début j'ai commencé par ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub TEST()
'les cellules de la colonne b
Sheets("table").Range("a1").End(xlDown).Offset(1, 0) = Sheets("caisse").Range("b1").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 1) = Sheets("caisse").Range("b2").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 2) = Sheets("caisse").Range("b4").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 3) = Sheets("caisse").Range("b5").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 4) = Sheets("caisse").Range("b7").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 5) = Sheets("caisse").Range("b8").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 6) = Sheets("caisse").Range("b11").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 7) = Sheets("caisse").Range("b12").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 8) = Sheets("caisse").Range("b13").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 9) = Sheets("caisse").Range("b14").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 10) = Sheets("caisse").Range("b16").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 11) = Sheets("caisse").Range("b21").Value
'les cellules de la colonne c
Sheets("table").Range("a1").End(xlDown).Offset(0, 12) = Sheets("caisse").Range("c5").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 13) = Sheets("caisse").Range("c9").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 14) = Sheets("caisse").Range("c11").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 15) = Sheets("caisse").Range("c12").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 16) = Sheets("caisse").Range("c13").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 18) = Sheets("caisse").Range("c16").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 19) = Sheets("caisse").Range("c21").Value
'les cellules de la colonne d
Sheets("table").Range("a1").End(xlDown).Offset(0, 20) = Sheets("caisse").Range("d4").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 21) = Sheets("caisse").Range("d11").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 22) = Sheets("caisse").Range("d15").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 23) = Sheets("caisse").Range("d18").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 24) = Sheets("caisse").Range("d19").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 25) = Sheets("caisse").Range("d20").Value
Sheets("table").Range("a1").End(xlDown).Offset(0, 26) = Sheets("caisse").Range("d21").Value
 
Sheets("caisse").Range("B2, b4:b10, b12:b20").ClearContents
 
End Sub
mais j'ai trouvé deux problèmes
1- le code est très long et surtout si j'ajoute une deuxième ou troisième formulaire
2- les cellules "B11" "C11" "D11" contiennent une formule matricielle et le code ne copier pas leurres valeurs et voici la formule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
{=INDEX(TABLE!G1:G39948;MAX((TABLE!B1:B39948=B2)*LIGNE(TABLE!G1:G39948)))}
Apres j'ai essayé cette méthode
j'ai affecte tous les valeurs dans une seul ligne c-a-d E1=B1 F1=B2 G1=B4 H1=B5 jusqu’à AD1=D21 et en suite copier tous la plage de E1:AD1 vers feuil Table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Sub Macro2()
    Range("E1:AD1").Copy
    Sheets("TABLE").Range("a1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("TABLE").Columns("A:A").NumberFormat = "m/d/yyyy"
    Application.CutCopyMode = False
    Sheets("caisse").Range("B2, b4:b10, b12:b20").ClearContents
End Sub
SVP aidez moi de trouvez un code pratique et rapide en excution parce que au fin d’année je me trouve avec une 10000 ligne dans la feuil TABLE
merci beaucoup