Bonjour,
Je préfère commencer par dire que c'est ma toute première macro, et donc je m'inspire de ce que je peux trouver sur ce site.
Je cherche à faire quelque chose de très simple :

Sur la première page, j'ai 2 colonnes contenant des valeurs numériques :
- 0, 10, 30 par exemple pour la 1ere
- et 100, 60, 40 pour la 2e.

je cherche à générer une colonne sur la 2e page qui étalonnerait ces valeurs en considérant un incrément (
- inc=0.5 par exemple pour la première,
- et l'incrément pour la 2e colonne dépend des valeurs de la première :

cela donnerait pour la première colonne de la 2e page :
- 0, 0.5, 1.0, ... 9.5, 10.0, 10.5, .... 30.0

pour la 2e colonne, je veux considérer
- (pour i=0 à 10) inc2 = (60-100) / 0.5
- (pour i=10 à 30) inc2 = (40-60) / 0.5
C'est une sorte d'étalonnage en considérant une évolution linéaire entre 2 points.

Voici ce que j'ai essayé d'implémenter en m'inspirant de ce qui est au dessus, mais j'ai une erreur sur le i+1 dans la boucle !? (l'indice n'appartient pas à la sélection...)

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
39
40
41
42
Sub subTest()
 
Dim frequency As Long 'équivalent à 1/inc1 (inc1 est en fait la période)
Dim tab11 As Variant '1ere page, 1ere colonne 
Dim tab12 As Variant '1ere page, 2eme colonne
Dim i As Long 'indice pour la 1ere page
Dim lTotal As Long 'nombre de lignes (1ere page)
Dim j As Long 'indice pour la 2e page
Dim jDebut As Long 'indice pour chaque début 2eme page
Dim jFin As Long 'indice pour chaque fin 2eme page
Dim inc As Long '
Dim tab21 As Variant '2e page colonne 1
Dim tab22 As Variant '2e page colonne 2
 
frequency = 2 'period = 0.5
 
'effacer le contenu des colonnes A, B, C et D dans feuille2
ThisWorkbook.Worksheets(2).Range("A:B").Clear
 
'rechercher la ligne de la dernière valeur colonne 1 feuille 1
lTotal = ThisWorkbook.Worksheets(1).Range("A" & Application.Rows.Count).End(xlUp).Row
 
'charger les tableaux
tab11 = ThisWorkbook.Worksheets(1).Range("A1:A" & lTotal).Value
tab12 = ThisWorkbook.Worksheets(1).Range("B1:B" & lTotal).Value
 
For i = 1 To lTotal - 1
    jDebut = tab11(i) * frequency
    jFin = tab11(i + 1) * frequency
    inc = (tab12(i + 1) - tab12(i)) * frequency
    tab21(jDebut) = tab11(i)
    tab22(jDebut) = tab12(i)
    For j = jDebut To jFin
        tab21(j+1) = tab21(j) + (1 / frequency)
        tab22(j+1) = tab22(j) + inc
    Next j
Next i
 
ThisWorkbook.Worksheets(2).Range("A1:A").Value = tab21
ThisWorkbook.Worksheets(2).Range("B1:B").Value = tab22
 
End Sub
Merci d'avance si vous pouvez m'éclairer !
De plus, une solution à la macro me ferait gagner du temps...