Affecter un nom à une checkbox

Résolu
Bonjour,

J'aimerais savoir comment on affecte une valeur à une checkbox.
En effet lorsque la checkbox est cochée (checkbox1.value=True) j'aimerais pouvoir dire checkbox1.value=Machine.
Mais ca ne marche pas aussi facilement...

Car ensuite je veux pouvoir utiliser le mot machine pour pouvoir faire une recherche dans un registre et copier toutes les lignes donc la première cellule contient le mot machine.

Merci d'avance, j'utilise VBA avec Excel 2003.

PS : en réalité j'ai 11 checkbox avec 11noms de machine différents et je veux faire la recherche en fonction des machines cochées par l'utilisateur.

4 réponses

  1. bonjour,

    au lieu d'appeler checkbox1, tu peux la nommer machine1.

    Pour cela, tu vas dans propriété, dans Name, tu as checkbox1. Au lieu de checkbox1, mets le nom de ta machine.

    Ou alors utilises des varaibles :
    if checkbox1.value =true then
    machine1 = Machine
    end if

    if checkbox2.value = true then
    machine2 = machine
    end if
    1. Merci pour ta réponse mais j'avais déja essayé et cela ne marche pas.
      Le principe est la recherche d'un défaut parmis un registre et la création d'un tableau récapitulatif en fonction de ce que l'utilisateur à choisi.
      Dans ma userform principale, la personne choisi dans une liste déroulante le défaut qui l'intéresse. Des checkbox sont automatiquement activées. Elles correspondent aux machines concernées par ce défaut. L'utilisateur peut (à souhait) décocher une ou plusieurs machines.
      Le but est d'éditer un tableau récapitulatif des données en fonction du défaut choisi (combobox) et des machines sélectionnées (checkbox) en faisant une recherche dans le registre d'origine.
      Je suis arrivée a éditer un tableau récap en fonction du défaut choisi mais je n'arrive pas à insérer le parametre checkbox sélectionnée.

      Ci-dessous le code qui fonctionne :

      Private Sub CommandButton1_Click()
      'affichage des feuilles concernées et vérification des champs
      Sheets("Recap").Visible = True
      If Cathégories = "" Then
      MsgBox "Sélectionner une catégorie de défauts dans la liste déroulante"
      ElseIf défauts = "" Then
      MsgBox "Sélectionner un défauts qualité dans la liste déroulante"
      End If

      Dim i As Integer
      Dim n As Integer
      n = 3
      i = 2

      MsgBox "Veuillez patienter pendant le traitement..."
      Application.Cursor = xlWait 'affiche le sablier

      'Suppression des données du récap
      Worksheets("Recap").Range("A3:V1402").ClearContents

      If défauts <> "" Then
      n = 3
      i = 2
      Do While Cells(i, 1) <> ""

      If Cells(i, 2) = défauts And Cells(i, 1) = TOMI Then
      Worksheets("Registre").Select
      Worksheets("Registre").Rows(i).Select
      Worksheets("Registre").Rows(i).Copy
      Worksheets("Recap").Select
      Worksheets("Recap").Rows(n).Select
      ActiveSheet.Paste
      n = n + 1
      Worksheets("Registre").Select

      End If
      i = i + 1
      Loop

      'Trier les données par machine
      Worksheets("Recap").Select
      Range("A2:V1403").Select
      Application.CutCopyMode = False
      Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
      DataOption1:=xlSortNormal

      End If

      Application.Cursor = xlDefault 'remet le curseur par défaut

      End Sub

      Merci pour ton aide ;-)
      1. Re,

        voici une solution :crées une feuille que tu appelles Machines :

        Private Sub CommandButton1_Click()

        ' préparation des machines
        j=1
        sheets("Machines").columns(1).clear

        if checkbox1.value = true then
        sheets("Machines").cells(j,1) = checkbox1.caption
        end if

        if checkbox2.value = true then
        sheets("Machines").cells(j,1) = checkbox2.caption
        end if

        'affichage des feuilles concernées et vérification des champs
        Sheets("Recap").Visible = True
        If Cathégories = "" Then
        MsgBox "Sélectionner une catégorie de défauts dans la liste déroulante"
        ElseIf défauts = "" Then
        MsgBox "Sélectionner un défauts qualité dans la liste déroulante"
        End If

        Dim i As Integer
        Dim n As Integer
        n = 3
        i = 2

        MsgBox "Veuillez patienter pendant le traitement..."
        Application.Cursor = xlWait 'affiche le sablier

        'Suppression des données du récap
        Worksheets("Recap").Range("A3:V1402").ClearContents

        If défauts <> "" Then
        n = 3
        i = 2
        Do While Cells(i, 1) <> ""

        If Cells(i, 2) = défauts then
        j=1
        do while sheets(j,1)<> ""
        if cells(i,1) = sheets("Machines").cells(j,1) then
        Worksheets("Registre").Select
        Worksheets("Registre").Rows(i).Select
        Worksheets("Registre").Rows(i).Copy
        Worksheets("Recap").Select
        Worksheets("Recap").Rows(n).Select
        ActiveSheet.Paste
        n = n + 1
        Worksheets("Registre").Select
        end if
        j=j+1
        loop

        End If
        i = i + 1
        Loop

        'Trier les données par machine
        Worksheets("Recap").Select
        Range("A2:V1403").Select
        Application.CutCopyMode = False
        Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

        End If

        Application.Cursor = xlDefault 'remet le curseur par défaut

        End Sub
        1. do while sheets(j,1)<> "" à remplacer par do while sheets("Machines").cells(j,1) <>""
        2. ok merci!
          Je vais essayer
        3. Je viens de m'apercevoir d'une petite erreur et à adapter aux 11 autres :
          if checkbox1.value = true then
          sheets("Machines").cells(j,1) = checkbox1.caption
          j=j+1
          end if

          if checkbox2.value = true then
          sheets("Machines").cells(j,1) = checkbox2.caption
          j=j+1
          end if

          ....

          if checkbox10.value = true then
          sheets("Machines").cells(j,1) = checkbox10.caption
          j=j+1
          end if

          if checkbox11.value = true then
          sheets("Machines").cells(j,1) = checkbox11.caption
          j=j+1
          end if
        4. merci!
          Ca marche quand j'en mets une mais pas quand il y en a plusieurs à la suite???
        5. c'est la correction à apporter. je te donne ton code en entier
      2. Private Sub CommandButton1_Click()

        ' préparation des machines
        j=1
        sheets("Machines").columns(1).clear

        if checkbox1.value = true then
        sheets("Machines").cells(j,1) = checkbox1.caption
        j=j+1
        end if

        if checkbox2.value = true then
        sheets("Machines").cells(j,1) = checkbox2.caption
        j=j+1
        end if

        if checkbox3.value = true then
        sheets("Machines").cells(j,1) = checkbox3.caption
        j=j+1
        end if

        if checkbox4.value = true then
        sheets("Machines").cells(j,1) = checkbox4.caption
        j=j+1
        end if

        if checkbox5.value = true then
        sheets("Machines").cells(j,1) = checkbox5.caption
        j=j+1
        end if

        if checkbox6.value = true then
        sheets("Machines").cells(j,1) = checkbox6.caption
        j=j+1
        end if

        if checkbox7.value = true then
        sheets("Machines").cells(j,1) = checkbox7.caption
        j=j+1
        end if

        if checkbox8.value = true then
        sheets("Machines").cells(j,1) = checkbox8.caption
        j=j+1
        end if

        if checkbox9.value = true then
        sheets("Machines").cells(j,1) = checkbox9.caption
        j=j+1
        end if

        if checkbox10.value = true then
        sheets("Machines").cells(j,1) = checkbox10.caption
        j=j+1
        end if

        if checkbox11.value = true then
        sheets("Machines").cells(j,1) = checkbox11.caption
        j=j+1
        end if

        'affichage des feuilles concernées et vérification des champs
        Sheets("Recap").Visible = True
        If Cathégories = "" Then
        MsgBox "Sélectionner une catégorie de défauts dans la liste déroulante"
        ElseIf défauts = "" Then
        MsgBox "Sélectionner un défauts qualité dans la liste déroulante"
        End If

        Dim i As Integer
        Dim n As Integer
        n = 3
        i = 2

        MsgBox "Veuillez patienter pendant le traitement..."
        Application.Cursor = xlWait 'affiche le sablier

        'Suppression des données du récap
        Worksheets("Recap").Range("A3:V1402").ClearContents

        If défauts <> "" Then
        n = 3
        i = 2
        Do While Cells(i, 1) <> ""

        If Cells(i, 2) = défauts then
        j=1
        do while sheets("Machines").cells(j,1)<> ""
        if cells(i,1) = sheets("Machines").cells(j,1) then
        Worksheets("Registre").Select
        Worksheets("Registre").Rows(i).Select
        Worksheets("Registre").Rows(i).Copy
        Worksheets("Recap").Select
        Worksheets("Recap").Rows(n).Select
        ActiveSheet.Paste
        n = n + 1
        Worksheets("Registre").Select
        end if
        j=j+1
        loop

        End If
        i = i + 1
        Loop

        'Trier les données par machine
        Worksheets("Recap").Select
        Range("A2:V1403").Select
        Application.CutCopyMode = False
        Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

        End If

        Application.Cursor = xlDefault 'remet le curseur par défaut

        End Sub
        1. Erreur de ma part, tu as raison!
          Ca focntionne nickel!!!
          Merci beaucoup!
        2. tu peux le mettre à resolu stp (juste en dessous du tire de ton message. merci