XL 2016 VBA - Comment pouvoir traiter normalement une structure perso

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • 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 !

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 !
@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>.
 
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
 
- 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
3
Affichages
560
Retour