Liste déroulante changeante en fonction d'une variable

Bonjour, à tous.

Mon objectif est le suivant:

- Faire fluctuer les informations disponible dans la liste déroulante en fonction d'une la variable déterminé elle même changeante.

Voici les données :

- Règle de Calcul en colonne B (case en vert)

- Liste de rubrique en colonne J (liste déroulante)

- Base de rubrique sur une autre feuille

- Transco rubrique pour les intitulé de la colonne C en fonction de la rubrique utilisée en J

J'ai 38 règles de calcul et pour chacune d'elle des rubriques associées. Afin de limiter les erreurs de saisie de rubrique je demande à Excel de créer une liste déroulante ne faisant apparaître que les rubrique associées à la règle de calcul en colonne B (case en vert).

Pour cela j'utilise la validation des données en dans la colonne J et dans source j'inscrit la formule suivante :

=SI($B$4='Base rubriques LISTE'!$A$1;'Base rubriques LISTE'!$A$2:$A$4;SI($B$4='Base rubriques LISTE'!$O$1;'Base rubriques LISTE'!$O$2:$O$33;SI($B$4='Base rubriques LISTE'!$C$1;'Base rubriques LISTE'!$C$2:$C$33;1)))

Cette formule fait parfaitement le travail mais je ne peut pas la continuer, en effet le champs ne me permet que d'inscrire 255 caractère.

J'aimerais pouvoir avoir une liste déroulante dans chacune des cases en Jaune, fluctuant en fonction de la règle de calcul en colonne B (case en vert).

Je vous joins une fichier pour que cela soit plus explicite.

Je suis donc dans l'impasse.

Merci par avance pour les ou la solution à mon problème.

19forum.xlsx (38.22 Ko)

Bonjour,

une possibilité serait de nommer les plages de rubrique,

à tester,

Sub Créer_Nom_rubrique()
With Sheets("Base rubriques LISTE")
  For col = 1 To Cells(1, Columns.Count).End(xlToLeft).Column Step 2
    If Not Range(.Cells(1, col).Value) Is Nothing Then ActiveWorkbook.Names(.Cells(1, col).Value).Delete
    lastRw = Cells(Rows.Count, col).End(xlUp).Row
    ActiveWorkbook.Names.Add Name:=.Cells(1, col).Value, _
        RefersTo:="='Base rubriques LISTE'!" & .Range(Cells(2, col).Address, Cells(lastRw, col).Address).Address
  Next col
End With
End Sub

voir le message suivant

Bonjour,

J'ai modifié quelque titre de colonne sur l'onglet Base rubriques LISTE

puisque l'on ne peut pas utiliser l'adresse d'une cellule pour nommer une plage de cellules,

comme MAB1 et MAB2

je les ai modifiés pour MAB_1 MAB_2

j'ai nommé la colonne A avec le titre de cette colonne

et la colonne adjacente (colonne B) avec "T_" & titre de la colonne A

et ainsi de suite pour les autres colonnes.

Whaou !

C'est juste parfait merci beaucoup pour votre aide.

Je vais pouvoir continuer mon projet.

Merci encore !!!

Merci pour ce retour, au plaisir!

si le problème est résolu, s.v.p. clôture le fil, par un clic sur le bouton (indiquer par la flèche verte)

resolu

Merci!

Bonjour,

Bon je suis allé un peut trop vite.

En effet j'ai un message d'erreur qui apparaît quand je rajoute une rubrique et que je lance la mise à jour des noms.

Le message est le suivant :

Erreur d'exécution '1004' :

Le nom entré n'est pas valide.

Raison possibles :

  • Le nom ne commence pas une lettre ou un trait de soulignement
  • Le nom contient un espace ou un autre caractère non valide.
  • Le nom est en conflit avec un nom prédéfini dans Excel

Et quand je clique sur débogage cette ligne de code est en jaune :

ActiveWorkbook.Names(i).Delete

