Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Localiser une ligne dans un tableau virtuel (Redim) ?

  • Initiateur de la discussion Initiateur de la discussion lebarbo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

lebarbo

XLDnaute Occasionnel
Bonjour le forum, bonjour à tous,

Je souhaiterais localiser une ligne en fonction d'une fonction dans un tableau en Redim, pour être plus clair, j'ai une série qui s'appelle Fonds et dans cette série je souhaite trouver la variation minimum entre deux périodes, j'effectue donc la fonction suivante :

Function Plusbas(Fonds As Range) As Variant

Dim TabResult As Variant
Dim L As Integer

ReDim TabResult(1 To Fonds.Count - 1)
For L = 2 To Fonds.Count
TabResult(L - 1) = (Fonds(L).Value / Fonds(L - 1).Value) - 1
Next L

Plusbas = Application.Min(TabResult)

End Function

Mais j'aimerais localiser la ligne de la cellule qui me donne ce plus bas et là je me casse les dents 😉
La seule solution que j'ai trouvé pour renvoyer la variable est celle là mais cela ne me satisfait guère lol :

Function LocalisationPlusbas(Fonds As Range) As Variant

Dim Plusbas As Variant

LocalisationPlusbas = 0
Plusbas = 0

For L = 2 To Fonds.Count
If (Fonds(L).Value / Fonds(L - 1).Value) - 1 < Plusbas Then
LocalisationPlusbas = L
Plusbas = (Fonds(L).Value / Fonds(L - 1).Value) - 1
End If
Next L

End Function

Existe t-il un code VBA pouvant appliquer à la fonction Application.min un adressage et qui correspondrait à :

Function LocalisationPlusbas(Fonds As Range) As Variant

Dim TabResult As Variant
Dim L As Integer

ReDim TabResult(1 To Fonds.Count - 1)
For L = 2 To Fonds.Count
TabResult(L - 1) = (Fonds(L).Value / Fonds(L - 1).Value) - 1
Next L

LocalisationPlusbas = Application.Min(TabResult). "adresse de la ligne "

End Function

Je vous ai fait un joli fichier pour que ce soit plus explicite.

Merci d'avance
 

Pièces jointes

Re : Localiser une ligne dans un tableau virtuel (Redim) ?

Re bonjour,


Code:
ActiveCell.FormulaR1C1 = "=OFFSET(R[3]C[2],2,3,1,1)"

voici le résultat de l'enregistreur de macro, je ne vois pas de "application.offset"...
 
Re : Localiser une ligne dans un tableau virtuel (Redim) ?

arffff j'ai du faire une grosse bouléto. Je m'explique, j'utilise depuis quelques jours la fonction max et min à travers application.max et application.min du coup je pensais bêtement que l'on pouvait associer ce code à n'importe quelle fonction mais ce n'est pas le cas.

Du coup la question idiote devient j'espère plus intéligente en la transformant :

Comment se servir d'une fonction à l'intérieur d'une fonction. Imaginons que je souhaite appliquer une racine et la multiplié par une variable fixe de 2.

Function racine2 (Macellule as range) as variant

Racine2 = ? (la fonction étant sqrt dans l'enregistreur de macro) * 2

End Function
 
Re : Localiser une ligne dans un tableau virtuel (Redim) ?

et en fait ça donne :

Function racine2 (Macellule as range) as variant

Racine2 = sqr(Macellule) * 2

End Function

Dans ce cas y a t-il un dico vba nous donnant la correspondance entre la formule excel (SQRT) et la function VBA (SQR) ?
Et donc peut-on utiliser et intégrer Offset dans une function VBA ?

Merci
 
Dernière édition:
Re : Localiser une ligne dans un tableau virtuel (Redim) ?

Re bonjour,

Dans ce cas y a t-il un dico vba nous donnant la correspondance entre la formule excel (SQRT) et la function VBA (SQR) ?
Ci-joint un fichier qui donne l'équivalence VBA des fonctions excels.

Et donc peut-on utiliser et intégrer Offset dans une function VBA ?
C'est-à-dire?
 

Pièces jointes

Re : Localiser une ligne dans un tableau virtuel (Redim) ?

Salut skoobi,

pour l'équivalence en anglais c'est ok, mais en fait c'est pour une équivalence en application. ou en function je m'explique :
1er exemple
formule en français : =racine(), équivalence anglais : =SQRT(), équivalence dans une function en VBA : =SQR()

2ème exemple
formule en français : =max(), équivalence anglais : =max(), équivalence dans une function en VBA : =application.max()

Est ce que tu vois ce que je veux dire ? Et dans ce cas pour Offset :
formule en français : =decaler(), équivalence anglais : =offset(), équivalence dans une function en VBA : = ??? je ne la connais pas.

Merci

Bye
 
Re : Localiser une ligne dans un tableau virtuel (Redim) ?

Bonjour Lebarbo, Skoobi

la fonction de feuille de calcul "DECALER", ne peut être utilisée en vba comme pour la fonction "MAX".

En vba "OFFSET" est une propriété qui s'applique à un objet "range", et ne possède que 2 arguments, un numéro de ligne et un numéro de colonne.

bonne journée
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
390
Réponses
4
Affichages
733
Réponses
5
Affichages
418
Réponses
5
Affichages
910
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…