XL 2016 VBA - Comment pouvoir traiter normalement une structure perso

Dudu2

XLDnaute Barbatruc
Bonjour,
Avec Excel VBA on ne peut pas passer une structure utilisateur en argument d'une fonction ni en faire un retour de fonction.
Y a-t-il un moyen ? En faire une classe ?
VB:
Private Type TabAreas
    TabValues() As Variant
End Type

Dim TabAreasVal() As TabAreas
 
Dernière édition:
Solution
Bonjour,
ThisWorbook est un module de classe pas un module standard !
Code:
set wb=ThisWorbook

Par conséquent tu n'as pas accès à tous ce qui est privé.

Il est vrai que tout ce qui est privé devrait être accessible de l'intérieur du module de classe mais c'est comme ça !

Notes également que tout ce qui est privé dans un module standard n'est pas viable d'un autre monde !

Dudu2

XLDnaute Barbatruc
@Dranreb,
Tu veux dire que l'instruction CréerZonVal ZonVal, R créé le retour de la fonction Zonval ?
Si c'est ça alors je suis sur le ***.
Pour moi CréerZonVal ZonVal, R c'est un appel récursif à la fonction elle-même. Bon ok ça ne l'est pas !
Et un retour de fonction c'est Nom-de-fonction = <Valeur>, Zonval = <Valeur>.
 

Dudu2

XLDnaute Barbatruc
Bonjour à tous,

Finalement, après quelque insomnie ruminatoire, cette superbe fonction ne faisant que retourner une valeur qui vient d'ailleurs peut être... supprimée au bénéfice de cet ailleurs.
VB:
Function AdrZonVal(ByVal R As Range) As Variant()
   AdrZonVal = Array(R.Address(External:=True), CréerZonVal(R))
   End Function

Function CréerZonVal(ByVal Rng As Range) As Variant
   Dim Zon As Range, A&, TV(1 To 1, 1 To 1), TZon
   ReDim TZon(1 To Rng.Areas.Count)
   For Each Zon In Rng.Areas
      A = A + 1
      If Zon.Cells.Count = 1 Then
         TV(1, 1) = Zon.Value
         TZon(A) = TV
      Else
        TZon(A) = Zon.Value
        End If
      Next Zon
      CréerZonVal = TZon
   End Function
 

Discussions similaires

Réponses
3
Affichages
292
Réponses
2
Affichages
452

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU