OVH Cloud OVH Cloud

Débutant : Amélioration d'un petit de code

2 réponses
Avatar
Franck
ACCESS XP

Bonjour,

Comment faire en vba pour remplacer la macro "Recherche"
qui atteind d'abord un enregistrement et apr=E8s atteind un=20
controle.

Et si vous auriez eventuellement une id=E9e pour am=E9liorer=20
ce code je suis preneur


If Me![Liste12].ListCount =3D 0 Then
Respons =3D MsgBox("ACUNE PERSONNE A RELANCER", vbOKOnly +=20
vbInformation)
Exit Sub

Else

stDocName =3D "Recherche"
DoCmd.RunMacro stDocName
End If

If IsNull([Form_Relance].Form![DateRelance1]) And IsNull
(Form_Relance.Form![DateRelance2]) And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1] =3D Date
Form_Relance.Form![DateRelance1].Visible =3D True
Form_Relance.Form![DateRelance2].Visible =3D False
Form_Relance.Form![DateRelance3].Visible =3D False
Form_Relance.Form![DateRelance4].Visible =3D False
frm.Actualiser


ElseIf Form_Relance.Form![DateRelance1] <> "" And IsNull
(Form_Relance.Form![DateRelance2]) And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1].Visible =3D False
Form_Relance.Form![DateRelance2].Visible =3D True
Form_Relance.Form![DateRelance3].Visible =3D False
Form_Relance.Form![DateRelance4].Visible =3D False
Form_Relance.Form![DateRelance2] =3D Date
frm.Actualiser


ElseIf Form_Relance.Form![DateRelance1] <> "" And=20
Form_Relance.Form![DateRelance2] <> "" And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1].Visible =3D False
Form_Relance.Form![DateRelance2].Visible =3D False
Form_Relance.Form![DateRelance3].Visible =3D True
Form_Relance.Form![DateRelance4].Visible =3D False
Form_Relance.Form![DateRelance3] =3D Date
frm.Actualiser


ElseIf Form_Relance.Form![DateRelance1] <> "" And=20
Form_Relance.Form![DateRelance2] <> "" And=20
Form_Relance.Form![DateRelance3] <> "" And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1].Visible =3D False
Form_Relance.Form![DateRelance2].Visible =3D False
Form_Relance.Form![DateRelance3].Visible =3D False
Form_Relance.Form![DateRelance4].Visible =3D True
Form_Relance.Form![DateRelance4] =3D Date
frm.Actualiser

Else
Me.Codecontact.SetFocus
End If

End Sub

2 réponses

Avatar
jean
Bonjour,
Si tu cherches à filtrer par une liste sur un formulaire,
essaye:
Me.Filter = "[champ] = " & Me![maListe].Column(x)
Me.FilterOn = True
à adapter (x = 0, 1, : rang de la colonne de la liste)

Cordialement,
jean
-----Message d'origine-----
ACCESS XP

Bonjour,

Comment faire en vba pour remplacer la macro "Recherche"
qui atteind d'abord un enregistrement et après atteind un
controle.

Et si vous auriez eventuellement une idée pour améliorer
ce code je suis preneur


If Me![Liste12].ListCount = 0 Then
Respons = MsgBox("ACUNE PERSONNE A RELANCER", vbOKOnly +
vbInformation)
Exit Sub

Else

stDocName = "Recherche"
DoCmd.RunMacro stDocName
End If

If IsNull([Form_Relance].Form![DateRelance1]) And IsNull
(Form_Relance.Form![DateRelance2]) And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1] = Date
Form_Relance.Form![DateRelance1].Visible = True
Form_Relance.Form![DateRelance2].Visible = False
Form_Relance.Form![DateRelance3].Visible = False
Form_Relance.Form![DateRelance4].Visible = False
frm.Actualiser


