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

Fonction VBA spéciale

3 réponses
Avatar
KIKSAN
Bonjour =E0 tous,

Je dois cr=E9er des fonctions VBA dans Excel pour exporter=20
(d'Excel vers un autre syst=E8me d'informations) une=20
d=E9signation de 90 caract=E8res en 3 d=E9signations de 30=20
caract=E8res sans couper les mots.

Exemple d'un texte =E0 d=E9couper :
A1 =3D "Ils doivent r=E9aliser le d=E9coupage d'une d=E9signation=20
de 90 caract=E8res en plusieurs d=E9signat"

- Texte 1 doit avoir 30 caract=E8res sans coupure de mots :
Texte 1 =3D "Ils doivent r=E9aliser le " (24 caract=E8res)=20
rajouter 6 blancs pour arriver =E0 trente

- Texte 2 doit avoir 30 caract=E8res sans coupure de mots :
Texte 2 =3D "d=E9coupage d'une d=E9signation de" (30=20
caract=E8res)=20

- Texte 3 doit avoir 30 caract=E8res avec possibilit=E9 de=20
coupure de mots :
Texte 3 =3D "90 caract=E8res en plusieurs d=E9s" (on tronque=20
au 30 =E8me caract=E8res. Dommage pour les caract=E8res qui=20
manquent le syst=E8me n'accepte que 90 caract=E8res au total)
.

Quelqu'un conna=EEt-il une solution ou une proc=E9dure VBA=20
existante ?

Par avance merci

KIKSAN

3 réponses

Avatar
Jessy SEMPERE
Bonjour

Le code qui suit devrait te convenir :
*********************************************
Dim str1 As String
Dim str2 As String
Dim str3 As String

Function Scinder(str As String)
Dim pos As Integer
Dim intStr As Integer
For intStr = 1 To 2
pos = InStr(1, str, " ")
Do While pos > 0
If InStr(pos + 1, str, " ") <= 30 Then
pos = InStr(pos + 1, str, " ")
Else
Exit Do
End If
Loop
If intStr = 1 Then str1 = Left(str, pos)
If intStr = 2 Then str2 = Left(str, pos)
str = Mid(str, pos + 1)
Next
str3 = Left(str, 30)
End Function
*********************************************
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"KIKSAN" a écrit dans le message news:
0b1e01c38e5c$37add360$
Bonjour à tous,

Je dois créer des fonctions VBA dans Excel pour exporter
(d'Excel vers un autre système d'informations) une
désignation de 90 caractères en 3 désignations de 30
caractères sans couper les mots.

Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage d'une désignation
de 90 caractères en plusieurs désignat"

- Texte 1 doit avoir 30 caractères sans coupure de mots :
Texte 1 = "Ils doivent réaliser le " (24 caractères)
rajouter 6 blancs pour arriver à trente

- Texte 2 doit avoir 30 caractères sans coupure de mots :
Texte 2 = "découpage d'une désignation de" (30
caractères)

- Texte 3 doit avoir 30 caractères avec possibilité de
coupure de mots :
Texte 3 = "90 caractères en plusieurs dés" (on tronque
au 30 ème caractères. Dommage pour les caractères qui
manquent le système n'accepte que 90 caractères au total)
.

Quelqu'un connaît-il une solution ou une procédure VBA
existante ?

Par avance merci

KIKSAN
Avatar
Vincent.
Salut !
C'était rigolo tout plein à écrire comme macro... Voià
donc le résultat d'une réflexion intense et passionnée, en
espérant que cela fera ton bonheur ;-)))) !!

-- Début du code --

Option Explicit

Sub Tronçonnage()
Dim Les0, Chaîne, Bloc1, Bloc2, Bloc3 As String
Les0 = " "
Chaîne = "Ils doivent réaliser le découpage d'une
désignation de 90 caractères en plusieurs désignat"
Bloc1 = Left(Chaîne, InStrRev(Left(Chaîne, 31), " "))
Chaîne = Replace(Chaîne, Bloc1, "")
Bloc1 = Left(Bloc1 & Les0, 30)

Bloc2 = Left(Chaîne, InStrRev(Left(Chaîne, 31), " "))
Chaîne = Replace(Chaîne, Bloc2, "", 1)
Bloc2 = Left(Bloc2 & Les0, 30)

Bloc3 = Left(Chaîne & Les0, 30)

ThisWorkbook.Worksheets("Feuil1").Range("A2").Value = Bloc1
ThisWorkbook.Worksheets("Feuil1").Range("A3").Value = Bloc2
ThisWorkbook.Worksheets("Feuil1").Range("A4").Value = Bloc3

End Sub

-- Fin du code --

Et hop !

-----Message d'origine-----
Bonjour à tous,

Je dois créer des fonctions VBA dans Excel pour exporter
(d'Excel vers un autre système d'informations) une
désignation de 90 caractères en 3 désignations de 30
caractères sans couper les mots.

Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage d'une désignation
de 90 caractères en plusieurs désignat"

- Texte 1 doit avoir 30 caractères sans coupure de mots :
Texte 1 = "Ils doivent réaliser le " (24 caractères)
rajouter 6 blancs pour arriver à trente

- Texte 2 doit avoir 30 caractères sans coupure de mots :
Texte 2 = "découpage d'une désignation de" (30
caractères)

- Texte 3 doit avoir 30 caractères avec possibilité de
coupure de mots :
Texte 3 = "90 caractères en plusieurs dés" (on tronque
au 30 ème caractères. Dommage pour les caractères qui
manquent le système n'accepte que 90 caractères au total)
..

Quelqu'un connaît-il une solution ou une procédure VBA
existante ?

Par avance merci

KIKSAN

.



Avatar
KIKSAN
Merci Jessy

ça me convient tout à fait !! (propre et succint)

Bonne fin de journée

Cordialement

KIKSAN
-----Message d'origine-----
Bonjour

Le code qui suit devrait te convenir :
*********************************************
Dim str1 As String
Dim str2 As String
Dim str3 As String

Function Scinder(str As String)
Dim pos As Integer
Dim intStr As Integer
For intStr = 1 To 2
pos = InStr(1, str, " ")
Do While pos > 0
If InStr(pos + 1, str, " ") <= 30 Then
pos = InStr(pos + 1, str, " ")
Else
Exit Do
End If
Loop
If intStr = 1 Then str1 = Left(str, pos)
If intStr = 2 Then str2 = Left(str, pos)
str = Mid(str, pos + 1)
Next
str3 = Left(str, 30)
End Function
*********************************************
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"KIKSAN" a écrit dans le message
news:

0b1e01c38e5c$37add360$
Bonjour à tous,

Je dois créer des fonctions VBA dans Excel pour exporter
(d'Excel vers un autre système d'informations) une
désignation de 90 caractères en 3 désignations de 30
caractères sans couper les mots.

Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage d'une désignation
de 90 caractères en plusieurs désignat"

- Texte 1 doit avoir 30 caractères sans coupure de mots :
Texte 1 = "Ils doivent réaliser le " (24 caractères)
rajouter 6 blancs pour arriver à trente

- Texte 2 doit avoir 30 caractères sans coupure de mots :
Texte 2 = "découpage d'une désignation de" (30
caractères)

- Texte 3 doit avoir 30 caractères avec possibilité de
coupure de mots :
Texte 3 = "90 caractères en plusieurs dés" (on tronque
au 30 ème caractères. Dommage pour les caractères qui
manquent le système n'accepte que 90 caractères au total)
..

Quelqu'un connaît-il une solution ou une procédure VBA
existante ?

Par avance merci

KIKSAN



.