Rapport de message :*
 

Re: Modification de contenu de cellules suivant sélection

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