Récupérer les valeurs correspondant aux checkbox cochées


#1

Bonjour à tous et à toutes,

Je m’appelle Thychick, nouveau sur le forum.
Dans le cadre de mes études universitaire (en alternance) je réalise pour la première fois des fichiers macros vba.
C’est tout nouveau pour moi et j’adore énormément ce langage de programmation, plus simple que du C#.

Voila, j’ai un fichier excel avec macro. Dans ce fichier j’ai 2 feuilles, une OP et l’autre Temps. Dans la feuille Temps, je répertorie les différents temps d’usinage de pièces.
Sur ma feuille OP je peux choisir 1 ou plusieurs opérations d’usinage.

Fonctionnement:
Si 1 opération “checké” (ex: Brochage) alors La feuille OP me renvoi sa valeur de temps ( Range(“D4”) selon mon fichier).
Sinon, si plusieurs opérations “checkées” Range(“D4”) me renvoie la somme des temps correspondant aux opérations sélectionnées(ex: Brochage + Tournage = Range(“D4”)=42)

Bien sur faire des boucles en IF marchent aussi, mais s’ils y a plusieurs opérations ça devient impossible.

En pièce jointe ce que j’ai déjà réalisé. J’arrive pas à avancer plus que ça.
Quelqu’un pourrait m’apporter son soutien?

Merci d’avance.

Cordialement,
Thychick.
Classeur1.xlsm (27,2 Ko)


#2

Bonjour,
Voilà la transformation
(J’ai modifié l’ordre des opérations dans l’onglet TEMPS, afin d’être dans le même ordre que les CheckBox)

Thychick.xlsm (25,8 Ko)

MACRO (En commentaire, les rajouts)

Private Sub ValidOP_Click()
'_________________________________________________________________
  Dim f As Byte, i As Byte, Texte As String, H As Integer 'Depuis ton code, j'ai rajouté la variable H
'_________________________________________________________________
H = 0 'Je l'initialise à 0
  For i = 1 To 7
    With Controls("CheckBox" & i)
      If .Value Then
        f = 1
        If Texte = "" Then
            Texte = .Caption
            H = Sheets("Temps").Cells(i + 1, 2).Value 'H prend la valeur de i+1 sur la feuille TEMPS
        Else
            Texte = Texte & vbNewLine & .Caption
            H = H + Sheets("Temps").Cells(i + 1, 2).Value 'H prend la valeur de H+i sur la feuille TEMPS
        End If
      End If
    End With
  Next i
'_________________________________________________________________
If f = 0 Then
    [B4] = ""
    [D4] = ""
    MsgBox "Aucune case d'option n'est sélectionnée"
    Unload Me
  Else
    [B4] = Texte
    [D4] = H 'Colle la valeur de H
  End If
'_________________________________________________________________
  Unload Me
  
End Sub

#3

Merci, je vais tester ça et revenir vers toi pour te confirmer le bon fonctionnement.


#4

Merci, ça marche parfaitement avec ce que je souhaite obtenir.
Merci de ton aide Mimimathy.