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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
<domivax@gmail.com> a écrit dans le message de news:2858c68c-f2b1-4621-8557-5dfc1bcdf219@t54g2000hsg.googlegroups.com...
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.
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
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
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.
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.