Si une des conditions remplies, tu fais ma macro

Le
domivax
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
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