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
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 SubVous 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 SubCà 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
NextSi 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 SubEn 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.
Et pour fermer :
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
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 (:-