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
    Bon... ça commence à bien faire, met ton classeur su Cjoint.com et tu met le lien sur un poste suivant.
    A+
    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. 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. 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. 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. 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
                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. 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
                    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. le 1er code que tu ma donnée marche pas y'a une erreur à ce niveau :

                      Lig = .Range("B65536").End(xlUp) + 1
                      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. 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+