Menu déroulant en VBA sous excel

Fermé
yannou14 Messages postés 1 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 24 juin 2008 - 24 juin 2008 à 10:54
 Yannou14 - 25 juin 2008 à 11:04
Bonjour,
j'ai récupéré une macro en VBA sur excel afin de proposer une liste déroulante (ou menu) à l'utilisateur de ma base de donnée.
Le problèmer est que cette liste qui fait référence à une autre feuille contenant les " postes " à sélectionner par l'utilisateur est bridée et ne propose pas tout les "postes" décrits...
Comment faire pour augmenter, via la macro en VBA, la taille de la matrice de choix (ou de la feuille : "base de données") ?
Par avance merci
Yann
A voir également:

3 réponses

bonjour,

je ne comprend pas trop, c'est un tableau croisé dynamique? ton menu déroulant qui est rataché a ta base est rlié comment(quelle formule?)?
0
m@rina Messages postés 21080 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 15 novembre 2024 11 350
24 juin 2008 à 21:21
Bonsoir,

Pas bien clair en effet... Je verrais bien néanmoins l'utilisation d'une formule DECALER pour nommer les plages afin que le nom de la plage s'adapte à cette dernièe en fonction des ajouts (ou des suppressions). Ce qui fait que ta liste déroulante serait proposerait toujours le contenu de ta base...
C'est ce qu'il fallait comprendre ??? ;))

m@rina
0
En fait je cherche à augmenter le volume de mon menu déroulant, ce dernier ne va pas chercher tout les postes il s'arrête aux 20 premiers postes.
Je souhaiterai trouver dans le programme ce qui "quantifie" la "matrice" de données liée à ma feuille base de données.
Je vous joint ci dessous mon programme:

Sub Format_ligne_du_DE()
Application.Goto Reference:="Point_insertion"
ActiveCell.Offset(-1, 0).Range("A1").Select
Application.CutCopyMode = False
With Selection.Font
.Name = "Arial"
.FontStyle = "Gras"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlNone
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlLeft)
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
Selection.Borders(xlBottom).LineStyle = xlNone
Selection.BorderAround LineStyle:=xlNone
ActiveCell.Offset(0, 1).Range("A1").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = xlHorizontal
End With
With Selection.Borders(xlLeft)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
Selection.Borders(xlBottom).LineStyle = xlNone
Selection.BorderAround LineStyle:=xlNone
ActiveCell.Offset(0, 1).Range("A1").Select
With Selection.Borders(xlLeft)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
Selection.Borders(xlBottom).LineStyle = xlNone
Selection.BorderAround LineStyle:=xlNone
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.NumberFormat = "# ##0,00_ ;-# ##0,00\ "
With Selection.Borders(xlLeft)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
Selection.Borders(xlBottom).LineStyle = xlNone
Selection.BorderAround LineStyle:=xlNone
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.NumberFormat = "# ##0,00_ ;-# ##0,00\ "
With Selection.Borders(xlLeft)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
Selection.Borders(xlBottom).LineStyle = xlNone
Selection.BorderAround LineStyle:=xlNone
Selection.Style = "Milliers"
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.NumberFormat = "# ##0,00_ ;-# ##0,00\ "
ActiveCell.Offset(0, -2).Range("A1").Select
ActiveCell.Offset(0, -2).Range("A1:E1").Select
Selection.Font.Bold = False
ActiveCell.Offset(0, 2).Range("A1").Select
Application.Goto Reference:="Point_insertion"
ActiveCell.Offset(-1, 0).Range("A1").Select
Selection.Font.Bold = True
ActiveCell.Rows("1:1").EntireRow.EntireRow. _
AutoFit
ActiveCell.Offset(0, 3).Range("A1").Select



End Sub

Voila merci d'avance et n'hésitez pas si je ne suis pas assez clair ...
Yann
0
m@rina Messages postés 21080 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 15 novembre 2024 11 350
25 juin 2008 à 10:43
Bonjour,

J'ai regardé rapidement mais je ne vois dans ton code que du formatage...

Essaie de nous en dire plus : ta liste déroulante, elle est dans ta feuille ou dans un Userform ?
Si elle est dans ta feuille, comment l'as tu insérées.

Les items d'une liste déroulante insérée dans une Userform dépendent de la propriété RowSource.
Les items d'une liste déroulante (Controle ActiveX) insérée dans une feuille dépendent de la propriété ListFillRange
Les items d'une liste déroulante de formulaire insérée dans une feuille dépendent de la plage d'entrée accessible par un clic doit => Format du contrôle (pas de macro).

Le mieux est de nommer la plage de la feuille qui contient les items et de donner dans les propriétés de la liste le nom de cette plage. La plage peut évoluer en fionction de la base de données et le nom peut évoluer avec avec une fonction DECALER (oui, oui, j'y reviens !...)

m@rina
0
M@rina,
il s'agit d'une userform... pour le reste je me renseigne car je débute et je nage un peu !
Merci encore
yann
0
En fait le programme de base est le suivant:

Sub Saisir_et_insérer_titre_prix()


DialogSheets("Dialog2").Show
Application.Goto Reference:="Point_insertion"
Selection.EntireRow.Insert
Sheets("Cadre").Select
Range("a2:f2").Select
Selection.Copy
Application.Goto Reference:="Point_insertion"
ActiveCell.Offset(-1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("F2").Select
Application.CutCopyMode = False
Selection.Copy
Application.Goto Reference:="Point_insertion"
ActiveCell.Offset(-1, 5).Range("A1").Select
Selection.PasteSpecial Paste:=xlFormulas, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.Run Macro:="APD.xls!Format_ligne_du_DE"

End Sub

Voila ...
Redis moi si ça t'aide ???
Yann
0