Excel data validation - afficher un message dans une cellule

Résolu/Fermé
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017 - 26 avril 2016 à 16:43
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017 - 27 avril 2016 à 17:58
Bonjour,


je voulais bien afficher la definition de chaque definition placée dans une liste déroulante ,je travaille sur plus de 80 liste deroulante
j'utilise une fonction ca marche super bien , mais un certain moment j'ai ce message d'erreur (Procedure too large)

voici mon code




Private Sub Worksheet_Change(ByVal Target As Range)



If Target.Address(0, 0) = "AA4" Then

Select Case Target
Case "EDU1": range1 = "B19"
Case "EDU2": range1 = "B20"
Case "EDU3": range1 = "B21"
Case "EDU4": range1 = "B22"
Case "EXP1": range1 = "B25"
Case "EXP2": range1 = "B26"
Case "EXP3": range1 = "B27"
Case "EXP4": range1 = "B28"
Case "EXP5": range1 = "B29"
Case "EXP6": range1 = "B30"
Case "EXP7": range1 = "B31"
Case "EXP8": range1 = "B32"
Case "EXP9": range1 = "B33"
Case "EXP10": range1 = "B34"
Case "EXP11": range1 = "B35"
Case "EXP12": range1 = "B36"
Case "EXP13": range1 = "B37"
Case "EXP14": range1 = "B38"
Case "EXP15": range1 = "B39"
Case "EXP16": range1 = "B40"
Case "EXP17": range1 = "B41"
Case "EXP18": range1 = "B42"
Case "EXP19": range1 = "B43"
Case "EXP20": range1 = "B44"
Case "A1": range1 = "B71"
Case "A2": range1 = "B72"
Case "PS1": range1 = "B83"
Case "Comp1": range1 = "B95"
Case "Comp2": range1 = "B96"
Case "AEDU1": range1 = "B116"
Case "AEDU2": range1 = "B117"
Case "AEXP1": range1 = "B121"
Case "AEXP2": range1 = "B122"
Case "AEXP3": range1 = "B123"


End Select
End If

If range1 <> "" Then
Sheets("SBR").Range("AA3") = _
Sheets("Process Info").Range(range1).Value
End If


Select Case Target.Address(0, 0)
Case "IR4":
Sub TraitementIR4Target()

End Select




If Target.Address(0, 0) = "AC4" Then

Select Case Target
Case "EDU1": range1a = "B19"
Case "EDU2": range1a = "B20"
Case "EDU3": range1a = "B21"
Case "EDU4": range1a = "B22"
Case "EXP1": range1a = "B25"
Case "EXP2": range1a = "B26"
Case "EXP3": range1a = "B27"
Case "EXP4": range1a = "B28"
Case "EXP5": range1a = "B29"
Case "EXP6": range1a = "B30"
Case "EXP7": range1a = "B31"
Case "EXP8": range1a = "B32"
Case "EXP9": range1a = "B33"
Case "EXP10": range1a = "B34"
Case "EXP11": range1a = "B35"
Case "EXP12": range1a = "B36"
Case "EXP13": range1a = "B37"
Case "EXP14": range1a = "B38"
Case "EXP15": range1a = "B39"
Case "EXP16": range1a = "B40"
Case "EXP17": range1a = "B41"
Case "EXP18": range1a = "B42"
Case "EXP19": range1a = "B43"
Case "EXP20": range1a = "B44"
Case "A1": range1a = "B71"
Case "A2": range1a = "B72"
Case "PS1": range1a = "B83"
Case "Comp1": range1a = "B95"
Case "Comp2": range1a = "B96"
Case "AEDU1": range1a = "B116"
Case "AEDU2": range1a = "B117"
Case "AEXP1": range1a = "B121"
Case "AEXP2": range1a = "B122"
Case "AEXP3": range1a = "B123"

End Select
End If

If range1a <> "" Then
Sheets("SBR").Range("AC3") = _
Sheets("Process Info").Range(range1a).Value
End If

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.















End Sub









Private Sub TraitementIR4(ByVal Target As Range)
Dim lCollection As New Collection

lCollection.Add "B49", "K1"
lCollection.Add "B50", "K2"
lCollection.Add "B51", "K3"


