Modification macro menu déroulant à plusieurs conditions

Bud.boundy

XLDnaute Occasionnel
Bonjour,

J'aimerais apporter une évolution à une macro créée il y a quelques temps grâce à ce forum... En effet, comme vous pourrez le constater dans le fichier joint, mon menu déroulant à plusieurs conditions fonctionnent parfaitement dans la colonne A... Maintenant j'aimerais ajouter à cette macro l'affichage des critères intermédiaires dans les cellules correspondantes dans les colonnes B, C et D... ainsi de suite...
Exemple : Si j'arrive à Critère n°1.4.2, doit s'afficher en B Critère n°1, puis en C critère n°1.4 puis en D critère 1.4.2... ainsi de suite sachant que cette somme de critère peux aller jusqu'à 10... cad : critère n°1.4.2.2.4.3.1

Merci de votre comprehension et pour l'aide que vous pourrez m'apporter....

A bientôt
Bud
 

Pièces jointes

  • MODIF.zip
    21.2 KB · Affichages: 104
  • MODIF.zip
    21.2 KB · Affichages: 103
  • MODIF.zip
    21.2 KB · Affichages: 107

Bud.boundy

XLDnaute Occasionnel
Re : Modification macro menu déroulant à plusieurs conditions

Bonjour,

Je vous remets une pièce jointe avec un exemple de ce que je souhaiterais automatiser au cas où mon problème aurait été mal expliqué...

Merci d'avance
 

Pièces jointes

  • A LAIDE.zip
    21.5 KB · Affichages: 78

JeanMarie

XLDnaute Barbatruc
Re : Modification macro menu déroulant à plusieurs conditions

Bonjour,

J'ai pas compris, si tu voulais une solution en macro ou en formule

Formule à mettre en B2, et à faire un glisser/déposer sur les autres cellules
Code:
=SI(ET($A2<>"";(NBCAR($A2)-NBCAR(SUBSTITUE($A2;".";"")))>=COLONNE()-2);STXT($A2;1;CHERCHE("µ";SUBSTITUE($A2&".";".";"µ";COLONNE()-1))-1);"")
@+Jean-Marie
 

Bud.boundy

XLDnaute Occasionnel
Re : Modification macro menu déroulant à plusieurs conditions

Rebonjour,

Merci Jean-Marie ta solution est interessante mais j'aimerais faire une macro parceque mes futurs choix ne seront pas présentés comme dans le fichier joint... Imaginons plutôt : : Choix n°1 : Animaux (colonne C) ; Choix n°2 : Mammifère (colonne D) , Choix n°3 : Chien (colonne E) ; Choix n°4 : Labrador (colonne F)...

Merci et à bientôt
Désolé Jean-Marie mais 1000 mercis quand même
 

myDearFriend!

XLDnaute Barbatruc
Re : Modification macro menu déroulant à plusieurs conditions

Bonjour Bud.boundy, JeanMarie, le Forum,

Notre ami JeanMarie s'étant absenté pour 2 jours, je prends la relève...

Bud, tu trouveras ci-joint ton classeur modifié pour tenter de répondre à ta question.

J'ai utilisé le code ci-dessous (dans le module de code de la feuille "PROGRAMME").

Code:
[SIZE=2]Option [COLOR=navy]Explicit
Dim [/COLOR]RAZcell[COLOR=navy] As Boolean[/COLOR]

