Excel et checkbox

Bonjour,
je voudrais savoir si il serait possible que lorsque je coche mes checkbox, s'affiche "oui" ou "non" nan le tableau excel au lieu de "vrai" ou "faux".
un 2eme petit soucis, c'est lorsque je coche mes fameuses chackbox ^^, il s'affiche effectivement vrai ou faux mais si je les coches pas du tout elles affichent "faux". alors je voudrais savoir si il est possible qu'elles affichent quelque chose seulement si elles sont coché.
j'espère avoir été un peu clair et merci de votre aide
voici mon code au cas ou :

Private Sub cmdcreer_Click()
Dim conf

' Contrôle de saisie du nom.

If Me.Txtnom.Text = "" Then 'si le champ de saisie du nom est vide alors'
Beep 'bip sonore'
MsgBox "Vous devez entrer un nom." 'fenêtre d'information qui prévient qu'il faut saisir un nom'
Me.Txtnom.SetFocus
Exit Sub
End If
' Contrôle de saisie du prénom.
If Me.Txtprenom.Text = "" Then 'si le champ de saisie du prénom est vide alors'
Beep 'un bip sonore'
MsgBox "Vous devez entrer un prénom." 'une fenête apparait et préviens qu'il faut saisir un prénom'
Me.Txtprenom.SetFocus
Exit Sub
End If
'Contrôle de saisie de la date de validité'
If Me.CheckBox5.Value = True And Me.Txtvalidite = "" Then
Beep
MsgBox "Vous devez saisir une date de validité."
Me.Txtvalidite.SetFocus
Exit Sub
End If
' Mise en place des données dans la feuille de calcul Excel'

AppExcel.Worksheets("Feuil1").Hyperlinks.Add Anchor:=Range("B65536").End(x1up).Offset(1, 0).Value = Me.Txtnom.Text, _
SubAddress:="feuil1!B2"

