Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Que dois-je modifier

7 réponses
Avatar
MEB
Bonjour,

J'utilise les deux s=E9ries de codes ci-dessous afin d'obtenir une
deuxi=E8me liste d=E9roulante conditionnelle au r=E9sultat de la premi=E8re=
.
=C7a fonctionne super bien mais j'aimerais l'utiliser dans une autre
situation ou de voudrais que ma liste 1 se situe =E0 la Cellule F12 et
que la liste conditionnelle apparaissent =E0 la cellule F13 et non =E0 la
cellule G12.

Comme je ne suis pas tr=E8s bonne dans ce "Charabia" qui sont les code
VB, pouvez-vous me venir en aide en m'indiquant ce que je dois
modifier afin de d=E9placer le r=E9sultat vers le bas plut=F4t que vers la
droite.

Merci


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F12")) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub
Select Case Target.Value
Case Is =3D "Marketing"
ListeDeValidation Target.Offset(, 1), "Liste_Marketing"
Target.Offset(, 1).Activate
SendKeys "{F2}"
Case Is =3D "Finance"
ListeDeValidation Target.Offset(, 1), "Liste_Finance"
Target.Offset(, 1).Activate
SendKeys "{F2}"
End Select
End If
End Sub
'--------------------------
Sub ListeDeValidation(Plg As Range, Maliste As String)
With Plg.Validation
.Delete
.Add Type:=3DxlValidateList, AlertStyle:=3DxlValidAlertStop,
Operator:=3D _
xlBetween, Formula1:=3D"=3D" & Maliste
.IgnoreBlank =3D True
.InCellDropdown =3D True
.InputTitle =3D ""
.ErrorTitle =3D ""
.InputMessage =3D ""
.ErrorMessage =3D ""
.ShowInput =3D True
.ShowError =3D True
End With
End Sub

7 réponses

Avatar
LSteph
Bonjour,

si j'ai bien compris

offset(1,0) au lieu de offset(,1)

Cordialement.

--
LSteph

On 4 mar, 14:31, MEB wrote:
Bonjour,

J'utilise les deux séries de codes ci-dessous afin d'obtenir une
deuxième liste déroulante conditionnelle au résultat de la premiè re.
Ça fonctionne super bien mais j'aimerais l'utiliser dans une autre
situation ou de voudrais que ma liste 1 se situe à la Cellule F12 et
que la liste conditionnelle apparaissent à la cellule F13 et non à la
cellule G12.

Comme je ne suis pas très bonne dans ce "Charabia" qui sont les code
VB, pouvez-vous me venir en aide en m'indiquant ce que je dois
modifier afin de déplacer le résultat vers le bas plutôt que vers l a
droite.

Merci

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F12")) Is Nothing Then
    If Target.Cells.Count > 1 Then Exit Sub
    Select Case Target.Value
        Case Is = "Marketing"
           ListeDeValidation Target.Offset(, 1), "Liste_Marke ting"
           Target.Offset(, 1).Activate
           SendKeys "{F2}"
        Case Is = "Finance"
            ListeDeValidation Target.Offset(, 1), "Liste_Fina nce"
           Target.Offset(, 1).Activate
           SendKeys "{F2}"
    End Select
End If
End Sub
'--------------------------
Sub ListeDeValidation(Plg As Range, Maliste As String)
    With Plg.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertSt op,
Operator:= _
        xlBetween, Formula1:="=" & Maliste
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Avatar
LSteph
...re,
je remarque un petit inconvénient également dans ce code, ce qui est
déjà saisi reste mm si c'est pas la bpnne validation donc je
proposerais ceci:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F12")) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub
Select Case Target.Value
Case Is = "Marketing"
ListeDeValidation Target.Offset(1, 0), "Liste_Marketing"


Case Is = "Finance"
ListeDeValidation Target.Offset(1, 0), "Liste_Finance"

End Select
End If
End Sub
'--------------------------
Sub ListeDeValidation(Plg As Range, Maliste As String)
With Plg.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:= _
xlBetween, Formula1:="=" & Maliste
.IgnoreBlank = True
.InCellDropdown = True

.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Plg.Activate
Plg.ClearContents
End Sub







On 4 mar, 16:16, LSteph wrote:
Bonjour,

si j'ai bien compris

offset(1,0) au lieu de offset(,1)

Cordialement.

--
LSteph

On 4 mar, 14:31, MEB wrote:



> Bonjour,

> J'utilise les deux séries de codes ci-dessous afin d'obtenir une
> deuxième liste déroulante conditionnelle au résultat de la premi ère.
> Ça fonctionne super bien mais j'aimerais l'utiliser dans une autre
> situation ou de voudrais que ma liste 1 se situe à la Cellule F12 et
> que la liste conditionnelle apparaissent à la cellule F13 et non à la
> cellule G12.

> Comme je ne suis pas très bonne dans ce "Charabia" qui sont les code
> VB, pouvez-vous me venir en aide en m'indiquant ce que je dois
> modifier afin de déplacer le résultat vers le bas plutôt que vers la
> droite.

> Merci

