Titre du sujet : Re: Modification de contenu de cellules suivant sélection par Mth le 08/08/2012 16:26:24
Bonjour Titom, myDearFriend,
Un autre essai en PJ avec une ListView (... que j'ai découvert pour l'occasion, donc sans doute très imparfait malgré l'aide précieuse de Silkyroad, mais cela fonctionne)
Pour que la feuille soit accessible il faut que le Userform soit affiché en mode non modal:
Sub AfficheUSF1()
'Affichage non modal
UserForm1.Show 0
End Sub
Initialisation du Userform et préparation de la ListView:
Private Sub UserForm_Initialize()
'Avec l'aide du tutoriel de Silkyroad http://silkyroad.developpez.com/VBA/ListView/
With ListView1
'Ajoute une colonne
With .ColumnHeaders
'Supprime l'ancienne entête
.Clear
'Ajoute 1 colonne en indiquant le nom de l'entête et sa largeur
.Add , , "Présence", 50
End With
'Ajoute les lignes
With .ListItems
.Add , , " "
.Add , , "Matin"
.Add , , "Après-Midi"
.Add , , "Nuit"
End With
'Met les polices en couleur
.ListItems(2).ForeColor = RGB(0, 128, 0)
.ListItems(3).ForeColor = RGB(192, 0, 0)
'Précise l'affichage
.View = lvwReport 'affichage en mode Rapport pour alignement
.Gridlines = True 'affiche un quadrillage
.FullRowSelect = True 'Sélection complète de la ligne
End With
End Sub
Pour remplir les cellules sélectionnées avec la valeur choisie dans la Listview:
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim c As Range
'Boucle sur chaque cellule de la sélection
For Each c In Selection
'Si l'intersection de la zone "B2:H5" et de la cellule n'est pas vide
If Not Intersect(c, Range("B2:H5")) Is Nothing Then
'la valeur de la cellule est renseignée avec le libellé choisi
c.Value = Item.Text
End If
Next c
End Sub
Vois si cela peut t'aider,
Bien à toi,
mth
|