[COLOR=navy]Private Sub[/COLOR] Worksheet_Change([COLOR=navy]ByVal[/COLOR] Target[COLOR=navy] As [/COLOR]Range)
[COLOR=green]'myDearFriend! - Août 2006[/COLOR]
[COLOR=navy]Static[/COLOR] EnCours[COLOR=navy] As Boolean
Dim [/COLOR]F[COLOR=navy] As [/COLOR]Worksheet
[COLOR=navy]Dim [/COLOR]Deroul[COLOR=navy] As Boolean[/COLOR]
      [COLOR=navy]If [/COLOR]EnCours [COLOR=navy]Then Exit Sub[/COLOR]      [COLOR=green]'pour éviter boucle sur évènement[/COLOR]
      [COLOR=navy]If Not [/COLOR]CelluleOK(ActiveCell) [COLOR=navy]Then Exit Sub[/COLOR]   [COLOR=green]'ne gère que les cellules cibles[/COLOR]
      [COLOR=navy]With[/COLOR] ActiveCell
           [COLOR=navy]If [/COLOR].Validation.InCellDropdown = [COLOR=navy]True Then[/COLOR]
                  EnCours = [COLOR=navy]True[/COLOR]
                  [COLOR=navy]If [/COLOR]RAZcell [COLOR=navy]Then[/COLOR]        [COLOR=green]'RAZ de la ligne[/COLOR]
                        .EntireRow.Range("B1:IV1").ClearContents
                        RAZcell = [COLOR=navy]False[/COLOR]
                  [COLOR=navy]End If[/COLOR]
                  [COLOR=navy]If [/COLOR]Application.CountIf(.EntireRow, .Value) < 2 [COLOR=navy]Then[/COLOR]        [COLOR=green]'MAJ de la ligne[/COLOR]
                        .EntireRow.Range("IV1").[COLOR=navy]End[/COLOR](xlToLeft).Offset(0, 1).Value = .Value
                  [COLOR=navy]End If[/COLOR]
                  [COLOR=green]'Gestion du Dropdown[/COLOR]
                  [COLOR=navy]Set[/COLOR] F = Worksheets("[COLOR=navy]Base[/COLOR]")
                  [COLOR=navy]Select Case[/COLOR] ActiveCell.Validation.Formula1
                  [COLOR=navy]Case[/COLOR] "=SousMatière"
                       Deroul = Application.CountIf(F.Range("Matière"), .Value) = 1
                  [COLOR=navy]Case[/COLOR] "=Solution"
                       Deroul = Application.CountIf(F.Range("$J$1:$AV$8"), .Value) = 0
                  [COLOR=navy]End Select[/COLOR]
                  [COLOR=navy]If [/COLOR]Deroul [COLOR=navy]Then[/COLOR]
                        SendKeys "%{DOWN}"
                  [COLOR=navy]Else[/COLOR]
                        .Value = ""
                  [COLOR=navy]End If[/COLOR]
           [COLOR=navy]End If[/COLOR]
      [COLOR=navy]End With[/COLOR]
      EnCours = [COLOR=navy]False
End Sub[/COLOR]

[COLOR=navy]Private Sub[/COLOR] Worksheet_[COLOR=navy]Select[/COLOR]ionChange([COLOR=navy]ByVal[/COLOR] Target[COLOR=navy] As [/COLOR]Range)
      [COLOR=navy]If Not [/COLOR]CelluleOK(ActiveCell) [COLOR=navy]Then Exit Sub[/COLOR]
      SendKeys "%{DOWN}"
      RAZcell = Is[COLOR=navy]Empty[/COLOR](ActiveCell)
[COLOR=navy]End Sub[/COLOR]

[COLOR=navy]Private [COLOR=navy]Function[/COLOR] CelluleOK([COLOR=navy]ByVal[/COLOR] C[COLOR=navy] As [/COLOR]Range)[COLOR=navy] As Boolean[/COLOR]
[COLOR=green]' Vérifie si la cellule cible est située en colonne A et contient bien une liste de validation[/COLOR]
      [COLOR=navy]If [/COLOR]Application.Intersect(C, Columns(1))[COLOR=navy] Is Nothing Then Exit Function[/COLOR]
      [COLOR=navy]On Error Resume Next[/COLOR]
      CelluleOK = C.Validation.[COLOR=navy]Type[/COLOR] = xlValidateList
[COLOR=navy]End[/COLOR] Function[/COLOR][/SIZE]
La difficulté consistait à éviter le cumul des données "sans fin" sur la ligne... J'ai dû pour ça imposer l'effacement de la cellule en colonne A une fois la série "consommée".
Il conviendra sans doute d'adapter ce code avec tes listes de validation "=Solution" (que je n'ai trouvées nulle part)...

