XL 2016 Redimensionner un tableau de données en ne prenant que les 3 derniers éléments

elgringo123456

XLDnaute Occasionnel
Supporter XLD
Bonjour,

Je me permets de vous solliciter sur une autre problématique de redimensionnement de tableau.
Pour ce faire, j'utilise l'instruction Redim Preserve.
Néanmoins, je souhaite redimensionner mon tableau sans démarrer à la 1ere position mais par exemple à partir de la 3ième position.
Je me suis permis d'intégrer un fichier.

Par exemple dans la variable "Montants" est un tableau de "double" de 5 valeurs.
Je souhaite redimensionner la variable "Montants" en ne prenant que les valeurs 3, 4 et 5.
Redim Preserve permet de retailler la variable "Montants" à partir du 1ere élément.
Existe-t-il une instruction permettant d'extraire les éléments 3 à 5 et les intégrer dans une variable ?

Merci d'avance de vos propositions,
El Gringo 123 456
 

Pièces jointes

  • Classeur1.xlsm
    12.7 KB · Affichages: 5
C

Compte Supprimé 979

Guest
Bonsoir,

Votre fichier ne contient rien à part du code qui nous donne un exemple très mal fait, mais bon :rolleyes:

De ce que j'ai compris, pourquoi en pas faire comme ça
VB:
For Ind = 3 to 5
 Total = Total + Montant(Ind)
Next Ind

A+
 

patricktoulon

XLDnaute Barbatruc
on ne redim pas les antécédents dans un array c'est toujours la dernière dimension qui est redimensionnement en occurrence ici pour un array une dimensions c'eest la fin que que l'on peut redimensionner pas le début pour faire ce que tu cherche il te faut le couper
tu a application.index pour ca avec un array ou avec mes astuces evaluate

comme ceci
VB:
Option Explicit
Option Base 1

' Exemple d'utilisation
Sub SampleResizePosTab()

    Dim Montants() As Double, montantcoupe
    
    ReDim Preserve Montants(1 To 5)
    Montants(1) = 0: Montants(2) = 0
    Montants(3) = -100: Montants(4) = 10: Montants(5) = 300
    montantcoupe = Application.Index(Montants, Evaluate("COLUMN(" & Columns(3).Resize(, 3).Address(0, 0) & ")"))
  
    MsgBox "a l'origine il y a " & UBound(Montants) & vbCrLf & "maintenant il yen a " & UBound(montantcoupe)


End Sub
;)
 

Wayki

XLDnaute Impliqué
Bonsoir tout le monde,
on ne redim pas les antécédents dans un array c'est toujours la dernière dimension qui est redimensionnement en occurrence ici pour un array une dimensions c'eest la fin que que l'on peut redimensionner pas le début pour faire ce que tu cherche il te faut le couper
tu a application.index pour ca avec un array ou avec mes astuces evaluate

comme ceci
VB:
Option Explicit
Option Base 1

' Exemple d'utilisation
Sub SampleResizePosTab()

    Dim Montants() As Double, montantcoupe
   
    ReDim Preserve Montants(1 To 5)
    Montants(1) = 0: Montants(2) = 0
    Montants(3) = -100: Montants(4) = 10: Montants(5) = 300
    montantcoupe = Application.Index(Montants, Evaluate("COLUMN(" & Columns(3).Resize(, 3).Address(0, 0) & ")"))
 
    MsgBox "a l'origine il y a " & UBound(Montants) & vbCrLf & "maintenant il yen a " & UBound(montantcoupe)


End Sub
;)
@patricktoulon je vois que vous utilisez une fonction de feuille de calcul pour votre tableau (liste en l'occurrence ici) "montants", je ne savais pas que c'était possible, peut on toutes les utiliser (par exemple countif) ?
Merci d'avance pour vos lumières 😁
A +
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine