Bonjour,
je développe une application Excel VBA qui doit être compatible MAC et WINDOWS. Les UserForms me sont donc interdites car non compatibles MAC.
J'utilise donc des formulaires (moins riches).
Dans les formulaires je souhaite afficher des listes d'objets qui comportent plusieurs colonnes mais les ListBox de formulaires :
- sont mono-colonne....
- ne permettent pas de forcer un affichage dans une police non justifée (type Courrier)...
Il est donc impossible de créer une listBox unique qui affiche une série d'informations bien alignées puisque la taille des caractères n'est pas constante...
J'ai donc fais plusieurs listbox accolées qui se synchronisent facilement mais dans lesquelles les lignes ne sont pas alignées dés que l'on se déplace dans une des listes au delà de la zone affichée.
Une solution meilleure que celle-ci dessous (voir aussi la PJ) ?
Merci d'avance
Option Explicit
Public Sub Dialogue1_Liste1_QuandChangement()
With ThisWorkbook.DialogSheets("Dialogue1")
Dim i As Integer
i = .ListBoxes("Liste1").ListIndex
.ListBoxes("Liste2").ListIndex = i
.ListBoxes("Liste3").ListIndex = i
.ListBoxes("Liste4").ListIndex = i
End With
End Sub
Public Sub Dialogue1_Liste2_QuandChangement()
With ThisWorkbook.DialogSheets("Dialogue1")
Dim i As Integer
i = .ListBoxes("Liste1").ListIndex
.ListBoxes("Liste1").ListIndex = i
.ListBoxes("Liste3").ListIndex = i
.ListBoxes("Liste4").ListIndex = i
End With
End Sub
Public Sub Dialogue1_Liste3_QuandChangement()
With ThisWorkbook.DialogSheets("Dialogue1")
Dim i As Integer
i = .ListBoxes("Liste3").ListIndex
.ListBoxes("Liste1").ListIndex = i
.ListBoxes("Liste2").ListIndex = i
.ListBoxes("Liste4").ListIndex = i
End With
End Sub
Public Sub Dialogue1_Liste4_QuandChangement()
With ThisWorkbook.DialogSheets("Dialogue1")
Dim i As Integer
i = .ListBoxes("Liste4").ListIndex
.ListBoxes("Liste1").ListIndex = i
.ListBoxes("Liste2").ListIndex = i
.ListBoxes("Liste3").ListIndex = i
End With
End Sub
je développe une application Excel VBA qui doit être compatible MAC et WINDOWS. Les UserForms me sont donc interdites car non compatibles MAC.
J'utilise donc des formulaires (moins riches).
Dans les formulaires je souhaite afficher des listes d'objets qui comportent plusieurs colonnes mais les ListBox de formulaires :
- sont mono-colonne....
- ne permettent pas de forcer un affichage dans une police non justifée (type Courrier)...
Il est donc impossible de créer une listBox unique qui affiche une série d'informations bien alignées puisque la taille des caractères n'est pas constante...
J'ai donc fais plusieurs listbox accolées qui se synchronisent facilement mais dans lesquelles les lignes ne sont pas alignées dés que l'on se déplace dans une des listes au delà de la zone affichée.
Une solution meilleure que celle-ci dessous (voir aussi la PJ) ?
Merci d'avance
Option Explicit
Public Sub Dialogue1_Liste1_QuandChangement()
With ThisWorkbook.DialogSheets("Dialogue1")
Dim i As Integer
i = .ListBoxes("Liste1").ListIndex
.ListBoxes("Liste2").ListIndex = i
.ListBoxes("Liste3").ListIndex = i
.ListBoxes("Liste4").ListIndex = i
End With
End Sub
Public Sub Dialogue1_Liste2_QuandChangement()
With ThisWorkbook.DialogSheets("Dialogue1")
Dim i As Integer
i = .ListBoxes("Liste1").ListIndex
.ListBoxes("Liste1").ListIndex = i
.ListBoxes("Liste3").ListIndex = i
.ListBoxes("Liste4").ListIndex = i
End With
End Sub
Public Sub Dialogue1_Liste3_QuandChangement()
With ThisWorkbook.DialogSheets("Dialogue1")
Dim i As Integer
i = .ListBoxes("Liste3").ListIndex
.ListBoxes("Liste1").ListIndex = i
.ListBoxes("Liste2").ListIndex = i
.ListBoxes("Liste4").ListIndex = i
End With
End Sub
Public Sub Dialogue1_Liste4_QuandChangement()
With ThisWorkbook.DialogSheets("Dialogue1")
Dim i As Integer
i = .ListBoxes("Liste4").ListIndex
.ListBoxes("Liste1").ListIndex = i
.ListBoxes("Liste2").ListIndex = i
.ListBoxes("Liste3").ListIndex = i
End With
End Sub