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

liste déroulante modifier la plage d'entrée par VBA

5 réponses
Avatar
GGAL
Bonjour,

J'ai créé une liste déroulante par la méthode Affichage>Barre
d'outils>Formulaires, puis zone de liste déroulante. Dans la plage d'entrée
j'ai la plage nommée : plage_1
Je souhaiterais renommer la plage d'entrée par macro.
Par exemple :
Si T>1 alors plage_1
Si T<1 alors plage_2
Pouvez-vous m'aider, merci d'avance.
GGAL

5 réponses

Avatar
Jacky
Bonjour,

Si mes souvenirs sont corrects et si j'ai bien compris.
Ceci attribut à une liste déroulante nommée("Drop Down 1"),
la liste nommée "plage1" pour t>1 et la liste nommée "plage2" pour t<1
Adapter la cellule liée ( .LinkedCell ) et le nombre de lignes (
.DropDownLines )

'----------
Sub jj()
If t > 1 Then
ActiveSheet.Shapes("Drop Down 1").Select
With Selection
.ListFillRange = "plage1"
.LinkedCell = "$C$1"
.DropDownLines = 10
End With
End If

If t < 1 Then
ActiveSheet.Shapes("Drop Down 1").Select
With Selection
.ListFillRange = "plage2"
.LinkedCell = "$C$1"
.DropDownLines = 10
End With
End If
Range("C1").Select
End Sub
'----------------
PS: pourquoi ne pas utiliser une liste dans une cellule avec
Données/validation/liste, beaucoup plus simple.
--
Salutations
JJ


"GGAL" a écrit dans le message de news:

Bonjour,

J'ai créé une liste déroulante par la méthode Affichage>Barre
d'outils>Formulaires, puis zone de liste déroulante. Dans la plage
d'entrée
j'ai la plage nommée : plage_1
Je souhaiterais renommer la plage d'entrée par macro.
Par exemple :
Si T>1 alors plage_1
Si T<1 alors plage_2
Pouvez-vous m'aider, merci d'avance.
GGAL


Avatar
isabelle
bonjour GGAL,

If T > 1 Then
plg = plage_1
Else
plg = plage_2
End If
ActiveSheet.Shapes("Drop Down 1").Select
With Selection
.ListFillRange = plg
.LinkedCell = "$A$1"
.DropDownLines = 8
.Display3DShading = False
End With

isabelle

Bonjour,

J'ai créé une liste déroulante par la méthode Affichage>Barre
d'outils>Formulaires, puis zone de liste déroulante. Dans la plage d'entrée
j'ai la plage nommée : plage_1
Je souhaiterais renommer la plage d'entrée par macro.
Par exemple :
Si T>1 alors plage_1
Si T<1 alors plage_2
Pouvez-vous m'aider, merci d'avance.
GGAL


Avatar
isabelle
correction :

If T > 1 Then
plg = Range("plage_1").Address
Else
plg = Range("plage_2").Address
End If
ActiveSheet.Shapes("Drop Down 1").Select
With Selection
.ListFillRange = plg
.LinkedCell = "$A$1"
.DropDownLines = 8
.Display3DShading = False
End With

isabelle

bonjour GGAL,

If T > 1 Then
plg = plage_1
Else
plg = plage_2
End If
ActiveSheet.Shapes("Drop Down 1").Select
With Selection
.ListFillRange = plg
.LinkedCell = "$A$1"
.DropDownLines = 8
.Display3DShading = False
End With

isabelle

Bonjour,

J'ai créé une liste déroulante par la méthode Affichage>Barre
d'outils>Formulaires, puis zone de liste déroulante. Dans la plage
d'entrée j'ai la plage nommée : plage_1
Je souhaiterais renommer la plage d'entrée par macro.
Par exemple :
Si T>1 alors plage_1
Si T<1 alors plage_2
Pouvez-vous m'aider, merci d'avance.
GGAL




Avatar
Filochard
J'ai créé une liste déroulante par la méthode Affichage>Barre
d'outils>Formulaires, puis zone de liste déroulante. Dans la plage d'entrée
j'ai la plage nommée : plage_1
Je souhaiterais renommer la plage d'entrée par macro.


La zone de liste étant nommée "zn" et les plages de références "plage_1" et
"plage_2"

Sub Test()
T = 100
With ActiveSheet
Select Case T
Case Is > 1
.DropDowns("zn").List = [plage_1]
.DropDowns("zn").ListIndex = 1
Case Is < 1
.DropDowns("zn").List = [plage_2]
.DropDowns("zn").ListIndex = 1
End Select
End With
End Sub

Avatar
GGAL
C'est ce que je cherchais.
En fait j'ai des listes déroulantes en cascade. La première ne doit pas
apparaitre à l'impression. C'est pourquoi j'essaie par cette voie tout en
conservant une saisie homogène.
J'ai également testé la méthode Données/validation/liste avec :
Range("A1").Validation.Modify Formula1:="=plage_1"
Range("A1").Select
Range("A1") = Range("plage_1").Item(1)
etc.

Merci beaucoup,
GGAL


Bonjour,

Si mes souvenirs sont corrects et si j'ai bien compris.
Ceci attribut à une liste déroulante nommée("Drop Down 1"),
la liste nommée "plage1" pour t>1 et la liste nommée "plage2" pour t<1
Adapter la cellule liée ( .LinkedCell ) et le nombre de lignes (
..DropDownLines )

'----------
Sub jj()
If t > 1 Then
ActiveSheet.Shapes("Drop Down 1").Select
With Selection
.ListFillRange = "plage1"
.LinkedCell = "$C$1"
.DropDownLines = 10
End With
End If

If t < 1 Then
ActiveSheet.Shapes("Drop Down 1").Select
With Selection
.ListFillRange = "plage2"
.LinkedCell = "$C$1"
.DropDownLines = 10
End With
End If
Range("C1").Select
End Sub
'----------------
PS: pourquoi ne pas utiliser une liste dans une cellule avec
Données/validation/liste, beaucoup plus simple.
--
Salutations
JJ


"GGAL" a écrit dans le message de news:

Bonjour,

J'ai créé une liste déroulante par la méthode Affichage>Barre
d'outils>Formulaires, puis zone de liste déroulante. Dans la plage
d'entrée
j'ai la plage nommée : plage_1
Je souhaiterais renommer la plage d'entrée par macro.
Par exemple :
Si T>1 alors plage_1
Si T<1 alors plage_2
Pouvez-vous m'aider, merci d'avance.
GGAL