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

Microsoft 365 Validation par liste et fonction personnalisé

tbft

XLDnaute Accro
Bonjour à tous

J'ai un soucis. J'aimerais utiliser une fonction VBA pour générer une liste de validation.
Pour simplifier les essais (qui ne marche pas), j'utilise la fonction suivante :
VB:
Public Function test_liste()
Dim nb As Integer, i As Integer
Dim res()
  nb = 5
  ReDim res(nb, 1)
  For i = 1 To nb
    res(i, 1) = i
  Next i
  test_liste = res
End Function

J'ai ensuite crée un nom "Test" dont la valeur est "=test_liste()"
Et enfin, je dis que la validation est paramétrer :
Autoriser : Liste
Source : =Test

Pouvez-vous regarder et me dire se que j'ai raté, s'il vous plait?
D'avance merci.
 

Pièces jointes

  • Essais formules et autres lite.xlsm
    17.3 KB · Affichages: 5
Solution
re
dans ce cas pas besoin de macro
dans la feuille param j'ai fait une table
puis créer un nom qui définie la table elle peut grandir ou raccourcir tous les chiffres seront prix en compte
et enfin relier la liste de validation avec le nom
a+

jpb388

XLDnaute Accro
Bonjour à tous
VB:
Public Function test_liste()
    Dim Nb As Integer, i As Integer
    Dim res()
      Nb = 5
      ReDim res(Nb)
      For i = 1 To Nb
        res(i) = i
      Next i
      test_liste = res
End Function


Sub test()
    MsgBox test_liste(5)
End Sub
 

tbft

XLDnaute Accro
Bonjour JP

D'abord merci pour l'aide.

Je viens d'essayer mais la validation de la cellule B2 ne fonctionne pas....
Lorsque j'essaye de la mettre en place, j'obtiens le message :
La source est reconnu comme erroné. Voulez-vous continuer ?

Par contre je ne sais pas pourquoi ma "source" est erroné..????...????
 

tbft

XLDnaute Accro
Re,

un autre essai pour ne pas dire un autre échec...
VB:
Public Function test_liste()
Dim nb As Integer, i As Integer
Dim res() ' As Range
Dim tp
  nb = 5
  ReDim res(nb)
  For i = 1 To nb
    res(i) = i
  Next i
  tp = Join(res, ",")
  test_liste = tp
End Function
 

jpb388

XLDnaute Accro
re
si tu veux passer par la liste de validation il te faut une zone de range
si tu veux mettre la function tu mets une liste déroulante et tu l'incrémentes avec

Private Sub ComboBox1_GotFocus()
Me.ComboBox1.List() = test_liste()
End Sub

tout dépend de ce que tu veux faire exactement de la suite
a+
 

jpb388

XLDnaute Accro
re
dans ce cas pas besoin de macro
dans la feuille param j'ai fait une table
puis créer un nom qui définie la table elle peut grandir ou raccourcir tous les chiffres seront prix en compte
et enfin relier la liste de validation avec le nom
a+
 

Pièces jointes

  • Essais formules et autres lite.xlsm
    18.5 KB · Affichages: 5

tbft

XLDnaute Accro
Bonjour JP

Merci pour la réponse.
Dans mon projet la liste de validation dépend du résultat d'une fonction VBA car trop complexe à faire.
Donc, du coup, je vais utiliser ta philosophie:
+ Nom sur une table
+ VBA pour alimenter la table
+ Validation d'après la table

Inconvénient : réalisation en deux étapes
Avantage : vision direct sur la liste de validation

Donc merci encore pour ton écoute, ton soutien et ton aide
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…