A tous les spécialistes des menus déroulants

  • Initiateur de la discussion Bud
  • Date de début
B

Bud

Guest
Bonjour,

Dans le feuille février et notamment dans les cellules de la colonne D, vous trouverez un menu déroulant qui propose plusieurs critères puis sous-critères dont seule le choix final s'inscrira dans la cellule.

A partir de là, j'aimerais que le même profil de menu déroulant s'incrive dans la case de droite (donc en E) en tenant compte des choix 1 à 3 que vous trouverez dans le tableau dans la feuille LISTE (1 à 3 solutions sont alolrs envisageables). Attention, le menu déroulant doit pouvoir lui aussi pouvoir proposer plusieurs types de solutions comme en colonne D.

Autre question :

Est-il possible de créer ce profil de menu déroulant en associant les thèmes puis les sous thèmes c'est à dire :
Au lieu de ne n'avoir que 'le verbe avoir' qui s'inscrive dans la cellule, j'aurais : 'FRANCAIS Conjugaison Le verbe avoir' dans la même cellule

MERCI car je coince vraiment

En espérant avoir été assez clair. Bonne continuation à tous [file name=essai_20050304092131.zip size=20756]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essai_20050304092131.zip[/file]
 

Pièces jointes

  • essai_20050304092131.zip
    20.3 KB · Affichages: 101
B

Bud

Guest
Bonjour,

Je suis désolé de venir à nouveau vous déranger avec mes histoires mais j'ai un nouveau problème. La macro marche à merveille mais désormais je n'arrive pas à l'appliquer dans les cellules de mon choix.

En effet, j'ai appliquer la liste SousMatière dans une 100aine de cellule puis ensuite la liste Solution dans une 100aine d'autre cellule.

Malgré tout je n'arrive décidemment pas à bien rentrer les plages de sélection. Je suis casse pied mais je débute vraiment avec les macros alors si quelqu'un pouvait de nouveau me rendre ce petit service, ce serait formidable...

Merci à tous. Vous n'avez qu'à suivre la flèche pour voir les cellules où je veux appliquer la sélection... Celle-ci peuvent s'appliquer dans une nouvelle feuille (par souci de commodité pour vous)

Merci encore [file name=ListeEnCascade1.zip size=17229]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ListeEnCascade1.zip[/file]
 

Pièces jointes

  • ListeEnCascade1.zip
    16.8 KB · Affichages: 23
B

Bud

Guest
Rebonjour,

J'aimerais simplement savoir si mon problème vous a été clairement présenté ou si il vous paraît difficile de le résoudre.

Mettez moi simplement sur la voie

Merci et bonne journée
 
B

Bud

Guest
Bonjour,

Je suis désolé de venir à nouveau vous déranger avec mes histoires mais j'ai un nouveau problème. La macro marche à merveille mais désormais je n'arrive pas à l'appliquer dans les cellules de mon choix.

En effet, j'ai appliquer la liste SousMatière dans une 100aine de cellule puis ensuite la liste Solution dans une 100aine d'autre cellule.

Malgré tout je n'arrive décidemment pas à bien rentrer les plages de sélection. Je suis casse pied mais je débute vraiment avec les macros alors si quelqu'un pouvait de nouveau me rendre ce petit service, ce serait formidable...

Merci à tous. Vous n'avez qu'à suivre la flèche pour voir les cellules où je veux appliquer la sélection... Celle-ci peuvent s'appliquer dans une nouvelle feuille (par souci de commodité pour vous)

Merci encore
 
B

Bud

Guest
Bonjour,

Je reposte le fichier

Merci je suis sincèrement dans l'embarras [file name=ListeEnCascade1_20050308162645.zip size=17229]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ListeEnCascade1_20050308162645.zip[/file]
 

Pièces jointes

  • ListeEnCascade1_20050308162645.zip
    16.8 KB · Affichages: 15

JeanMarie

XLDnaute Barbatruc
Bonsoir

Remplace le code de gestion d'événement, (clique droit sur l'onglet de la feuille 'Base de donnée', puis sur 'visualiser le code').

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'   Activé au changement de sélection de cellule seulement en colonne 1 et 2 et en dessous de la ligne 13

With ActiveCell.Validation
    On Error Resume Next
    If .InCellDropdown = True Then
        Select Case .Formula1
            Case '=SousMatière'
                If WorksheetFunction.CountIf(Worksheets('Liste').Range('$D$2:$L$4'), Target) = 0 Then
                    SendKeys '%{DOWN}'
                End If
            Case '=Solution'
                If WorksheetFunction.CountIf(Worksheets('BASE DE DONNEES').Range('$L$1:$N$8'), Target) = 0 Then
                SendKeys '%{DOWN}'
                End If
        End Select
    End If
