Creation liste en cascade VBA

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

B

Bearpong

Guest
Bonjour à tous,

J'aimerais créer des listes déroulantes en cascades sous VBA, pour ce faire j'ai enregistrer (et écrit) le code suivant:

Sheets("Tableaux").Activate
Range("B16").Select

With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=OFFSET(INDIRECT($B$1);1;;COUNTA(INDIRECT(B1))-1)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With


Comme vous l'avez compris la première liste est en B1.
Hors; la macro plante au niveau (apparemment) de la lecture de ma formule. J'ai d'abord penser à un problème de traduction des formules, d'où l'anglais, mais cela ne change rien.
Avez vous des idées? Alternatives?

Merci d'avances pour votre aide.
 
Re : Creation liste en cascade VBA

Bonjour,

C'est sûrement COUNTA qui pose problème étant donné que tu ne référence qu'une cellule donc la fonction va retourner 1 (au mieux) ou 0 au pire. Et de ce résultat tu retranche 1 -> 0 ou -1.

As-tu une adresse de plage en B1? Ou veux-tu mettre INDIRECT(""$B$1"") ?

A+
 
Re : Creation liste en cascade VBA

Dsl mais j'ai du mal a te suivre...

En B1 j'ai le première liste déroulante. Ce que je ne comprend pas, c'est que quand je le fais manuellement, ca marche tres bien, avec exactement la mm formule (decaler, indirect, nbval) alors que vba la refuse.
Je peux mettre simplement INDIRECT($B$1), et la ca marche, mais dans ma liste s'affiche les cellules vides, chose que je voudrais éviter...
 
Dernière modification par un modérateur:
Re : Creation liste en cascade VBA

Re,

Voilà qui semble fonctionner:

Code:
Formula1:="=OFFSET(INDIRECT($B$1),1,,COUNTA(INDIRECT(B1))-1)"

Les formules sont automatiquement traduites pas excel et doivent être entrées en anglais.

Mais pourquoi faire cela par VBA?

A+
 
Re : Creation liste en cascade VBA

Merci beaucoup!

J'automatise car les listes sont faites à partir d'une base de données qui bouge tres souvent, de cette manière elles se mettront à jour très facilement.

Merci encore.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
27
Affichages
2 K
adet ruireux
A
Réponses
11
Affichages
3 K
F
N
Réponses
12
Affichages
1 K
NadJP
N
Réponses
12
Affichages
1 K
M
Réponses
2
Affichages
1 K
moialbert2
M
T
  • Résolu(e)
XL pour MAC lenteur du vba
Réponses
16
Affichages
3 K
T
  • Question Question
Réponses
3
Affichages
1 K
W
  • Question Question
Réponses
1
Affichages
1 K
P
Réponses
7
Affichages
2 K
Réponses
2
Affichages
952
I
Réponses
1
Affichages
932
inconnu
I
Retour