'colonne des arrivées'
Sheets("Feuil1").Range("B65536").End(xlUp).Offset(1, 0).Value = Me.Txtnom.Text
Sheets("Feuil1").Range("C65536").End(xlUp).Offset(1, 0).Value = Me.Txtprenom.Text
Sheets("Feuil1").Range("D65536").End(xlUp).Offset(1, 0).Value = Me.Txtdatearrive.Text
Sheets("Feuil1").Range("E65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox1.Value
Sheets("Feuil1").Range("F65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox3.Value
Sheets("Feuil1").Range("G65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox4.Value
Sheets("Feuil1").Range("H65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox5.Value
Sheets("Feuil1").Range("I65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox6.Value
Sheets("Feuil1").Range("J65536").End(xlUp).Offset(1, 0).Value = Me.Txtvalidite.Text
Sheets("Feuil1").Range("K65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox7.Value
Sheets("Feuil1").Range("L65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox8.Value
Sheets("Feuil1").Range("M65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox9.Value
Sheets("Feuil1").Range("N65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox10.Value
Sheets("Feuil1").Range("O65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox11.Value
Sheets("Feuil1").Range("P65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox12.Value
Sheets("Feuil1").Range("Q65536").End(xlUp).Offset(1, 0).Value = Me.Txtacces.Text
Sheets("Feuil1").Range("R65536").End(xlUp).Offset(1, 0).Value = Me.Txtemp.Text

'colonne des départs'
Sheets("Feuil1").Range("T65536").End(xlUp).Offset(1, 0).Value = Me.Txtdatedepart.Text
Sheets("Feuil1").Range("U65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox23.Value
Sheets("Feuil1").Range("V65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox24.Value
Sheets("Feuil1").Range("W65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox25.Value
Sheets("Feuil1").Range("X65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox26.Value
Sheets("Feuil1").Range("Y65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox27.Value
Sheets("Feuil1").Range("Z65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox28.Value
Sheets("Feuil1").Range("AA65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox29.Value
Sheets("Feuil1").Range("AB65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox30.Value
Sheets("Feuil1").Range("AC65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox31.Value
Sheets("Feuil1").Range("AD65536").End(xlUp).Offset(1, 0).Value = Me.CheckBox32.Value

Unload Me 'De cette façon, à la prochaine saisie, les textbox seront vides à l'ouverture'
'message de confirmation de la saisie'
conf = MsgBox("saisie correctement effectuée", vbInformation + vbYes + 256, "Confirmation")

End Sub

voila ^^
Configuration: Windows XP Internet Explorer 6.0

15 réponses

  1. Contributeur
    Bonjour,
    Commence par remplacer ce code..
    Dim Lig As Long
    'colonne des arrivées'
        With Sheets("Feuil1")
            Lig = .Range("B65536").End(xlUp) + 1
            .Range("B" & Lig) = Txtnom
            .Range("C" & Lig) = Txtprenom
            .Range("D" & Lig) = Txtdatearrive
            .Range("E" & Lig) = IIf(CheckBox1, "Oui", "Non")
            .Range("F" & Lig) = IIf(CheckBox3, "Oui", "Non")
            .Range("G" & Lig) = IIf(CheckBox4, "Oui", "Non")
            .Range("H" & Lig) = IIf(CheckBox5, "Oui", "Non")
            .Range("I" & Lig) = IIf(CheckBox6, "Oui", "Non")
            .Range("J" & Lig) = Txtvalidite
            .Range("K" & Lig) = IIf(CheckBox7, "Oui", "Non")
            .Range("L" & Lig) = IIf(CheckBox8, "Oui", "Non")
            .Range("M" & Lig) = IIf(CheckBox9, "Oui", "Non")
            .Range("N" & Lig) = IIf(CheckBox10, "Oui", "Non")
            .Range("O" & Lig) = IIf(CheckBox11, "Oui", "Non")
            .Range("P" & Lig) = IIf(CheckBox12, "Oui", "Non")
            .Range("Q" & Lig) = Txtacces
            .Range("R" & Lig) = Txtemp
        End With

    Simplifie ton code et répond à ta 1ère question
    2°) faut choisir, ont écrit Non ou bien ont écrit rien ?? si tu veux que ça n'écrive rien tu remplace les "Non" par ""

    Mais il y a moyen d'optimiser ton code encore beaucoup plus
    A+
    1. Contributeur
      Pour simplifier..
      'Dans les propriétés Tag des contrôles mette le N° de la colonne.
      'dans le design.. Propriétés >> dans le bas de la fenêtre tu a Tag
      'Exemple:
      'pour Txtnom tu met 2 (colonne B = 2)
      'Txtprenom tu met 3
      'Txtdatearrive tu met 4
      'CheckBox1 tu met 5
      'CheckBox3 tu met 6
      'Etc.. pour arriver à
      'Txtemp avec 18
      'ensuite le code..

      'colonne des arrivées'
      Dim Lig As Long, Ctl As Control
          With Sheets("Feuil1")
              Lig = .Range("B65536").End(xlUp) + 1
              For Each Ctl In Me.Controls
                  If Ctl.Tag <> "" Then
                      If TypeOf Ctl Is TextBox Then
                          .Cells(Lig, Val(cel.Tag)) = Ctl
                      ElseIf TypeOf Ctl Is CheckBox Then
                          If cel.Value Then .Cells(Lig, Val(cel.Tag)) = "Oui"
                      End If
                  End If
              Next Ctl
          End With

      Pour remplir l'UF avec des données déja entrées, ou vider l'UF, tu peu façilement faire l'inverse.

      A+
      1. le 1er code que tu ma donnée marche pas y'a une erreur à ce niveau :

        Lig = .Range("B65536").End(xlUp) + 1
        1. Contributeur
          y'a une erreur à ce niveau ... Par fort explicit ça, quel est l'erreur affichée ??
          Parce que la ligne de code n'en a pas.
          1. sa me dit :

            Erreur d'exécution '13' :
            incompatibilité de type

            et y'a le truc pour faire débogage

            et cette ligne la apparait en jaune surligné

            Lig = .Range("B65536").End(xlUp) + 1
            1. Contributeur
              C'est que tu emploi la variable Lig ailleur et sous un autre format.
              Change toute les variable Lig par LigFin

                 Dim LigFin As Long
              'colonne des arrivées'
                  With Sheets("Feuil1")
                      LigFin = .Range("B65536").End(xlUp) + 1
                      .Range("B" & LigFin) = Txtnom
                      .Range("C" & LigFin) = Txtprenom
                      .Range("D" & LigFin) = Txtdatearrive
                      .Range("E" & LigFin) = IIf(CheckBox1, "Oui", "Non")
                      .Range("F" & LigFin) = IIf(CheckBox3, "Oui", "Non")
                      .Range("G" & LigFin) = IIf(CheckBox4, "Oui", "Non")
                      .Range("H" & LigFin) = IIf(CheckBox5, "Oui", "Non")
                      .Range("I" & LigFin) = IIf(CheckBox6, "Oui", "Non")
                      .Range("J" & LigFin) = Txtvalidite
                      .Range("K" & LigFin) = IIf(CheckBox7, "Oui", "Non")
                      .Range("L" & LigFin) = IIf(CheckBox8, "Oui", "Non")
                      .Range("M" & LigFin) = IIf(CheckBox9, "Oui", "Non")
                      .Range("N" & LigFin) = IIf(CheckBox10, "Oui", "Non")
                      .Range("O" & LigFin) = IIf(CheckBox11, "Oui", "Non")
                      .Range("P" & LigFin) = IIf(CheckBox12, "Oui", "Non")
                      .Range("Q" & LigFin) = Txtacces
                      .Range("R" & LigFin) = Txtemp
                  End With

              A+
              1. rofl je désespère la
                sa me donne la même erreur
                je pense pas que sa vienne de la variable du coup si ??
                1. Contributeur
                  Tu raconte des carabistouilles.....grosses comme une maison.....
                  Impossible que ça plante sur la ligne que tu dit parce qu'avec la ligne...
                  AppExcel.Worksheets("Feuil1").Hyperlinks.Add Anchor:=Range("B65536").End(x1up).Offset(1, 0).Value = Me.Txtnom.Text, _ 
                  SubAddress:="feuil1!B2" 

                  c'est IMPOSSIBLE QUE TU PASSE CETTE LIGNE !!!!!!!!!!!!!!!!!!!!!!!!!!
                  Enfin, je vais me montrer bon prince malgrés ça..
                  Supprime cette ligne et tu remet...
                  'colonne des arrivées'
                  Dim Lig As Long, Ctl As Control
                      With Sheets("Feuil1")
                          Lig = .Range("B65536").End(xlUp) + 1
                          .Hyperlinks.Add Anchor:=.Range("B" & Lig), Address:="", SubAddress:= _
                          "Feuil1!B2", TextToDisplay:=Txtnom
                          For Each Ctl In Me.Controls
                  'Et la suite...

                  Prochaine fois... je te tire les oreilles :D
                  1. si j'enlève cette ligne : AppExcel.Worksheets("Feuil1").Hyperlinks.Add Anchor:=Range("B65536").End(x1up).Offset(1, 0).Value = Me.Txtnom.Text, _
                    SubAddress:="feuil1!B2"

                    le code que tu ma donné plus haut devrait marcher alors ???

                    sa fait mal les oreilles :D
                    1. j'ai enlevé la ligne mais y'a toujours un problème au même niveau. y'a toujours un débogage sur la même ligne
                      snif
                      1. Private Sub cmdcreer_Click()

                        Dim conf
                        Dim reponse As Long

                        ' Contrôle de saisie du nom.
                        If Me.Txtnom.Text = "" Then 'si le champ de saisie du nom est vide alors'
                        Beep 'bip sonore'
                        MsgBox "Vous devez entrer un nom." 'fenêtre d'information qui prévient qu'il faut saisir un nom'
                        Me.Txtnom.SetFocus
                        Exit Sub
                        End If
                        'Contrôle de saisie du prénom.
                        If Me.Txtprenom.Text = "" Then 'si le champ de saisie du prénom est vide alors'
                        Beep 'un bip sonore'
                        MsgBox "Vous devez entrer un prénom." 'une fenête apparait et préviens qu'il faut saisir un prénom'
                        Me.Txtprenom.SetFocus
                        Exit Sub
                        End If

                        ' Mise en place des données dans la feuille de calcul Excel'

                        With Sheets("Feuil1")
                        reponse = .Range("B65536").End(xlUp) + 1
                        .Range("B" & reponse) = Txtnom
                        .Range("C" & reponse) = Txtprenom
                        .Range("D" & reponse) = Txtdatearrive
                        .Range("E" & reponse) = IIf(CheckBox1, "Oui", "Non")
                        .Range("F" & reponse) = IIf(CheckBox3, "Oui", "Non")
                        .Range("G" & reponse) = IIf(CheckBox4, "Oui", "Non")
                        .Range("H" & reponse) = IIf(CheckBox5, "Oui", "Non")
                        .Range("I" & reponse) = IIf(CheckBox6, "Oui", "Non")
                        .Range("J" & reponse) = Txtvalidite
                        .Range("K" & reponse) = IIf(CheckBox7, "Oui", "Non")
                        .Range("L" & reponse) = IIf(CheckBox8, "Oui", "Non")
                        .Range("M" & reponse) = IIf(CheckBox9, "Oui", "Non")
                        .Range("N" & reponse) = IIf(CheckBox10, "Oui", "Non")
                        .Range("O" & reponse) = IIf(CheckBox11, "Oui", "Non")
                        .Range("P" & reponse) = IIf(CheckBox12, "Oui", "Non")
                        .Range("Q" & reponse) = Txtacces
                        .Range("R" & reponse) = Txtemp
                        End With

                        Unload Me 'De cette façon, à la prochaine saisie, les textbox seront vides à l'ouverture'
                        'message de confirmation de la saisie'
                        conf = MsgBox("saisie correctement effectuée", vbInformation + vbYes + 256, "Confirmation")

                        End Sub

                        je redonne le code au cas ou ^^
                        1. Contributeur
                          Bon... ça commence à bien faire, met ton classeur su Cjoint.com et tu met le lien sur un poste suivant.
                          A+