Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant plus de 38
caractères 2 cellules : la première avec maximum 38 caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le premier
mot,
d'un maximum de 38 caractères en excluant les caractères en surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 =
"Ils
doivent réaliser le découpage" (= 33 caractères ou 34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant plus de 38
caractères 2 cellules : la première avec maximum 38 caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le premier
mot,
d'un maximum de 38 caractères en excluant les caractères en surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 =
"Ils
doivent réaliser le découpage" (= 33 caractères ou 34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant plus de 38
caractères 2 cellules : la première avec maximum 38 caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le premier
mot,
d'un maximum de 38 caractères en excluant les caractères en surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 =
"Ils
doivent réaliser le découpage" (= 33 caractères ou 34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 =
"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 =
"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 =
"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant plus de 38
caractères 2 cellules : la première avec maximum 38 caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le premier
mot,
d'un maximum de 38 caractères en excluant les caractères en surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 > "Ils
doivent réaliser le découpage" (= 33 caractères ou 34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant plus de 38
caractères 2 cellules : la première avec maximum 38 caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le premier
mot,
d'un maximum de 38 caractères en excluant les caractères en surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 > "Ils
doivent réaliser le découpage" (= 33 caractères ou 34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant plus de 38
caractères 2 cellules : la première avec maximum 38 caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le premier
mot,
d'un maximum de 38 caractères en excluant les caractères en surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 > "Ils
doivent réaliser le découpage" (= 33 caractères ou 34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Daniel.C a écrit le 19/10/2008 à 15h32 :Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 >>> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle pour un
fichier déjà saisi ?
Merci pour tout
Éric
Daniel.C a écrit le 19/10/2008 à 15h32 :
Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 >>> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle pour un
fichier déjà saisi ?
Merci pour tout
Éric
Daniel.C a écrit le 19/10/2008 à 15h32 :Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2 >>> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle pour un
fichier déjà saisi ?
Merci pour tout
Éric
eric-fore a écrit :Daniel.C a écrit le 19/10/2008 à 15h32 :Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
>>> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle pour
un
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
eric-fore a écrit :
Daniel.C a écrit le 19/10/2008 à 15h32 :
Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
>>> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle pour
un
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
eric-fore a écrit :Daniel.C a écrit le 19/10/2008 à 15h32 :Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
>>> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle pour
un
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Jacky a écrit le 21/10/2008 à 11h06 :Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Jacky,
J'ai essayé tes macros mais je ne suis pas un pro. Pour l'instant cela ne
fonctionne pas mais peut-être ai-je effectué une mauvaise manip. J'ai mis
l'info
"=phrase1(a2)" dans la cellule B2 et "=phrase2(a2)" en C2 mais ne
s'inscrit que
#NOM? dans les cellules
Pour info dans Visual Basic la fonction "If IsError(Application.Search("
",
Mot)) Then Phrase1 = Left(Mot, 38): Exit Function" apparaissait en rouge
car
Function était à la ligne. Je l'ai rétablie mais toujours identique quant
au
résultat.
Aurais-tu une idée sur ma mauvaise manip ?
Merci pour ton aide
Éric
Jacky a écrit le 21/10/2008 à 11h06 :
Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Jacky,
J'ai essayé tes macros mais je ne suis pas un pro. Pour l'instant cela ne
fonctionne pas mais peut-être ai-je effectué une mauvaise manip. J'ai mis
l'info
"=phrase1(a2)" dans la cellule B2 et "=phrase2(a2)" en C2 mais ne
s'inscrit que
#NOM? dans les cellules
Pour info dans Visual Basic la fonction "If IsError(Application.Search("
",
Mot)) Then Phrase1 = Left(Mot, 38): Exit Function" apparaissait en rouge
car
Function était à la ligne. Je l'ai rétablie mais toujours identique quant
au
résultat.
Aurais-tu une idée sur ma mauvaise manip ?
Merci pour ton aide
Éric
Jacky a écrit le 21/10/2008 à 11h06 :Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères" n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Jacky,
J'ai essayé tes macros mais je ne suis pas un pro. Pour l'instant cela ne
fonctionne pas mais peut-être ai-je effectué une mauvaise manip. J'ai mis
l'info
"=phrase1(a2)" dans la cellule B2 et "=phrase2(a2)" en C2 mais ne
s'inscrit que
#NOM? dans les cellules
Pour info dans Visual Basic la fonction "If IsError(Application.Search("
",
Mot)) Then Phrase1 = Left(Mot, 38): Exit Function" apparaissait en rouge
car
Function était à la ligne. Je l'ai rétablie mais toujours identique quant
au
résultat.
Aurais-tu une idée sur ma mauvaise manip ?
Merci pour ton aide
Éric
Daniel.C a écrit le 21/10/2008 à 11h18 :eric-fore a écrit :Daniel.C a écrit le 19/10/2008 à 15h32 :Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle
pourun
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
Re,
Cela fonctionne. J'ai même réussi, au joie, à modifier ta macro pour ranger les
infos dans les deux cellules à droite et non en dessous.
Par contre je ne comprends pas pourquoi, pour les infos déjà enregistrées dans
le fichier la deuxième partie est tronquée à 15 pour une première phrase et à 5
pour la suivante alors que lorsque j'entre ma phrase "Ils doivent réaliser le
découpage en deux cellules d'une désignation de plus de 76 caractères" en
copier/coller les coupures se font à 36 caractères pour la 1ère partie et 34
caractères pour la 2ème partie.
J'ai effectivement un fichier d'un millier de lignes. Je pourrais le ranger en
comptant le nombre de caractères des cellules incriminées puis ne couper que
celles dépassant 38 caractères. Toutefois si cela ne t'ennuie pas j'accepte ta
proposition d'une macro pouvant résoudre automatiquement mon problème.
Encore merci de ton aide.
Éric
Daniel.C a écrit le 21/10/2008 à 11h18 :
eric-fore a écrit :
Daniel.C a écrit le 19/10/2008 à 15h32 :
Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle
pour
un
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
Re,
Cela fonctionne. J'ai même réussi, au joie, à modifier ta macro pour ranger les
infos dans les deux cellules à droite et non en dessous.
Par contre je ne comprends pas pourquoi, pour les infos déjà enregistrées dans
le fichier la deuxième partie est tronquée à 15 pour une première phrase et à 5
pour la suivante alors que lorsque j'entre ma phrase "Ils doivent réaliser le
découpage en deux cellules d'une désignation de plus de 76 caractères" en
copier/coller les coupures se font à 36 caractères pour la 1ère partie et 34
caractères pour la 2ème partie.
J'ai effectivement un fichier d'un millier de lignes. Je pourrais le ranger en
comptant le nombre de caractères des cellules incriminées puis ne couper que
celles dépassant 38 caractères. Toutefois si cela ne t'ennuie pas j'accepte ta
proposition d'une macro pouvant résoudre automatiquement mon problème.
Encore merci de ton aide.
Éric
Daniel.C a écrit le 21/10/2008 à 11h18 :eric-fore a écrit :Daniel.C a écrit le 19/10/2008 à 15h32 :Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle
pourun
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
Re,
Cela fonctionne. J'ai même réussi, au joie, à modifier ta macro pour ranger les
infos dans les deux cellules à droite et non en dessous.
Par contre je ne comprends pas pourquoi, pour les infos déjà enregistrées dans
le fichier la deuxième partie est tronquée à 15 pour une première phrase et à 5
pour la suivante alors que lorsque j'entre ma phrase "Ils doivent réaliser le
découpage en deux cellules d'une désignation de plus de 76 caractères" en
copier/coller les coupures se font à 36 caractères pour la 1ère partie et 34
caractères pour la 2ème partie.
J'ai effectivement un fichier d'un millier de lignes. Je pourrais le ranger en
comptant le nombre de caractères des cellules incriminées puis ne couper que
celles dépassant 38 caractères. Toutefois si cela ne t'ennuie pas j'accepte ta
proposition d'une macro pouvant résoudre automatiquement mon problème.
Encore merci de ton aide.
Éric
Daniel.C a écrit le 21/10/2008 à 11h18 :eric-fore a écrit :Daniel.C a écrit le 19/10/2008 à 15h32 :Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle
pourun
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
Re,
Cela fonctionne. J'ai même réussi, au joie, à modifier ta macro pour ranger les
infos dans les deux cellules à droite et non en dessous.
Par contre je ne comprends pas pourquoi, pour les infos déjà enregistrées dans
le fichier la deuxième partie est tronquée à 15 pour une première phrase et à 5
pour la suivante alors que lorsque j'entre ma phrase "Ils doivent réaliser le
découpage en deux cellules d'une désignation de plus de 76 caractères" en
copier/coller les coupures se font à 36 caractères pour la 1ère partie et 34
caractères pour la 2ème partie.
J'ai effectivement un fichier d'un millier de lignes. Je pourrais le ranger en
comptant le nombre de caractères des cellules incriminées puis ne couper que
celles dépassant 38 caractères. Toutefois si cela ne t'ennuie pas j'accepte ta
proposition d'une macro pouvant résoudre automatiquement mon problème.
Encore merci de ton aide.
Éric
Daniel.C a écrit le 21/10/2008 à 11h18 :
eric-fore a écrit :
Daniel.C a écrit le 19/10/2008 à 15h32 :
Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle
pour
un
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
Re,
Cela fonctionne. J'ai même réussi, au joie, à modifier ta macro pour ranger les
infos dans les deux cellules à droite et non en dessous.
Par contre je ne comprends pas pourquoi, pour les infos déjà enregistrées dans
le fichier la deuxième partie est tronquée à 15 pour une première phrase et à 5
pour la suivante alors que lorsque j'entre ma phrase "Ils doivent réaliser le
découpage en deux cellules d'une désignation de plus de 76 caractères" en
copier/coller les coupures se font à 36 caractères pour la 1ère partie et 34
caractères pour la 2ème partie.
J'ai effectivement un fichier d'un millier de lignes. Je pourrais le ranger en
comptant le nombre de caractères des cellules incriminées puis ne couper que
celles dépassant 38 caractères. Toutefois si cela ne t'ennuie pas j'accepte ta
proposition d'une macro pouvant résoudre automatiquement mon problème.
Encore merci de ton aide.
Éric
Daniel.C a écrit le 21/10/2008 à 11h18 :eric-fore a écrit :Daniel.C a écrit le 19/10/2008 à 15h32 :Bonjour.
Mets la macro suivante dans le module de ta feuille. Quand tu saisis un
texte de plus de 38 caractères dans un cellule quelconque, la macro
s'exécute en temps réel :
Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target.Value) > 38 Then
Application.EnableEvents = False
If Not IsEmpty(Target.Offset(1)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Dim Tablo, Ctr As Integer, Txt As String, i As Integer
Tablo = Split(Target.Value)
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(1).Value = Right(Txt, Len(Txt) - 1)
Txt = ""
Ctr = Len(Tablo(i))
If Not IsEmpty(Target.Offset(2)) Then
MsgBox "La cellule d'en dessous n'est pas vide"
Application.EnableEvents = True
Exit Sub
End If
Do
If i = UBound(Tablo) Then Exit Do
Txt = Txt & " " & Tablo(i)
i = i + 1
Ctr = Len(Txt) + Len(Tablo(i))
Loop Until Ctr >= 38
Target.Offset(2).Value = Right(Txt, Len(Txt) - 1)
Application.EnableEvents = True
End If
End Sub
--
Cordialement.
Daniel
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2"Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Daniel,
Je ne suis pas très fort sur les macros aussi lorsque j'ai voulu en
créer une
pour y insérer ton texte cela n'a pas fonctionné. Si cela n'est
pas trop long
pourrais-tu m'indiquer la procédure pour insérer ta macro dans
ce que tu
appelles le module de la feuille ? ensuite cette macro fonctionne-t-elle
pourun
fichier déjà saisi ?
Merci pour tout
Éric
Bonjour
Clic droit sur l'onglet de la feuille concernée, clic sur
"Visualiser le
code". Copie la macro dans la partie droite de la fenêtre qui vient
de
s'ouvrir. La macro ne s'applique pas aux cellules déjà saisies.
Si tu en
as peu, clique dedans et appuie sur "Entrée". Si tu en as
beaucoup,
dis-le, je posterai une autre macro.
Daniel
Re,
Cela fonctionne. J'ai même réussi, au joie, à modifier ta macro pour ranger les
infos dans les deux cellules à droite et non en dessous.
Par contre je ne comprends pas pourquoi, pour les infos déjà enregistrées dans
le fichier la deuxième partie est tronquée à 15 pour une première phrase et à 5
pour la suivante alors que lorsque j'entre ma phrase "Ils doivent réaliser le
découpage en deux cellules d'une désignation de plus de 76 caractères" en
copier/coller les coupures se font à 36 caractères pour la 1ère partie et 34
caractères pour la 2ème partie.
J'ai effectivement un fichier d'un millier de lignes. Je pourrais le ranger en
comptant le nombre de caractères des cellules incriminées puis ne couper que
celles dépassant 38 caractères. Toutefois si cela ne t'ennuie pas j'accepte ta
proposition d'une macro pouvant résoudre automatiquement mon problème.
Encore merci de ton aide.
Éric
Re...
Que donne l'exemple joint ??
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:Jacky a écrit le 21/10/2008 à 11h06 :Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Jacky,
J'ai essayé tes macros mais je ne suis pas un pro. Pour l'instant cela
ne
fonctionne pas mais peut-être ai-je effectué une mauvaise manip.
J'ai mis
l'info
"=phrase1(a2)" dans la cellule B2 et "=phrase2(a2)" en C2
mais ne
s'inscrit que
#NOM? dans les cellules
Pour info dans Visual Basic la fonction "If
IsError(Application.Search("
",
Mot)) Then Phrase1 = Left(Mot, 38): Exit Function" apparaissait en rouge
car
Function était à la ligne. Je l'ai rétablie mais toujours
identique quant
au
résultat.
Aurais-tu une idée sur ma mauvaise manip ?
Merci pour ton aide
Éric
Re...
Que donne l'exemple joint ??
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:
Jacky a écrit le 21/10/2008 à 11h06 :
Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:
Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Jacky,
J'ai essayé tes macros mais je ne suis pas un pro. Pour l'instant cela
ne
fonctionne pas mais peut-être ai-je effectué une mauvaise manip.
J'ai mis
l'info
"=phrase1(a2)" dans la cellule B2 et "=phrase2(a2)" en C2
mais ne
s'inscrit que
#NOM? dans les cellules
Pour info dans Visual Basic la fonction "If
IsError(Application.Search("
",
Mot)) Then Phrase1 = Left(Mot, 38): Exit Function" apparaissait en rouge
car
Function était à la ligne. Je l'ai rétablie mais toujours
identique quant
au
résultat.
Aurais-tu une idée sur ma mauvaise manip ?
Merci pour ton aide
Éric
Re...
Que donne l'exemple joint ??
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:Jacky a écrit le 21/10/2008 à 11h06 :Bonjour,
Avec 2 fonctions perso. à insérer dans un module simple
Alt+f11 insertion/module et coller les 2 fonctions
'-------------
Function Phrase1(Mot As String)
Application.Volatile
Mot = Trim(Mot): temp = 38
If Len(Mot) <= 38 Then Phrase1 = Mot: Exit Function
If IsError(Application.Search(" ", Mot)) Then Phrase1 = Left(Mot,
38): Exit
Function
For i = 1 To 38
If Mid(Mot, i, 1) = " " Then temp = i - 1
Phrase1 = Phrase1 & Mid(Mot, i, 1)
Next
If Mid(Mot, 39, 1) <> " " Then Phrase1 = Left(Mot, temp)
End Function
'----------
Function Phrase2(Mot As String)
Application.Volatile
temp2 = 38
temp = Trim(Mid(Mot, Len(Phrase1(Mot)) + 1, Len(Mot)))
If Len(temp) <= 38 Then Phrase2 = temp: Exit Function
For i = 1 To 39
If Mid(temp, i, 1) = " " Then temp2 = i - 1
temp = temp & Mid(temp, i, 1)
Next
temp = Trim(temp)
If Mid(temp, 39, 1) <> " " Then temp = Left(temp, temp2)
Phrase2 = temp
End Function
'---------------
Sur la feuille
La phrase à découper en A2
Pour la première partie de la phrase
=Phrase1(A2)
Pour la deuxième partie de la phrase
=Phrase2(A2)
Voir ici
http://cjoint.com/?kvk7dWZswW
--
Salutations
JJ
"eric-fore" a écrit dans le
message de news:Bonjour,
Je dois créer, sous Excel, à partir d'une cellule comprenant
plus de 38
caractères 2 cellules : la première avec maximum 38
caractères sans couper
les
mots, la deuxième avec le solde, si possible sans espace devant le
premier
mot,
d'un maximum de 38 caractères en excluant les caractères en
surplus.
Exemple d'un texte à découper :
A1 = "Ils doivent réaliser le découpage en deux cellules
d'une désignation
de
plus de 76 caractères"
- Texte 1 doit avoir 38 caractères maximum sans coupure de mots : A2
> "Ils
doivent réaliser le découpage" (= 33 caractères ou
34 si espace en final)
- Texte 2 doit avoir 38 caractères maximum : A3 = "en deux
cellules d'une
désignation de "
Le solde du texte "plus de 76 caractères"
n'apparaîtra
pas mais je n'ai
que la
possibilité de deux cellules de 38 caractères chacune.
Merci de votre aide.
Bonjour Jacky,
J'ai essayé tes macros mais je ne suis pas un pro. Pour l'instant cela
ne
fonctionne pas mais peut-être ai-je effectué une mauvaise manip.
J'ai mis
l'info
"=phrase1(a2)" dans la cellule B2 et "=phrase2(a2)" en C2
mais ne
s'inscrit que
#NOM? dans les cellules
Pour info dans Visual Basic la fonction "If
IsError(Application.Search("
",
Mot)) Then Phrase1 = Left(Mot, 38): Exit Function" apparaissait en rouge
car
Function était à la ligne. Je l'ai rétablie mais toujours
identique quant
au
résultat.
Aurais-tu une idée sur ma mauvaise manip ?
Merci pour ton aide
Éric