Je n'ai, par contre, pas touché au code présent dans le module de code de l'objet ThisWorkbook (qui n'a rien à voir avec le problème indiqué)...

En espérant t'avoir donné une piste pour ton projet,
Bonne chance pour la suite.

Cordialement,
 

Pièces jointes

  • mDF_PourBud.zip
    24.1 KB · Affichages: 93

Bud.boundy

XLDnaute Occasionnel
Re : Modification macro menu déroulant à plusieurs conditions

Bonjour,

Je constate avec bonheur que vous avez trouvé la solution à mon problème et c'est tout simplement FORMIDABLE... Simplement, après avoir de nouveau réfléchi, j'aimerais changer ma macro initiale... et faire que mes 2ème, 3 ème et Xème choix se fasse différemment...

Vous constaterez dans la feuille base que la suite de choix se fera dans la continuité de la colonne (Si CHOIX n°3, choisir C2:C15, choisir C17:C30, choisir C32:C45, etc... (si non vide)) et non plus par rapport au nom...

Le problème est toujours le même, je ne sais pas faire...

Merci de votre compréhension...

Merci beaucoup, sincèrement...
 

Pièces jointes

  • NVEAU.zip
    20.8 KB · Affichages: 68
  • NVEAU.zip
    20.8 KB · Affichages: 68
  • NVEAU.zip
    20.8 KB · Affichages: 66

myDearFriend!

XLDnaute Barbatruc
Re : Modification macro menu déroulant à plusieurs conditions

Bonjour le fil,

Bon ben les gars, merci je ne comprends plus rien à la demande...

Bud, tu commences déjà par refaire un tour du côté des fils que t'indique (à juste titre !) notre ami Myta et faire ce qu'il convient de faire...

Mutzik, la solution que tu indiques est certainement bien plus élégante (sûrement puisqu'il s'agit d'une démo de MichelXLD) sauf que je n'ai pas tout à fait compris le rapport avec la question de ce fil... peut-être que si tu l'adaptais au problème soumis ici on pourrait tous en tirer un enseignement...

Bonne journée.
 

mutzik

XLDnaute Barbatruc
Re : Modification macro menu déroulant à plusieurs conditions

bonjour le fil, everybody,

MdF, après avoir lu les differents messages de bud.boundy, je pensais que ce qu'il cherchait était de selectionner comme il l'indique :
Choix n°1 : Animaux (colonne C) ; Choix n°2 : Mammifère (colonne D) , Choix n°3 : Chien (colonne E) ; Choix n°4 : Labrador (colonne F)...
et que si ses données sont bien structurées, un treeview devrait faire l'affaire

Après reflexion, je me dis que plusieurs animaux peuvent appartenir à différentes familles et que cela complique singulièrement les choses

D'autre part, ne sachant absolument pas quel est le but premier de ce qu'il cherche à réaliser, il m'est difficile de le conseiller correctement

Alors, bud.boundy, si tu pouvais éclairer notre lanterne quant à la finalité de ton appli, ...
 

Bud.boundy

XLDnaute Occasionnel
Re : Modification macro menu déroulant à plusieurs conditions

Bonjour à tous,

Merci pour tout l'intérêt que vous portez à mon projet...
D'abord excusez-moi d'avoir un peu mélanger tout mes posts...
mon intention n'était pas de nuire à la bonne marche de ce forum...


Enfin pour repondre à ta question Mutzik, j'ai décidé après mûre réfléxion de réorganiser ma demande comme lors de mon dernier message afin que de mes 2ème, 3ème etXème choix apparaisse comme dans le fichier joint Nveau que vous retrouverez un peu plus haut... Sachez aussi que mes choix relatifs aux animaux n'étaient qu'un exemple et que les données que je vais traitér à l'avenir n'auront rien à voir...

En tous les cas MERCI A TOUS... C'est super de se savoir aider...
 

mutzik

XLDnaute Barbatruc
Re : Modification macro menu déroulant à plusieurs conditions

Re le fil, toutes et tous,

ce qui fait que je ne sais toujours pas :
1. à quoi cela peut bien servir (j'aime bien comprendre pourquoi je fais les choses)
2. si les codes VBA qui t'ont été fournis te conviennent (je les ai essayé, ils fct sans prob)
3. question : es-tu sur de ne jamais avoir plus de 15 critères dans une selection, car il faudra de nouveau tout réorganiser si tel était le cas (d'ou ma demande de comprendre à quoi cela pouvait servir, sauf si c'est confid ou privé, bien sur)
 

Bud.boundy

XLDnaute Occasionnel
Re : Modification macro menu déroulant à plusieurs conditions

Bonjour à tous,

mon projet vise à une prise de note rapide et simplifiée d'évènements...

Les codes VBA fonctionnent effectivement parfaitement bien, mais maintenant j'aimerais changer ma macro initiales (qui utilisent les listes "MATIERE"; "SOUSMATIERE") afin que mes 2ème, 3ème et Xème choix apparaissent sur une les colonne... Comme montrer dans le fichier Nveau que vous trouverez plus haut...

Enfin je suis sûr de ne pas utiliser plus de 15 critères par sélection...
Voilà merci pour votre aide et votre curiosité pour mon projet
A bientôt
 

Bud.boundy

XLDnaute Occasionnel
Re : Modification macro menu déroulant à plusieurs conditions

Bonjour,

Je pense qu'il s'agit de changer le code suivant : (mais comment faire ???)

Case "=Solution"
Deroul = Application.CountIf(F.Range("$J$1:$AV$8"), .Value) = 0
End Select

Merci de votre aide...
 

Discussions similaires

Statistiques des forums

Discussions
312 523
Messages
2 089 306
Membres
104 119
dernier inscrit
karbone57