Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

codes VBA ... aide

4 réponses
Avatar
Boucland
Bjr=20
J'apprends =E0 ins=E9rer des codes VBA dans ma base de=20
donn=E9es Access :-)
En effet j'avais fait juste un peu de programmation=20
(fortran) ! classique, n'est ce pas ? :-)
Et j'essaye de me retrouver en VBA :-)
Je me souviens, avec le fortran, on compilait la source=20
pour localiser les erreurs .
Est-ce le cas avec les codes VBA sous Access ? Comment ?=20
Excusez mes questions, il se peut que je vous fasse=20
rire :-)
Voil=E0, sur un formulaire de saisie (=E9labor=E9 avec=20
l'Assistant d'Access) j'ai des champs (ou contr=F4les)=20
corr=E9l=E9s par =E0 des r=E8gles de gestion.
Par exemple :=20
- le champ [POSTE] peut prendre les valeurs textes P1,=20
P2, P3 ou S. Ce que j'ai repr=E9sent=E9 par une liste=20
d=E9roulante.
- le champ [HN] peut prendre les valeurs num=E9riques 4,5,=20
5, 9 ou 10 aussi repr=E9sent=E9 par liste d=E9roulante
- quand [POSTE] =3D S, [HN] ne peut =EAtre =E9gale qu =E0 10 ou 5
- quand [POSTE] =3D P1, [HN] ne peut =EAtre =E9gale qu =E0 9 ou=20
4.5
- quand [POSTE] =3D P2 ou P3, [HN] ne peut =EAtre =E9gale qu =E0=20
19

Le code ci-dessous correspond - t - il =E0 ce que je viens=20
de citer ci-dessus ?

Private Sub HN_BeforeUpdate(Cancel As Integer)
If [POSTE] =3D "S" Then
[HN] =3D 10 Or [HN] =3D 5
ElseIf [POSTE] =3D "P1" Then
[HN] =3D 9 Or [HN] =3D 4.5
ElseIf [POSTE] =3D "P2" Or [POSTE] =3D "P3" Then
[HN] =3D 9
End If
End If
End If
End Sub

Je vous remercie d'avance.

4 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Tu peux effectivement compiler un module pour savoir s'il contient
des erreurs sous Access...

Pour cela tu dois lorsque tu es dans un module, aller dans le menu :
"Deboguer" - "Compiler et enregistrer tous les modules"

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Boucland" a écrit dans le message news:
6e9c01c401fd$a2e46fd0$
Bjr
J'apprends à insérer des codes VBA dans ma base de
données Access :-)
En effet j'avais fait juste un peu de programmation
(fortran) ! classique, n'est ce pas ? :-)
Et j'essaye de me retrouver en VBA :-)
Je me souviens, avec le fortran, on compilait la source
pour localiser les erreurs .
Est-ce le cas avec les codes VBA sous Access ? Comment ?
Excusez mes questions, il se peut que je vous fasse
rire :-)
Voilà, sur un formulaire de saisie (élaboré avec
l'Assistant d'Access) j'ai des champs (ou contrôles)
corrélés par à des règles de gestion.
Par exemple :
- le champ [POSTE] peut prendre les valeurs textes P1,
P2, P3 ou S. Ce que j'ai représenté par une liste
déroulante.
- le champ [HN] peut prendre les valeurs numériques 4,5,
5, 9 ou 10 aussi représenté par liste déroulante
- quand [POSTE] = S, [HN] ne peut être égale qu à 10 ou 5
- quand [POSTE] = P1, [HN] ne peut être égale qu à 9 ou
4.5
- quand [POSTE] = P2 ou P3, [HN] ne peut être égale qu à
19

Le code ci-dessous correspond - t - il à ce que je viens
de citer ci-dessus ?

Private Sub HN_BeforeUpdate(Cancel As Integer)
If [POSTE] = "S" Then
[HN] = 10 Or [HN] = 5
ElseIf [POSTE] = "P1" Then
[HN] = 9 Or [HN] = 4.5
ElseIf [POSTE] = "P2" Or [POSTE] = "P3" Then
[HN] = 9
End If
End If
End If
End Sub