On Local Error Resume Next
Sheets("SBR").Range("IQ3") = Sheets("Process Info").Range(lCollection(Target.Address(0, 0))).Value

End Sub


End Select
End If


A voir également:

1 réponse

dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
26 avril 2016 à 16:57
Bonjour,

j'aurais une question, tu cherche juste a créer une case qui t'affiche une liste déroulante en fonction d'une liste annoncé dans un autre tableur ?

ce que je peux te proposer c'est :
dans un onglet tu fait une colonne définition, et une colonne définition-details

sur la page voulut tu met une case avec une liste associé (Données - Validation des données -> liste et tu sélectionne définition-nom)
et dans la ligne d'à coté tu met la fonction
=RECHERCHEV(<celule avec la liste>;<colonne definition-nom>;2)

si je me trompe pas normalement cela devrais te permettre d'afficher directement ton résultat en retour de la fonction

pas forcement très clair, je reste à ta disposition

Cordialement
Dragondark de Lonlindil
1
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017
Modifié par r4944 le 26/04/2016 à 17:12
Merci beaucoup pour votre initiative pour le moment j'ai une liste deroulante qui contienne 32 Codes , aussi je les ai définis sur une autre feuille donc une fois tu selectionnes n'importe quel code de cette liste tu auras sa défition juste dans la cellule en haut

ps : je travaille sur plus de 80 listes déroulante
0
dragondark Messages postés 465 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 27 avril 2016 157
27 avril 2016 à 09:18
humm je reste basé sur mon idée je pense que faire une macro n'est pas utile

ce que j'ai fait pour mon exemple :
Feuille 1 ->
A1 => Definition
A2 => =RECHERCHEV(B2;Feuil2!A:B;2)
B1 => Code
B2 => vide (avec une liste déroulante généré sur la colonne Feuil2 A (via validation des données))

sur la feuille 2
colonne A -> code (1/ligne)
colonne B -> définition (1/ligne)

Dis moi si c'est ca que tu recherche ou quelque chose de plus compliqué ?


Cordialement
Dragondark de Lonlindil
0
r4944 Messages postés 122 Date d'inscription vendredi 2 octobre 2015 Statut Membre Dernière intervention 3 mars 2017
27 avril 2016 à 17:58
Bonjour , voila ce que j'ai fais finalement

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rCell As Range
Dim range1 As String

Dim rcel

If Not Intersect(Target, Range("AA4:BN4")) Is Nothing Then
For Each rCell In Intersect(Target, Range("AA4:BN4")).Cells

Select Case rCell.Value
Case "EDU1": range1 = "B19"
Case "EDU2": range1 = "B20"
Case "EDU3": range1 = "B21"
Case "EDU4": range1 = "B22"
Case "EXP1": range1 = "B25"
Case "EXP2": range1 = "B26"
Case "EXP3": range1 = "B27"
Case "EXP4": range1 = "B28"
Case "EXP5": range1 = "B29"
Case "EXP6": range1 = "B30"
Case "EXP7": range1 = "B31"
Case "EXP8": range1 = "B32"
Case "EXP9": range1 = "B33"
Case "EXP10": range1 = "B34"
Case "EXP11": range1 = "B35"
Case "EXP12": range1 = "B36"
Case "EXP13": range1 = "B37"
Case "EXP14": range1 = "B38"
Case "EXP15": range1 = "B39"
Case "EXP16": range1 = "B40"
Case "EXP17": range1 = "B41"
Case "EXP18": range1 = "B42"
Case "EXP19": range1 = "B43"
Case "EXP20": range1 = "B44"
Case "A1": range1 = "B71"
Case "A2": range1 = "B72"
Case "PS1": range1 = "B83"
Case "Comp1": range1 = "B95"
Case "Comp2": range1 = "B96"
Case "AEDU1": range1 = "B116"
Case "AEDU2": range1 = "B117"
Case "AEXP1": range1 = "B121"
Case "AEXP2": range1 = "B122"
Case "AEXP3": range1 = "B123"
End Select
If range1 <> "" Then
rCell.Offset(-1).Value = Sheets("Process Info").Range(range1).Value
End If
Next rCell
End If
end sub
0