Affecter un nom à une checkbox

Résolu
grace -  
melanie1324 Messages postés 1561 Statut Membre -
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. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
    0
  2. grace
     
    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 ;-)
    0
  3. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
    0
    1. melanie1324 Messages postés 1561 Statut Membre 156
       
      do while sheets(j,1)<> "" à remplacer par do while sheets("Machines").cells(j,1) <>""
      0
    2. grace
       
      ok merci!
      Je vais essayer
      0
    3. melanie1324 Messages postés 1561 Statut Membre 156
       
      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
      0
    4. grace
       
      merci!
      Ca marche quand j'en mets une mais pas quand il y en a plusieurs à la suite???
      0
    5. melanie1324 Messages postés 1561 Statut Membre 156
       
      c'est la correction à apporter. je te donne ton code en entier
      0
  4. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
    0
    1. grace
       
      Erreur de ma part, tu as raison!
      Ca focntionne nickel!!!
      Merci beaucoup!
      0
    2. melanie1324 Messages postés 1561 Statut Membre 156
       
      tu peux le mettre à resolu stp (juste en dessous du tire de ton message. merci
      0