Excel data validation - afficher un message dans une cellule

Résolu
r4944 Messages postés 136 Statut Membre -  
r4944 Messages postés 136 Statut Membre -
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


1 réponse

  1. dragondark Messages postés 481 Statut Membre 159
     
    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
    1. r4944 Messages postés 136 Statut Membre
       
      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
    2. dragondark Messages postés 481 Statut Membre 159
       
      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
    3. r4944 Messages postés 136 Statut Membre
       
      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