Problème checkboxes

Bonsoir,

je souhaite créer des checkboxes sur une feuille de travail et vous pourrez en trouver le code dans le fichier joint.

Cela fonctionne même si je suis conscient que ma maîtrise du code est loin d'être correcte.

L'objectif est donc de faire apparaître les checkboxes [U]"vierges"[/U]à l'ouverture du fichier.

L'option de paiement choisie sera elle cochée en cours de réalisation.

Jusque là tout va bien mais si je souhaite réaliser une seconde facture sans fermer le fichier, je souhaiterais que les options redeviennent décochées afin de permettre la création d'un nouveau document vierge.

Là se situe mon problème, impossible pour moi de trouver la bonne méthode même si je me doute que je devrais remettre les option à "False" en début de traitement.

J'ai un gros problème de maîtrise des OLEobject et si dans la foulée quelqu'un pourrait m'orienter vers un tuto, je suis également preneur.

Grand merci d'avance

15chbx.xlsm (27.92 Ko)

Bonjour,

  • N'est-ce pas plutôt des OptionButton qu'il vous faut ? Il faut seulement choisir de cocher par défaut le moyen de paiement le plus probable (carte).
  • Au lieu de recréer ces contrôles à chaque ouverture de fichier, il vous suffirait de les rendre visibles au moment opportun.

En ce qui concerne la création d'une deuxième facture, une solution consiste à créer un fichier modèle .xltm contenant un onglet modèle que :

  • Vous remplissez avec les renseignements communs à toutes les factures.
  • Vous dupliquez à chaque facture.

Bonsoir,

merci à vous pour le post.

Non, il s'agit bien de checkboxes que je souhaite insérer car mon objectif est d'en faire aparaître le résultat sur la facture qui s'en suivra.

Il faut savoir que le fichier attaché n'est qu'un maigre extrait du projet où se retrouvent des BDD servant à compléter un squelette dont en sortira un document définitif. Mon objectif est de limiter au maximum l'encodage de données et ainsi les erreurs de frappe, orthographe, etc..

Ceci étant j'ai entretemps résolu mon problème grâce entre autre, aux données que j'ai relevées d'Excel Pratique.

Comme quoi, l'intérêt de ce site est vraiment indéniable.

J'ai modifié votre code créant vos Checkbox pour le rendre paramétrable en fonction de l'onglet. Ici, en admettant que Feuil2 soit le nouvel onglet.

Option Explicit

Sub TestCreer_Chkboxes2()

    Creer_Chkboxes2 Sheets("Feuil2")

End Sub

Sub Creer_Chkboxes2(ByVal ShCheckBox As Worksheet)

Dim Cash As Boolean, Carte As Boolean
Dim I As Integer, x As Integer, y As Integer
Dim oOLE As OLEObject
Dim Nom_Bt As String, Nm As String

    With ShCheckBox
         For I = 1 To 2
             x = 10 'position verticale

            If I = 1 Then
                y = 20
                Nom_Bt = "  Virement"
                Nm = "Carte"
            End If

            If I = 2 Then
                y = 50
                Nom_Bt = "  Espèces"
                Nm = "Cash"
            End If

            Set oOLE = .OLEObjects.Add(ClassType:="Forms.Checkbox.1", _
            Link:=False, DisplayAsIcon:=False, Left:=x, Top:=y, Width:=120, Height:=30)

            With oOLE
                .Name = Nm
                .Object.Caption = Nom_Bt
                .Object.Font.Name = "Century Schoolbook"
                .Object.Font.Bold = True
                .Object.Font.Italic = True
                .Object.Font.Size = 14
            End With
            Set oOLE = Nothing

        Next I
    End With

End Sub

Vous pouvez également ajouter l'événement Workbook_NewSheet dans le module ThisWorkbook pour qu'à chaque création d'onglet, les objets soient insérés.

Private Sub Workbook_NewSheet(ByVal Sh As Object)
       Creer_Chkboxes2 Sh
End Sub

Cà c'est sympa ;-)

merci à vous .

Bonjour,

je reviens sur le sujet car si grâce à l'aide reçue, j'ai pu avancer, je coince à nouveau avec les Oleobjects.

En effet, j'ai donc 2 checkboxes que je peux cocher comme je l'entends mais comme il m'arrive de créer plusieurs document à la suite, je souhaiterais que la checkbox cochées revienne vide à l'édition du document suivant.

J'ai donc travaillé sur la propriété ".value" en la mettant à False mais là je reçois un code d'erreur (qualificateur incorrect).

voici le code utilisé:

    For Each obj In ActiveSheet.OLEObjects 
        Cash.Value = False
        carte.Value = False
    Next

Si en plus quelqu'un pouvait m'orienter vers un tuto sur les Oleobjects ce serait super car je me rends compte que ma maîtrise du sujet reste encore trop proche de zéro.

Merci à vous.

Bonjour,

Testez ce code :

Sub TestMajCheckbox()

    MajCheckbox ActiveSheet, False
   ' MajCheckbox ActiveSheet, True

End Sub

Sub MajCheckbox(ByVal Sh As Worksheet, ByVal Valeur As Boolean)

Dim Obj As OLEObject

    With Sh
        For Each Obj In Sh.OLEObjects
            Obj.Object.Value = Valeur
        Next Obj
    End With

End Sub

En tapant OLEOBJECTS sur votre navigateur, vous allez trouver bon nombre de faq sur le sujet.

En revanche, si vous essayez de comprendre comment j'ai écrit ce code, je vous conseille de déclarer vos variables de façon explicite, comme ici avec Obj, Sh et Valeur. Vous aurez accès aux propriétés, méthodes et événements applicables à l'objet.

Dans le code ci-dessus, mettez un point derrière Obj par exemple comme dans Obj.Object...., vous aurez accès aux propriétés, méthodes, ...

Lorsque vous ne comprenez pas une propriété, vous cliquez sur le point d'interrogation dans l'éditeur VBA et vous aurez accès à l'aide en ligne.

Sinon, vous pouvez utiliser l'explorateur d'objets depuis l'éditeur VBA. C'est un peu abscons au départ, mais cela vous permet de voir tout de suite ce qui vous est permis avec un objet.

capture

Et pour fermer :

capture1

Pour vous forcer à déclarer vos variables :

Dans l'éditeur VBA, Outils / Options, cocher Déclaration des variables obligatoire. Vous allez me maudire au départ , mais c'est un gage de fiabilité par la suite.

capture

UN tout grand merci pour votre aide, le code proposé fonctionne parfaitement.

je vais aussi suivre vos conseils en vue d'enfin comprendre cet aspect du code qui a bien du mal à percoler (:-

Rechercher des sujets similaires à "probleme checkboxes"