Bonjour à tous !
Petite question de factorisation ce matin.
J'ai un tableau dans une feuille excel dont je formate certaines cellules qui ne forment pas un même range (donc placé de façon aléatoire dans le tableau).
J'ai créer un petit programme pour formater la devise ces cellules en question avec un point pivot et j'utilise offset pour me déplacer autour de ce point pivot et formater les cellules dont j'ai besoin.
Super, mais n'ayant pas trouver d'équivalent à ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Range("C11,C14,C19:F20,G20,C22:G24,G25:G26,H26,J19,J21,J17,N15,N19,N23,H20,H22,H23,H24,H25,H26,I26,K19,K21,K17").Select
Je me retrouve à faire cela:

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
35
36
37
38
Public Sub ChangeUSD()
 
    IndexNumber = InputBox("What's the table's number ? ", "1, 2, 3 etc...")
 
    With Ma_feuille.Range("Title" & IndexNumber)
        .Offset(2, 5) = "USD"
    End With    
 
    Ma_feuille.Range("Title" & IndexNumber).Activate
 
    With ActiveCell
        .Offset(2, 1).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
        .Offset(5, 1).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
        .Offset(11, 5).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'G20
        .Offset(16, 5).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'G25
        .Offset(17, 5).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'G26
        .Offset(11, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H20
        .Offset(13, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H22
        .Offset(14, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H23
        .Offset(15, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H24
        .Offset(16, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H25
        .Offset(17, 6).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'H26
        .Offset(17, 7).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'I26
        .Offset(8, 8).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'J17
        .Offset(10, 8).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'J19
        .Offset(12, 8).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'J21
        .Offset(8, 9).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'K17
        .Offset(10, 9).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'K19
        .Offset(12, 9).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'K21
        .Offset(6, 12).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'N15
        .Offset(10, 12).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'N19
        .Offset(14, 12).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ " 'N23
    End With
 
    Ma_feuille.Range(ActiveCell.Offset(10, 1), ActiveCell.Offset(11, 4)).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
    Ma_feuille.Range(ActiveCell.Offset(13, 1), ActiveCell.Offset(15, 5)).NumberFormat = "_-[$$-en-US]* #,##0_ ;_-[$$-en-US]* -#,##0 ;_-[$$-en-US]* ""-""??_ ;_-@_ "
 
End sub
Pourquoi avoir fait cela ? Car dans ma feuille Excel, je peux dupliquer mon tableau du nombre de fois que je veux. Donc je peux utiliser cette fonction avec n'importe quel tableau, que j'en créer 2 ou 50 tant que mon point pivot Ma_feuille.Range("Title" & IndexNumber).Activate s'adapte au nombre de tableau (grâce à IndexNumber).

Merci d'avance pour une éventuelle aide !