[VBA sous Access] Creer un groupe de controle

[Fermé]
Signaler
-
Messages postés
4
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
2 mars 2011
-
Bonjour,
J'essaye de raliser un petit calendrier en vb,
pour cela il faudrait que je puisse creer un groupe de control (nomcontrole(index)). Je sais le faire sous Vb6 mais la je n'y parvient pas, si quelqu'un pouvait m 'aider.Peut etre manque t 'il une reference a activer.

Merci d'avance

8 réponses

Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 123
ACCESS ne permet pas d'avoir un nom identique pour plusieurs contrôles, mais moyennant un peu d'astuce on peut contourner :

Tu crées un formulaire qui contient plusieurs objets (type étiquette par exemple) en les nommant avec un préfixe "Etiq_n" où n est le numéro du contrôle.

Ensuite tu peux modifier les valeurs via une boucle avec indirection du nom de contrôle, exemple pour modifier la légende des étiquettes du formulaire 'formulaire2' (code mis dans un bouton) :
Private Sub Commande2_Click()
Dim Mon_Ctl As Control
For Each Mon_Ctl In Forms!Formulaire2
    With Mon_Ctl
        If Left(.name, 5) = "Etiq_" Then
            Me(.name).Caption = "titi"
        End If
    End With
Next
End Sub

Aura pour effet de mettre "titi" dans toutes les étiquettes dont le nom commence par "Etiq_"...

Ca irait pour commencer ?
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
4
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
2 mars 2011

bonjour,
j'ai essaiyé ton code mais le bout : Me(.name).Caption = "titi" ne fonctionne pas je sai pas si c'est voulu mais de toute manière moi ce que je veux c'est pouvoir vérifier la propriété value de mon controle et il me la donne pas

le controle en question est un checkbox et voici ce que je veux faire

Dim Mon_Ctl As Control
NbRegion = 1
For Each Mon_Ctl In Forms!saisie
With Mon_Ctl
If Left(.Name, 1) = "c" Then
If (.Value) = Checked Then
nom = Str(NbRegion) & ","
End If
NbRegion = NbRegion + 1
End If
End With
Next
MsgBox (nom)
ChoixRegion = nom

choixregion est le nom de ma function et elle retourne une string qui est utilisé dans une requete dans un in
Quelqu'un peut juste me dire si c'est possible histoire d' arreter de perdre mon temps a chercher :(
Merci
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 123
Salut,

il existe un contrôle de type calendrier sous ACCESS...

Mais peut-être que tu veux le créer toi-même ?
En effet j'ai vu la presence de ce controle.
Mais je souhaiterais aussi si possible le creer moi -meme :)
Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 123
Je ne connais pas VB, mais je pratique régulièrement VBA...

Peux-tu me définir ce que tu entends par groupe de contrôle ? (comportement, syntaxe, but de la manoeuvre...)

VBA propose les groupes d'options (boutons radio, cases à cocher, boutons bascule...)...
Un groupe de controle est un ensembe de controles ayant les memes propriétées (meme nom) et etant indexé ( comme si tout ces controles etaient dans un tableau).

Ex: Si je souhaite remplir 5 textbox avec la meme valeur:

for i=0 to 4
matextbox(i)=valeur
next i

Si je n'est pas été assez clair n'hesite pas a me redemander
merci :)
Merci de ton attention!
ca me parait etre un bon debut, je vais essayer de voir comment pouvoir remplir la valeur des différents boutons avec cette methode :)
Messages postés
4
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
2 mars 2011

bonjour, j'ai également essayé ceci comme code mais il m'indique incompatibilité de type
Private Function ChoixRegion() As String
    Dim NbRegion As Integer
    Dim Mon_Cb As CheckBox
    NbRegion = 1
    For Each Mon_Cb In Forms
        With Mon_Cb
            'If Left(.Name, 1) = "c" Then
                If .Value = Checked Then
                    nom = Str(NbRegion) & ","
                End If
            NbRegion = NbRegion + 1
            'End If
        End With
    Next
    MsgBox (nom)
    ChoixRegion = nom
End Function

eexistil un moyen de le faire