Bonjour,
Un très grand merci à toi Banzai, je n'avais pas pensé à faire une condition directement sur la plage de cellule concernée et merci encore d'avoir laissé quelques annotations qui me permettent de mieux comprendre les modifications apportées
Après test j'ai commencé à adapter à mon cas :
J'ai laissé apparaitre les entêtes "Mesures organisationnelles, collectives et individuelles" en modifiant la condition suivante :
'If Ws.Cells(I, Colonne).Interior.ColorIndex = xlNone And Ws.Cells(I, Colonne) <> "" Then
'par
If Ws.Cells(I, Colonne) <> "" Then
J'ai appliqué aux labels de ces entêtes une couleur différente comme ceci :
If Ws.Cells(I, Colonne).Interior.ColorIndex <> xlNone Then
.BackColor = &HC000C0
.AutoSize = False
End If
Problème : non prise en compte de l'AutoSize
J'ai essayé d'interdire la création d'une FrameCotation à coté de ces entêtes comme ceci :
If Me.Controls("Frame1").BackColor = &H8000000F Then
Set Fra = Me.Controls("Frame1").Add("forms.Frame.1")
With Fra
.Name = "FrameCotation_" & Nb
.Caption = Nb
.Left = 308
.Top = 2 + ((Nb - 1) * 30)
.Width = 220
.Height = 30
'Frame1.ScrollHeight = .Top + .Height
End With
End If
Problème : les frames se créent tout de même Ma condition n'est pas bonne?
Et pour terminer est-il possible d'intégrer toutes les données (Caption des labels + cotations) dans une seule cellule dont les coordonnées dynamiques correspondent à ActiveCell.Offset(0, 3) selon le modèle suivant :
Mesures organisationnelles
AAAA24 = 1
BBBB24 = 0,5
CCCC24 = 0
DDDD24 = NC
EEEE24 = 1
FFFF24 = 1
Mesures collectives
IIII24 = 0,75
etc.
J'ai conscience que ça fait un peu liste au père noel et que ton temps est précieux, des pistes me serait déjà précieuses. En l'état de mes connaissances je pensais partir sur un code du style :
Vérification que toutes les FramesCotation sont cochées. Sinon msgbox "Toutes les cotations ne sont pas faites".
Concaténation : (valeur cellule & Nb) & "=" & (valeur bouton d'option & Nb) que j'intègre dans un coin de mon onglet
Puis je concatène la liste précédente que j'intègre en coordonnées ActiveCell.Offset(0, 3) de l'onglet actif.
Je suis sûre qu'il y a plus simple
Bonne journée