Je vous remercie d'avance.
Avatar
Jessy Sempere [MVP]
Sinon pour ton code :

Sur quoi sont basée tes listes, sur des tables ou sur une liste de valeur
???

En fait l'idéal serait d'avoir une table contenant les HN et à quel poste
ils peuvent correspondre, genre :

HN Poste
10 S
5 S
9 P1
4.5 P1
19 P2
19 P3

Ensuite il te suffirait de baser ta liste déroulante HN sur une requête
elle même basé sur cette table avec comme critère
Poste = Forms!TonFormulaire!Poste

Après tu mets sur l'évènement après mise à jour de Poste:

Me.ListeHN.Requery

Voilà, it's good ???

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Boucland" a écrit dans le message news:
6e9c01c401fd$a2e46fd0$
Bjr
J'apprends à insérer des codes VBA dans ma base de
données Access :-)
En effet j'avais fait juste un peu de programmation
(fortran) ! classique, n'est ce pas ? :-)
Et j'essaye de me retrouver en VBA :-)
Je me souviens, avec le fortran, on compilait la source
pour localiser les erreurs .
Est-ce le cas avec les codes VBA sous Access ? Comment ?
Excusez mes questions, il se peut que je vous fasse
rire :-)
Voilà, sur un formulaire de saisie (élaboré avec
l'Assistant d'Access) j'ai des champs (ou contrôles)
corrélés par à des règles de gestion.
Par exemple :
- le champ [POSTE] peut prendre les valeurs textes P1,
P2, P3 ou S. Ce que j'ai représenté par une liste
déroulante.
- le champ [HN] peut prendre les valeurs numériques 4,5,
5, 9 ou 10 aussi représenté par liste déroulante
- quand [POSTE] = S, [HN] ne peut être égale qu à 10 ou 5
- quand [POSTE] = P1, [HN] ne peut être égale qu à 9 ou
4.5
- quand [POSTE] = P2 ou P3, [HN] ne peut être égale qu à
19

Le code ci-dessous correspond - t - il à ce que je viens
de citer ci-dessus ?

Private Sub HN_BeforeUpdate(Cancel As Integer)
If [POSTE] = "S" Then
[HN] = 10 Or [HN] = 5
ElseIf [POSTE] = "P1" Then
[HN] = 9 Or [HN] = 4.5
ElseIf [POSTE] = "P2" Or [POSTE] = "P3" Then
[HN] = 9
End If
End If
End If
End Sub

Je vous remercie d'avance.
Avatar
Pierre CFI [mvp]
bonjour
sans code tu aurais pu prévoir ces restriction dans des tables et filtrer directement tes listes déroulantes, mais bon, en code, ce
serait plutot
Private Sub HN_BeforeUpdate(Cancel As Integer)
If Me.POSTE = "S" Then
if Me.HN = 10 Or Me.HN = 5 then cancel = true
ElseIf Me.POSTE = "P1" Then
if Me.HN = 9 Or MeHN = 4.5 Then cancel = true
ElseIf Me.POSTE = "P2" Or Me.POSTE = "P3" Then
if Me.HN = 9 then cancel.true
else
cancel úlse
End If
End Sub



