Validation en cascade sur listes avec trous

dionys0s

XLDnaute Impliqué
Bonsoir le forum :)

j'ai un petit soucis à régler
J'ai un plan comptable général dans une feuille, et une liste des opérations dans une autre.

J'aimerais, par ligne, faire des listes en cascade qui se mettent à jour automatiquement (par VBA donc je suppose) pour saisir les opérations et les comptes associés.

C'est à dire que je sélectionne un intitulé en A2 (les comptes de classe 2 par exemple), puis en B2, il me propose la liste des comptes de classe 2 du rang inférieur, et ainsi de suite sur 6 rangs de classification (jusqu'en colonne F donc).

J'ai essayé sans VBA avec le gestionnaire de noms et les listes de validation sans succès. J'essaye avec VBA mais je galère et sèche.

Mon fichier exemple sera peut-être plus clair que mon laborieux discours.

D'avance merci pour votre aide ^^

dionys0s
 

Pièces jointes

  • Validation.xlsm
    55.1 KB · Affichages: 79
  • Validation.xlsm
    55.1 KB · Affichages: 81
  • Validation.xlsm
    55.1 KB · Affichages: 76

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Validation en cascade sur listes avec trous

Bonjour,

Voir PJ

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not Intersect([A2:A10], Target) Is Nothing Then
   Set d = CreateObject("scripting.dictionary")
   For Each c In Application.Index([bd], , 1)
     If c <> "" Then
       temp = c.Value & c.Offset(, 6).Value
       d(temp) = ""
     End If
   Next c
   Sheets("bd").[J2].Resize(d.Count) = Application.Transpose(d.keys)
 End If
 '--
 If Not Intersect([b2:e10], Target) Is Nothing And Target.Count = 1 Then
  col = Target.Column
  Sheets("bd").Cells(2, 9 + col).Resize(100).ClearContents
  If Target.Offset(, -1) <> "" Then
    Set d = CreateObject("scripting.dictionary")
    For Each c In Application.Index([bd], , col)
     If c.Value <> "" Then
       If Left(c, col - 1) = Left(Target.Offset(, -1), col - 1) Then
         temp = c.Value & c.Offset(, 7 - col).Value
         d(temp) = ""
       End If
      End If
    Next c
    If d.Count > 0 Then Sheets("bd").Cells(2, 9 + col).Resize(d.Count) = Application.Transpose(d.keys)
   End If
  End If
End Sub

JB
 

Pièces jointes

  • Copie de Validation.xls
    347 KB · Affichages: 76
  • DVPlanComptableV2.xls
    347 KB · Affichages: 60
  • DVPlanComptableForm.xls
    354 KB · Affichages: 61
Dernière édition:

david84

XLDnaute Barbatruc
Re : Validation en cascade sur listes avec trous

Bonjour,
une solution par formules (2 listes) et un poil de VBA.
A+
Edit : fichier modifié
 

Pièces jointes

  • Liste_choixMultiple.v2.xls
    366.5 KB · Affichages: 79
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 489
Messages
2 088 854
Membres
103 975
dernier inscrit
denry