Je ne comprend pas car vendredi cela fonctionnait et lundi à la réouverture du fichier cette erreur apparaît.

Merci par avance si vous comprenez le souci.

edit voici le code :

Sub Créer_Nom_rubrique()
Dim col As Integer, lastRw As Long

Efface_Nom

With Sheets("Base rubriques LISTE")

  For col = 1 To .Cells(1, Columns.Count).End(xlToLeft).Column Step 2

    lastRw = .Cells(Rows.Count, col).End(xlUp).Row

    ActiveWorkbook.Names.Add Name:=.Cells(1, col).Value, _
        RefersTo:="='Base rubriques LISTE'!" & .Range(Cells(2, col).Address, Cells(lastRw, col).Address).Address

    ActiveWorkbook.Names.Add Name:="T_" & .Cells(1, col + 1).Value, _
        RefersTo:="='Base rubriques LISTE'!" & .Range(Cells(2, col + 1).Address, Cells(lastRw, col + 1).Address).Address

  Next col

End With
End Sub

Private Sub Efface_Nom()
Dim i As Integer
For i = ActiveWorkbook.Names.Count To 2 Step -1
x = ActiveWorkbook.Names(i).Name
ActiveWorkbook.Names(i).Delete
Next
End Sub

Et si je fait une copie dans un autre classeur cela fonctionne sans problème

re,

En effet j'ai un message d'erreur qui apparaît quand je rajoute une rubrique et que je lance la mise à jour des noms.

quel est le nom de la rubrique que tu as ajouté ?

J'ai rajouté en P34 : NRHONO et en Q34 : NON REC HONNORAIRE

Mais ce qui est étrange c'est que cela à parfaitement fonctionné vendredi. J'en ai rajouté puis j'en ai supprimé et tout était nickel.

J'avais même ajouté une règle en BY et cela avait fonctionné aussi.

re,

tu as ajouté ces rubriques sur le fichier que j'ai transmis ou sur un autre fichier ?

Sur un autre fichier

J'ai fais clik droit deplacer ou copier puis créer une copie dans le classeur qui m’intéresser. Et j'ai également copier le module de macros.

Quelque chose peut interférer ? Et rendre votre macros invalide ?

re,

as-tu transformé les titres de colonne pour qu'il ne soient pas comme une adresse de cellule

par exemple modifier MAA1 par MAA_1

etc...

Non je n'ai pas touché/transformé les titres de colonne. J'ai gardé ce que vous aviez créer.

En jaune ce que j'ai modifié

Je vous joint le fichier avec le bug.

3bug.xlsm (109.72 Ko)

re,

j'ai ajouté une condition au cas ou il n'y a pas de nom dans le classeur,

If ActiveWorkbook.Names.Count = 2 Then Exit Sub

à tester,

Private Sub Efface_Nom()
Dim i As Integer
If ActiveWorkbook.Names.Count = 2 Then Exit Sub

For i = ActiveWorkbook.Names.Count To 3 Step -1
    x = ActiveWorkbook.Names(i).Name
    ActiveWorkbook.Names(i).Delete
Next
End Sub

Super merci je vais essayer cela.

Si c'est le manque de nom dans le classeur ou le nom mal orthographié qui fait planter comment le vérifier manuellement pour bien comprendre.

re,

Si c'est le manque de nom dans le classeur ou le nom mal orthographié qui fait planter comment le vérifier manuellement pour bien comprendre.

je ne comprend pas la question ?

Bonjour,

Vous me dite j'ai rajouté une condition au cas ou il n'y est pas de nom dans le classeur mais on parle de quel nom ?

re,

Vous me dite j'ai rajouté une condition au cas ou il n'y est pas de nom dans le classeur mais on parle de quel nom ?

regarder au menu, onglet Formules, sous la rubrique Noms définis, Gestionnaire de noms

Rechercher des sujets similaires à "liste deroulante changeante fonction variable"