ElseIf Form_Relance.Form![DateRelance1] <> "" And IsNull
(Form_Relance.Form![DateRelance2]) And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1].Visible = False
Form_Relance.Form![DateRelance2].Visible = True
Form_Relance.Form![DateRelance3].Visible = False
Form_Relance.Form![DateRelance4].Visible = False
Form_Relance.Form![DateRelance2] = Date
frm.Actualiser


ElseIf Form_Relance.Form![DateRelance1] <> "" And
Form_Relance.Form![DateRelance2] <> "" And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1].Visible = False
Form_Relance.Form![DateRelance2].Visible = False
Form_Relance.Form![DateRelance3].Visible = True
Form_Relance.Form![DateRelance4].Visible = False
Form_Relance.Form![DateRelance3] = Date
frm.Actualiser


ElseIf Form_Relance.Form![DateRelance1] <> "" And
Form_Relance.Form![DateRelance2] <> "" And
Form_Relance.Form![DateRelance3] <> "" And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1].Visible = False
Form_Relance.Form![DateRelance2].Visible = False
Form_Relance.Form![DateRelance3].Visible = False
Form_Relance.Form![DateRelance4].Visible = True
Form_Relance.Form![DateRelance4] = Date
frm.Actualiser

Else
Me.Codecontact.SetFocus
End If

End Sub

.



Avatar
Franck
Bonjour, Jean

Merci pour ta réponse

C'est pas tout à fait ça!

En fait j'ai une zone de liste (liste12)basé sur une
requête qui m'affiche les personnes à relancer

A coté de cette liste, j'ai une zone de texte (Texte39)
avec comme source contrôle : =Liste12.column(3)
Avec =Liste12.column(3), je récupère la référence du
contact

Sur l'évenement "double clic" de la liste12, j'ai mis le
code ci-dessous

''Je Test si la liste est vide''
If Me![Liste12].ListCount = 0 Then
Respons = MsgBox("ACUNE PERSONNE A RELANCER", vbOKOnly +
vbInformation)
Exit Sub

Else

''J'execute la macro "recherche" pour aller sur la fiche
du contact''''

stDocName = "Recherche"
DoCmd.RunMacro stDocName
End If

'Les problème commence là!!!'
'Ici j'essai de dire que si il n'y a rien dans les champs
daterelance mettre la date' mais comment être sur que ce
code s'éxécute après la macro "recherche"

If IsNull([Form_Relance].Form![DateRelance1]) And IsNull
(Form_Relance.Form![DateRelance2]) And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance1] = Date

ElseIf Form_Relance.Form![DateRelance1] <> "" And IsNull
(Form_Relance.Form![DateRelance2]) And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance2] = Date

ElseIf Form_Relance.Form![DateRelance1] <> "" And
Form_Relance.Form![DateRelance2] <> "" And IsNull
(Form_Relance.Form![DateRelance3]) And IsNull
(Form_Relance.Form![DateRelance4]) Then
Form_Relance.Form![DateRelance3] = Date

ElseIf Form_Relance.Form![DateRelance1] <> "" And
Form_Relance.Form![DateRelance2] <> "" And
Form_Relance.Form![DateRelance3] <> "" And IsNull
(Form_Relance.Form![DateRelance4]) Then

Form_Relance.Form![DateRelance4] = Date
frm.Actualiser

Else
Me.Codecontact.SetFocus
End If
End Sub

(La macro "Recherche" commence par
AtteindreunEnregistrement : Référence =[Texte39] puis
Atteindrecontrôle : Référence =[EmailRep])

Le but final de tous ça est :
Quand la personne clic sur la liste12 aller directement
sur la fiche concernant le contact (grace à la
macro "Recherche")
Une fois sur la fiche du contact exécuter le code ci-
dessus mais sans rééxécuter la macro
je pense qu'il faudrait au lieu de la macro, écrire
directement le code en Vba (mais je sais pas faire)

J'espère etre clair dans mon explication

Merci pour vos réponse




.



.