> Private Sub Worksheet_Change(ByVal Target As Range)
> If Not Intersect(Target, Range("F12")) Is Nothing Then
>     If Target.Cells.Count > 1 Then Exit Sub
>     Select Case Target.Value
>         Case Is = "Marketing"
>            ListeDeValidation Target.Offset(, 1), "Liste_Mar keting"
>            Target.Offset(, 1).Activate
>            SendKeys "{F2}"
>         Case Is = "Finance"
>             ListeDeValidation Target.Offset(, 1), "Liste_Fi nance"
>            Target.Offset(, 1).Activate
>            SendKeys "{F2}"
>     End Select
> End If
> End Sub
> '--------------------------
> Sub ListeDeValidation(Plg As Range, Maliste As String)
>     With Plg.Validation
>         .Delete
>         .Add Type:=xlValidateList, AlertStyle:=xlValidAlert Stop,
> Operator:= _
>         xlBetween, Formula1:="=" & Maliste
>         .IgnoreBlank = True
>         .InCellDropdown = True
>         .InputTitle = ""
>         .ErrorTitle = ""
>         .InputMessage = ""
>         .ErrorMessage = ""
>         .ShowInput = True
>         .ShowError = True
>     End With
> End Sub- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -
Avatar
MEB
Ça fonctionne, merci beaucoup !!!

Maintenant, j'ai un autre problème. Dans cette même feuille, je
voudrais insérer un peu plus bas une autre liste déroulante principale
qui m'offrira des listes conditionnelle au résultat de cette liste
principale. (pas de rapport entre la liste créée précédemment et ce tte
dernière à part le fait qu'elle soit sur la même feuille)

J'ai tenté de répéter mes deux séries de codes en dessous des premi ers
en les adaptant à mes besoins mais ça ne fonctionne pas.

Premièrement il me dit "Erreur de compilation : Nom ambigu détecté :
Worksheet_Change. J'imagine que je dois lui donner un nom différent
mais malgré cela, ça ne fonctionne toujours pas.

Pouvez-vous encore me venir en aide à ce sujet

Mille fois merci!!!!!
Avatar
LSteph
Bonjour,

Effectivement tu ne peux pas mettre un second change, il s'agit d'une
gestion et une seule appliquée pour un seul et même évennement.
En revanche cette gestion peut avoir englober une à une chaque action
à effectuer pour chaque autre possiblité de target (plage cible) que
F12

Cordialement.

--
LSteph


On 4 mar, 16:36, MEB wrote:
Ça fonctionne, merci beaucoup !!!

Maintenant, j'ai un autre problème. Dans cette même feuille, je
voudrais insérer un peu plus bas une autre liste déroulante principal e
qui m'offrira des listes conditionnelle au résultat de cette liste
principale. (pas de rapport entre la liste créée précédemment et cette
dernière à part le fait qu'elle soit sur la même feuille)

J'ai tenté de répéter mes deux séries de codes en dessous des pre miers
en les adaptant à mes besoins mais ça ne fonctionne pas.

Premièrement il me dit "Erreur de compilation :  Nom ambigu détect é :
Worksheet_Change. J'imagine que je dois lui donner un nom différent
mais malgré cela, ça ne fonctionne toujours pas.

Pouvez-vous encore me venir en aide à ce sujet

Mille fois merci!!!!!
Avatar
MEB
Concrètement, je m'y prends de quelle façon pour lui indiquer le tout.

Dois-je modifier F12:F18 pour F12:AA37 parce que mes autres listes se
situent à cet endroit
Private Sub Worksheet_Change1(ByVal Target As Range)
If Not Intersect(Target, Range("F12:F18")) Is Nothing Then
et ainsi de suite ......


Et comment j'ajoute mes autres listes de validation à celle-ci pour
qu'il reconnaisse quelle prendre et quand
Sub ListeDeValidation1(Plg As Range, Programme As String)
With Plg.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:="=" & Programme
.IgnoreBlank = True
et ainsi de suite.....


Je suis bien embêtée avec ces détails....

Merci encore
Avatar
MEB
OUBLIEZ MON DERNIER MESSAGE,

TOUT FONCTIONNE SUPER BIEN, J'AI RÉUSSI À FUSIONNER LE TOUT,

DÉSOLÉE DU DÉRANGEMENT

MERCI MERCI MERCI DE VOTRE AIDE

TRÈS APPRÉCIÉ !!!!!!!!
Avatar
LSteph
Re,
..je ne repasse pas sur le forum de suite.
Mets un exemple de ton classeur en cjoint avec la structure des listes
voulues; quelq'un d'autre te répondra.

Mais il n'y en aura peut etre pas besoin, mon idée que je n'ai pas le
temps de dévelloper de suite, si c'est pour une liste avec deux
possibilités comme dans ton 1er exemple, mettre un select case avec
items en dur dans le code pourquoi pas mais dès lors qu'il y a
plethore de listes possibles il serait plus dynamique de faire
correspondre directement les items de liste de pré choix avec ceux des
listes existantes et au lieu d'envisager un select case renvoyer via
la routine
Sub ListeDeValidation1(Plg As Range, Programme As String)

directement le nom reçu en choix comme parametre Plg désigné de la
sub
le cas échéant prévoir une gestion d'erreur , si ce nom ne
correspondait pas à une liste existante.

@+

--
LSteph




On 4 mar, 16:57, MEB wrote:
Concrètement, je m'y prends de quelle façon pour lui indiquer le tout .

Dois-je modifier F12:F18 pour F12:AA37 parce que mes autres listes se
situent à cet endroit
Private Sub Worksheet_Change1(ByVal Target As Range)
If Not Intersect(Target, Range("F12:F18")) Is Nothing Then
et ainsi de suite ......

Et comment j'ajoute mes autres listes de validation à celle-ci pour
qu'il reconnaisse quelle prendre et quand
Sub ListeDeValidation1(Plg As Range, Programme As String)
    With Plg.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertSt op,
Operator:= _
        xlBetween, Formula1:="=" & Programme
        .IgnoreBlank = True
    et ainsi de suite.....

Je suis bien embêtée avec ces détails....

Merci encore