Excel et checkbox

butters9547 Messages postés 244 Statut Membre -  
butters9547 Messages postés 244 Statut Membre -
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 ^^
A voir également:

15 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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+
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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+
0
butters9547 Messages postés 244 Statut Membre 6
 
merci beaucoup
j'éssaye sa et je vous dit ^^
0
butters9547 Messages postés 244 Statut Membre 6
 
le 1er code que tu ma donnée marche pas y'a une erreur à ce niveau :

Lig = .Range("B65536").End(xlUp) + 1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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.
0
butters9547 Messages postés 244 Statut Membre 6
 
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
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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+
0
butters9547 Messages postés 244 Statut Membre 6
 
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 ??
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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
0
butters9547 Messages postés 244 Statut Membre 6
 
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
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Beh tu l'essaie et tu verras bien.
0
butters9547 Messages postés 244 Statut Membre 6
 
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
0
butters9547 Messages postés 244 Statut Membre 6
 
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 ^^
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bon... ça commence à bien faire, met ton classeur su Cjoint.com et tu met le lien sur un poste suivant.
A+
0
butters9547 Messages postés 244 Statut Membre 6
 
je mets le classeur
svp vraiment besoin d'aide et je sais pourquoi sa marche pas :s

https://www.cjoint.com/?gpq4JEg4ls
0