--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Boucland" a écrit dans le message de news: 6e9c01c401fd$a2e46fd0$
Bjr
J'apprends à insérer des codes VBA dans ma base de
données Access :-)
En effet j'avais fait juste un peu de programmation
(fortran) ! classique, n'est ce pas ? :-)
Et j'essaye de me retrouver en VBA :-)
Je me souviens, avec le fortran, on compilait la source
pour localiser les erreurs .
Est-ce le cas avec les codes VBA sous Access ? Comment ?
Excusez mes questions, il se peut que je vous fasse
rire :-)
Voilà, sur un formulaire de saisie (élaboré avec
l'Assistant d'Access) j'ai des champs (ou contrôles)
corrélés par à des règles de gestion.
Par exemple :
- le champ [POSTE] peut prendre les valeurs textes P1,
P2, P3 ou S. Ce que j'ai représenté par une liste
déroulante.
- le champ [HN] peut prendre les valeurs numériques 4,5,
5, 9 ou 10 aussi représenté par liste déroulante
- quand [POSTE] = S, [HN] ne peut être égale qu à 10 ou 5
- quand [POSTE] = P1, [HN] ne peut être égale qu à 9 ou
4.5
- quand [POSTE] = P2 ou P3, [HN] ne peut être égale qu à
19

Le code ci-dessous correspond - t - il à ce que je viens
de citer ci-dessus ?

Private Sub HN_BeforeUpdate(Cancel As Integer)
If [POSTE] = "S" Then
[HN] = 10 Or [HN] = 5
ElseIf [POSTE] = "P1" Then
[HN] = 9 Or [HN] = 4.5
ElseIf [POSTE] = "P2" Or [POSTE] = "P3" Then
[HN] = 9
End If
End If
End If
End Sub

Je vous remercie d'avance.
Avatar
Boucland
re "Jessy"
mes listes déroulantes sont basées sur des valeurs et non
pas des sur des tables.

vous avez raison, il serait mieux d'avoir une tables
contenant toutes les combinaisons possibles entre poste
et HN.
je me connais pas tellement en code VBA mais je vais
essayer qd même :-)
Merci bcp
-----Message d'origine-----
Sinon pour ton code :

Sur quoi sont basée tes listes, sur des tables ou sur
une liste de valeur

???

En fait l'idéal serait d'avoir une table contenant les
HN et à quel poste

ils peuvent correspondre, genre :

HN Poste
10 S
5 S
9 P1
4.5 P1
19 P2
19 P3

Ensuite il te suffirait de baser ta liste déroulante HN
sur une requête

elle même basé sur cette table avec comme critère
Poste = Forms!TonFormulaire!Poste

Après tu mets sur l'évènement après mise à jour de Poste:

Me.ListeHN.Requery

Voilà, it's good ???

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Boucland" a écrit dans le
message news:

6e9c01c401fd$a2e46fd0$
Bjr
J'apprends à insérer des codes VBA dans ma base de
données Access :-)
En effet j'avais fait juste un peu de programmation
(fortran) ! classique, n'est ce pas ? :-)
Et j'essaye de me retrouver en VBA :-)
Je me souviens, avec le fortran, on compilait la source
pour localiser les erreurs .
Est-ce le cas avec les codes VBA sous Access ? Comment ?
Excusez mes questions, il se peut que je vous fasse
rire :-)
Voilà, sur un formulaire de saisie (élaboré avec
l'Assistant d'Access) j'ai des champs (ou contrôles)
corrélés par à des règles de gestion.
Par exemple :
- le champ [POSTE] peut prendre les valeurs textes P1,
P2, P3 ou S. Ce que j'ai représenté par une liste
déroulante.
- le champ [HN] peut prendre les valeurs numériques 4,5,
5, 9 ou 10 aussi représenté par liste déroulante
- quand [POSTE] = S, [HN] ne peut être égale qu à 10 ou 5
- quand [POSTE] = P1, [HN] ne peut être égale qu à 9 ou
4.5
- quand [POSTE] = P2 ou P3, [HN] ne peut être égale qu à
19

Le code ci-dessous correspond - t - il à ce que je viens
de citer ci-dessus ?

Private Sub HN_BeforeUpdate(Cancel As Integer)
If [POSTE] = "S" Then
[HN] = 10 Or [HN] = 5
ElseIf [POSTE] = "P1" Then
[HN] = 9 Or [HN] = 4.5
ElseIf [POSTE] = "P2" Or [POSTE] = "P3" Then
[HN] = 9
End If
End If
End If
End Sub

Je vous remercie d'avance.


.