End With
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'   Activé au changement de sélection de cellule seulement en colonne 1 et 2 et en dessous de la ligne 13
With ActiveCell.Validation
    On Error Resume Next
    If .InCellDropdown = True Then
        Select Case .Formula1
            Case '=SousMatière'
                If WorksheetFunction.CountIf(Worksheets('Liste').Range('$D$2:$L$4'), Target) = 0 Then
                    SendKeys '%{DOWN}'
                End If
            Case '=Solution'
                If WorksheetFunction.CountIf(Worksheets('BASE DE DONNEES').Range('$L$1:$N$8'), Target) = 0 Then
                SendKeys '%{DOWN}'
                End If
        End Select
    End If
End With
End Sub

Au lieu de tester les coordonnées de la cellule active par rapport à une plage. Dans ce code, le test est effectué sur la présence d'une liste de validation dans la cellule active, par If .InCellDropdown = True.

Le code n'est plus tributaire des plages (intersect) dans la feuille de calcul, mais du l'intitulé de la formule.

@+Jean-Marie
 
B

Bud

Guest
Cher JeanMarie,

Je vous remercie de m'aider encore. J'ai effectivement changer le code mais il existerait une erreur de syntaxe dans la 2ème partie de votre formule au niveau de :

; If WorksheetFunction.CountIf(Worksheets('Liste').Range('$D$2:$L$4'), Target) = 0 Then

Aussi je tiens à vous repréciser que j'aimerais que la fonction sousmatière s'applique dans les cellules :
D8:D16, D70:D78, D132:D140, D194:D202, D256:D264, D318:D326, D380:D388, D18:D26, D80:D88, D142:D150, D204:D212, D266:D274, D328:D336, D390:D398
K8:K16, K70:K78, K132:K140, K194:K202, K256:K264, K318:K326, K380:K388, K18:K26, K80:K88, K142:K150, K204:K212, K266:K274, K328:K336, K390:K398
R8:R16, R70:R78, R132:R140, R194:R202, R256:R264, R318:R326, R380:R388, R18:R26, R80:R88, R142:R150, R204:R212, R266:R274, R328:R336, R390:R398
Y8:Y16, Y70:Y78, Y132:Y140, Y194:Y202, Y256:Y264, Y318:Y326, Y380:Y388, Y18:Y26, Y80:Y88, Y142:Y150, Y204:Y212, Y266:Y274, Y328:Y336, Y390:Y398
AF8:AF16, AF70:AF78, AF132:AF140, AF194:AF202, AF256:AF264, AF318:AF326, AF380:AF388, AF18:AF26, AF80:AF88, AF142:AF150, AF204:AF212, AF266:AF274, AF328:AF336, AF390:AF398

Alors que la fonction solution s'appliquerais 3 cases plus à gauche donc dans les cellules :
G8:G16, G70:G78, G132:G140, G194:G202, G256:G264, G318:G326, G380:G388, G18:G26, G80:G88, G142:G150, G204:G212, G266:G274, G328:G336, G390:G398
N8:N16, N70:N78, N132:N140, N194:N202, N256:N264, N318:N326, N380:N388, N18:N26, N80:N88, N142:N150, N204:N212, N266:N274, N328:N336, N390:N398
U8:U16, U70:U78, U132:U140, U194:U202, U256:U264, U318:U326, U380:U388, U18:U26, U80:U88, U142:U150, U204:U212, U266:U274, U328:U336, U390:U398
AB8:AB16, AB70:AB78, AB132:AB140, AB194:AB202, AB256:AB264, AB318:AB326, AB380:AB388, AB18:AB26, AB80:AB88, AB142:AB150, AB204:AB212, AB266:AB274, AB328:AB336, AB390:AB398
AI8:AI16, AI70:AI78, AI132:AI140, AI194:AI202, AI256:AI264, AI318:AI326, AI380:AI388, AI18:AI26, AI80:AI88, AI142:AI150, AI204:AI212, AI266:AI274, AI328:AI336, AI390:AI398

MAIS JE PENSE QUE VOUS AVIEZ DEJA COMPRIS TOUT CA....


MERCI POUR VOTRE AIDE
BONNE JOURNEE
 
B

Bud

Guest
Cher Jean Marie,

