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

Si une des conditions remplies, tu fais ma macro

3 réponses
Avatar
domivax
Bonjour =E0 tous,

Je suis sur un projet pour l=92impression d=92enveloppes.

J=92ai :
-MaTable avec trois champs Nom, Rue, Ville
-MonEtatAdresse avec mes trois champs provenant de MaTable
-MonEtatEnveloppe avec un MonSousEtat avec comme source MonEtatAdresse

Le but de la man=9Cuvre est de d=E9placer MonSousEtat de droite =E0 gauche
en fonction de la longueur des champs Nom, Rue, Ville pour =E9quilibrer
l=92adresse.

C'est-=E0-dire :

Si la longueur d=92un des trois champs Nom, Rue, Ville est inf=E9rieure =E0
30 caract=E8res -> Me.MonSousEtat.Left =3D 7500

Si la longueur d=92un des trois champs Nom, Rue, Ville est entre 31 et
40 caract=E8res -> Me.MonSousEtat.Left =3D 6500

Si la longueur d=92un des trois champs Nom, Rue, Ville est entre 41 et
50 caract=E8res -> Me.MonSousEtat.Left =3D 5500

Si la longueur d=92un des trois champs Nom, Rue, Ville est sup=E9rieure =E0
51 caract=E8res -> Me.MonSousEtat.Left =3D 4500


J=92ai commenc=E9 =E0 =E9crire ma macro avec des If sous le formatage de
MonEtatEnveloppe=85.

If Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) <=3D 30 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <=3D 30 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <=3D 30 Then
Me.MonSousEtat.Left =3D 7500



ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![ Nom]) <=3D 40 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <=3D 40 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <=3D 40 Then
Me.MonSousEtat.Left =3D 6500

ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![ Nom]) <=3D 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <=3D 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <=3D 50 Then
Me.MonSousEtat.Left =3D 5500

ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) >=3D 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) >=3D 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) >=3D 50 Then
Me. MonSousEtat.Left =3D 4500
End If

Malheureusement =E7a ne marche pas, parce que dans un cas o=F9 je me
retrouve avec Nom 45 caract=E8res, Rue 20 caract=E8res & Ville 20
caract=E8res, mon pav=E9 adresse se retrouve =E0 .Left 7500 alors que je
voudrais qu=92il se trouve =E0 .Left 5500.

Comment je dois faire ?

Merci pour votre aide.
A bient=F4t.
Xavier

3 réponses

Avatar
Michel__D
Bonjour,

Essaye avec le code suivant :

Dim iX AS Long, iY AS Long, iZ AS Long

iX = Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom])
iY = Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue])
iZ = Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville])
If iX > 50 Or iY > 50 Or iZ > 50 Then
Me. MonSousEtat.Left = 4500
ElseIf iX > 40 Or iY > 40 Or iZ > 40 Then
Me. MonSousEtat.Left = 5500
ElseIf iX > 30 Or iY > 30 Or iZ > 30 Then
Me. MonSousEtat.Left = 6500
Else
Me. MonSousEtat.Left = 7500
End If


a écrit dans le message de news:
Bonjour à tous,

Je suis sur un projet pour l’impression d’enveloppes.

J’ai :
-MaTable avec trois champs Nom, Rue, Ville
-MonEtatAdresse avec mes trois champs provenant de MaTable
-MonEtatEnveloppe avec un MonSousEtat avec comme source MonEtatAdresse

Le but de la manœuvre est de déplacer MonSousEtat de droite à gauche
en fonction de la longueur des champs Nom, Rue, Ville pour équilibrer
l’adresse.

C'est-à-dire :

Si la longueur d’un des trois champs Nom, Rue, Ville est inférieure à
30 caractères -> Me.MonSousEtat.Left = 7500

Si la longueur d’un des trois champs Nom, Rue, Ville est entre 31 et
40 caractères -> Me.MonSousEtat.Left = 6500

Si la longueur d’un des trois champs Nom, Rue, Ville est entre 41 et
50 caractères -> Me.MonSousEtat.Left = 5500

Si la longueur d’un des trois champs Nom, Rue, Ville est supérieure à
51 caractères -> Me.MonSousEtat.Left = 4500


J’ai commencé à écrire ma macro avec des If sous le formatage de
MonEtatEnveloppe….

If Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) <= 30 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <= 30 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <= 30 Then
Me.MonSousEtat.Left = 7500



ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![ Nom]) <= 40 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <= 40 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <= 40 Then
Me.MonSousEtat.Left = 6500

ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![ Nom]) <= 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <= 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <= 50 Then
Me.MonSousEtat.Left = 5500

ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) >= 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) >= 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) >= 50 Then
Me. MonSousEtat.Left = 4500
End If

Malheureusement ça ne marche pas, parce que dans un cas où je me
retrouve avec Nom 45 caractères, Rue 20 caractères & Ville 20
caractères, mon pavé adresse se retrouve à .Left 7500 alors que je
voudrais qu’il se trouve à .Left 5500.

Comment je dois faire ?

Merci pour votre aide.
A bientôt.
Xavier
Avatar
Gilles MOUGNOZ
Bonjour, Xavier
Pour obtenir le bon comportement, tu devrais faire ton test dans l'autre
sens, c'est à dire en commençant par tester si les longueurs sont
supérieures à 51 caractères.
Mais je te propose une autre solution: chercher la longueur la plus grande
et déterminer la position de ton sous-formulaire en conséquence.
Voila ce que cela peut donner:

Dim LongueurMax as Long
With Reports![MonEtatEnveloppe]![MonSousEtat]
If Len(![Nom]) < Len(![Rue]) Then
If Len(![Rue]) < Len(![Ville]) Then
LongueurMax = Len(![Ville])
Else
LongueurMax = Len(![Rue])
End If
Else
If Len(![Nom]) < Len(![Ville]) Then
LongueurMax = Len(![Ville])
Else
LongueurMax = Len(![Nom])
End If
End If
End With
Select Case LongueurMax
Case Is > 50
Me.MonSousEtat.Left = 4500
Case 41 To 50
Me.MonSousEtat.Left = 5500
Case 31 To 40
Me.MonSousEtat.Left = 6500
Case Is <0
Me.MonSousEtat.Left = 7500
End Select

Si tu souhaites plus d'information sur les instructions utilisées (With,
Select Case...), l'aide en ligne (F1) pourra t'aider.
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
Xavier a écrit :
Bonjour à tous,

Je suis sur un projet pour l’impression d’enveloppes.

J’ai :
-MaTable avec trois champs Nom, Rue, Ville
-MonEtatAdresse avec mes trois champs provenant de MaTable
-MonEtatEnveloppe avec un MonSousEtat avec comme source MonEtatAdresse

Le but de la manœuvre est de déplacer MonSousEtat de droite à gauche
en fonction de la longueur des champs Nom, Rue, Ville pour équilibrer
l’adresse.

C'est-à-dire :

Si la longueur d’un des trois champs Nom, Rue, Ville est inférieure à
30 caractères -> Me.MonSousEtat.Left = 7500

Si la longueur d’un des trois champs Nom, Rue, Ville est entre 31 et
40 caractères -> Me.MonSousEtat.Left = 6500

Si la longueur d’un des trois champs Nom, Rue, Ville est entre 41 et
50 caractères -> Me.MonSousEtat.Left = 5500

Si la longueur d’un des trois champs Nom, Rue, Ville est supérieure à
51 caractères -> Me.MonSousEtat.Left = 4500


J’ai commencé à écrire ma macro avec des If sous le formatage de
MonEtatEnveloppe….

If Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) <= 30 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <= 30 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <= 30 Then
Me.MonSousEtat.Left = 7500



ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![ Nom]) <= 40 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <= 40 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) > 30 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <= 40 Then
Me.MonSousEtat.Left = 6500

ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![ Nom]) <= 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) <= 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) > 40 And
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) <= 50 Then
Me.MonSousEtat.Left = 5500

ElseIf Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Nom]) >= 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Rue]) >= 50 Or _
Len(Reports![MonEtatEnveloppe]![MonSousEtat]![Ville]) >= 50 Then
Me. MonSousEtat.Left = 4500
End If

Malheureusement ça ne marche pas, parce que dans un cas où je me
retrouve avec Nom 45 caractères, Rue 20 caractères & Ville 20
caractères, mon pavé adresse se retrouve à .Left 7500 alors que je
voudrais qu’il se trouve à .Left 5500.

Comment je dois faire ?

Merci pour votre aide.
A bientôt.
Xavier
Avatar
domivax
Bonjour Michel,

Oui ça marche très bien.

Merci beaucoup.
Bonne journée