Si une des conditions remplies, tu fais ma macro

Le
domivax
Bonjour tous,

Je suis sur un projet pour limpression denveloppes.

Jai :
-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 manuvre est de dplacer MonSousEtat de droite gauche
en fonction de la longueur des champs Nom, Rue, Ville pour quilibrer
ladresse.

C'est--dire :

Si la longueur dun des trois champs Nom, Rue, Ville est infrieure
30 caractres -> Me.MonSousEtat.Left = 7500

Si la longueur dun des trois champs Nom, Rue, Ville est entre 31 et
40 caractres -> Me.MonSousEtat.Left = 6500

Si la longueur dun des trois champs Nom, Rue, Ville est entre 41 et
50 caractres -> Me.MonSousEtat.Left = 5500

Si la longueur dun des trois champs Nom, Rue, Ville est suprieure
51 caractres -> Me.MonSousEtat.Left = 4500


Jai 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 caractres, Rue 20 caractres & Ville 20
caractres, mon pav adresse se retrouve .Left 7500 alors que je
voudrais quil se trouve .Left 5500.

Comment je dois faire ?

Merci pour votre aide.
A bientt.
Xavier
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #16593281
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


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
Gilles MOUGNOZ
Le #16593531
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
domivax
Le #16593601
Bonjour Michel,

Oui ça marche très bien.

Merci beaucoup.
Bonne journée
Publicité
Poster une réponse
Anonyme