je vous joint ici le fichier modifié où j'ai ajouté une nouvelle feuille appelée 'APPLICATION' dans laquelle vous verrez exactement où les listes SOUSMATIERE et SOLUTION doivent s'appliquer. Celles-ci apparaissent en vert clair puis rosé (3 cases sur la droite)...

Merci de votre aide. Sachez que je mesure sincèrement la chance que j'ai de recevoir votre précieuse aide...

Amicalement [file name=ListeEnCascade2.zip size=19643]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ListeEnCascade2.zip[/file]
 

Pièces jointes

  • ListeEnCascade2.zip
    19.2 KB · Affichages: 19

JeanMarie

XLDnaute Barbatruc
Bonsoir

Bud, tes plages ont des dimensions bien définies 7 colonnes/ 62 lignes, ce qui va alléger ton travail.

En faisant un copier/coller les listes de validation sont reportées sur la cellule de destination. Sélectionne la plage A1:G62, tu fais un copier de cette plage, et tu sélectionnes les plages de destinations et tu colles.

Le code reste le même.

@+Jean-Marie
 
B

Bud

Guest
Bonjour Jean Marie,

J'ai bien essayé de suivre vos conseils mais ça ne marche pas. Le menu déroulant s'inscrit effectivement mais je ne peux pas accéder aux sousmatières et la seul choix possible reste la matière principale.

Je vous joint de nouveau le fichier modifié pour que vous le constatier par vous-même.
De plus, ou me faut-il sélectionner la plage A1:G62 : Je ne sais vraiment pas. Désolé si je vous semble complètement nul...

De plus, je vous redonne le code que j'ai mis sans les ; . Le pb se trouve peut-être ici

Private Sub Worksheet_Change(ByVal Target As Range)
' Activé au changement de sélection de cellule seulement en colonne 1 et 2 et en dessous de la ligne 13

With ActiveCell.Validation
On Error Resume Next
If .InCellDropdown = True Then
Select Case .Formula1
Case '=SousMatière'
If WorksheetFunction.CountIf(Worksheets('Liste').Range('$D$2:$L$4'), Target) = 0 Then
SendKeys '%{DOWN}'
End If
Case '=Solution'
If WorksheetFunction.CountIf(Worksheets('BASE DE DONNEES').Range('$L$1:$N$8'), Target) = 0 Then
SendKeys '%{DOWN}'
End If
End Select
End If
End With
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Activé au changement de sélection de cellule seulement en colonne 1 et 2 et en dessous de la ligne 13
With ActiveCell.Validation
On Error Resume Next
If .InCellDropdown = True Then
Select Case .Formula1
Case '=SousMatière'
If WorksheetFunction.CountIf(Worksheets('Liste').Range('$D$2:$L$4'), Target) = 0 Then
SendKeys '%{DOWN}'
End If
Case '=Solution'
If WorksheetFunction.CountIf(Worksheets('BASE DE DONNEES').Range('$L$1:$N$8'), Target) = 0 Then
SendKeys '%{DOWN}'
End If
End Select
End If
End With [file name=ListeEnCascade3.zip size=21248]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ListeEnCascade3.zip[/file]
 

Pièces jointes

  • ListeEnCascade3.zip
    20.8 KB · Affichages: 18

JeanMarie

XLDnaute Barbatruc
Bonsoir Bud

Le problème pour la Liste de validation 'Solution' se situait dans la définition des reférences des cellules dans la formule.

Pour le problème de recopie, il suffissait de le faire la sélection au niveau des colonnes et des lignes et non au nivau de plages de cellules pour résoudre le problème.

Dans la fichier qui est fonctionnel, la formule est changée, les recopies effectuées.

J'ai du faire du ménage, la feuille 'Base de donnée' est supprimée, les données déplacées dans la feuille 'Liste', elles se trouvent à la fin dans la feuille.

Ne change pas le nom de cette feuille, la formule du nom 'solution' ne devant pas dépasser 255 caractères, et le code devra être adapté
Un autre conseil ne change pas la présentation de ta feuille.

@+Jean-Marie
 

JeanMarie

XLDnaute Barbatruc
bonjour

Oups le fichier, le voici

@+Jean-Marie [file name=ListeEnCascade3_20050311124031.zip size=18503]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ListeEnCascade3_20050311124031.zip[/file]
 

Pièces jointes

  • ListeEnCascade3_20050311124031.zip
    18.1 KB · Affichages: 13

Discussions similaires

Réponses
14
Affichages
781
Réponses
3
Affichages
419

Statistiques des forums

Discussions
312 677
Messages
2 090 825
Membres
104 677
dernier inscrit
soufiane12