XL 2016 VBA Table Incrémentée

james7734

XLDnaute Junior
Bonjour à tous,

Je tente de créer une table incrémenté en VBA, c'est à dire à générer les données en colonne E (de la pj) en VBA. Sachant que la cellule E2 représente le minimum (cellule O1 et que la colonne E devrait s'arrêter au "max" en cellule O2, avec un incrément de la cellule O3. Je ne sais pas trop comment m'y prendre mais je souhaites absolument un code VBA car il fera partie d'un code plus global.

Merci de votre aide!
 

Pièces jointes

  • increment.xlsm
    9.4 KB · Affichages: 8
Solution
Bonjour James,
Un essai en PJ avec :
VB:
Sub Incrementer()
    Dim DL%, i%, Liste, Min, Max, Inc
    Application.ScreenUpdating = False  ' Fige écran
    DL = Range("E65500").End(xlUp).Row  ' Dernière cellule occupée de E
    Range("E2:E" & DL).ClearContents    ' Effacement col E
    Min = [O1]: Max = [O2]: Inc = [O3]  ' Acquisition paramètres
    Qty = 1 + Int((Max - Min) / Inc)    ' Détermination Nb élements
    ReDim Liste(Qty + 1)                ' Dimmensionnement array
    For i = 0 To Qty                    ' remplissage array
        Liste(i) = Min + i * Inc
    Next i
    ' Restitution valeurs array dans col E
    Range("$E$2").Resize(Qty, 1).Value = Application.Transpose(Liste)
End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour James,
Un essai en PJ avec :
VB:
Sub Incrementer()
    Dim DL%, i%, Liste, Min, Max, Inc
    Application.ScreenUpdating = False  ' Fige écran
    DL = Range("E65500").End(xlUp).Row  ' Dernière cellule occupée de E
    Range("E2:E" & DL).ClearContents    ' Effacement col E
    Min = [O1]: Max = [O2]: Inc = [O3]  ' Acquisition paramètres
    Qty = 1 + Int((Max - Min) / Inc)    ' Détermination Nb élements
    ReDim Liste(Qty + 1)                ' Dimmensionnement array
    For i = 0 To Qty                    ' remplissage array
        Liste(i) = Min + i * Inc
    Next i
    ' Restitution valeurs array dans col E
    Range("$E$2").Resize(Qty, 1).Value = Application.Transpose(Liste)
End Sub
 

Pièces jointes

  • increment.xlsm
    15.7 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Bonjour
Sous forme de Sub pour pouvoir l'utiliser de plusieurs endroits, comme vous laissez entendre que ça vous servira :
VB:
Option Explicit
Sub test()
   With ActiveSheet
      ListeIncrémentée .[E2], .[O1].Value, .[O2].Value, .[O3].Value
      End With
   End Sub
Sub ListeIncrémentée(ByVal RngCible As Range, ByVal Mini As Double, ByVal Maxi As Double, ByVal Pas As Double)
   Set RngCible = RngCible.Resize(Int((Maxi - Mini) / Pas + 1), 1)
   RngCible.FormulaR1C1 = "=(ROW()-" & RngCible.Row() & ")*" & Trim$(Str$(Pas)) & "+" & Trim$(Str$(Mini))
   End Sub
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
309

Statistiques des forums

Discussions
312 025
Messages
2 084 753
Membres
102 654
dernier inscrit
kulas11