OVH Cloud OVH Cloud

tronquer et recopier

2 réponses
Avatar
CharlesF
Bonjour,

J'ai une liste de données excel de plusieurs colonnes. Une d'entre elles
(disont E) contient une chaîne de caractères allant à plus de 800... dont le
traitement avec Access ne peut se faire étant limiter à 255 caractères.

Ma question : Je désire séparer cette chaine de caractères (longueur
variable d'une ligne à l'autre) en une seule colonne; et faire suivre
(recopier) les colonnes avoisinantes. Les différentes valeurs dans la colonne
E sont séparées par le "-".

Merci à l'avance pour votre aide.
--
CharlesF

2 réponses

Avatar
michdenis
Bonjour Charles,

Je n'ai pas vraiment compris ce que tu souhaites faire, mais si tu désires séparer (répartir) ta chaîne de caractères sur plusieurs
colonnes en prenant "-" comme critère pour diviser ces chaînes de caractères :

Sélectionne ta colonne E
Barre des menus / Données / convertir /
Fenêtre 1 : délimité
Fenetre 2 : Tu insères - dans la case autre
Terminer.


Salutations!



"CharlesF" a écrit dans le message de news:
Bonjour,

J'ai une liste de données excel de plusieurs colonnes. Une d'entre elles
(disont E) contient une chaîne de caractères allant à plus de 800... dont le
traitement avec Access ne peut se faire étant limiter à 255 caractères.

Ma question : Je désire séparer cette chaine de caractères (longueur
variable d'une ligne à l'autre) en une seule colonne; et faire suivre
(recopier) les colonnes avoisinantes. Les différentes valeurs dans la colonne
E sont séparées par le "-".

Merci à l'avance pour votre aide.
--
CharlesF
Avatar
docm
Bonjour.

Si j'ai bien compris... voilà qui répartit la valeur trop longue de la
colonne E dans les lignes suivantes.

Sub tt2()
memf1 = ActiveSheet.Name
Sheets.Add
memf2 = ActiveSheet.Name
Sheets(memf1).Select
ColonneTroplongue = 5

fin = [A65536].End(xlUp).Row
ligneDest = 1
For i = 1 To fin
Sheets(memf1).Rows(i & ":" & i).Copy Sheets(memf2).Cells(ligneDest, 1)
memlong = Sheets(memf2).Cells(ligneDest, ColonneTroplongue)

If Len(Sheets(memf2).Cells(ligneDest, ColonneTroplongue)) > 255 Then

c = ""
a = Sheets(memf2).Cells(ligneDest, ColonneTroplongue)

While Len(a) > 255
c = Mid(a, 1, 255)
m = ""
While Right(c, 1) <> "-"
m = Right(c, 1) & m
c = Mid(c, 1, Len(c) - 1)
Wend
Sheets(memf2).Cells(ligneDest, ColonneTroplongue) = c
ligneDest = ligneDest + 1
a = m & Mid(a, 256)
Wend

If a <> "" Then
Sheets(memf2).Cells(ligneDest, ColonneTroplongue) = a
a = ""
Else
ligneDest = ligneDest - 1
End If

End If
ligneDest = ligneDest + 1

Next
Sheets(memf2).Select
End Sub

docm


"CharlesF" a écrit dans le message news:

Bonjour,

J'ai une liste de données excel de plusieurs colonnes. Une d'entre elles
(disont E) contient une chaîne de caractères allant à plus de 800... dont
le

traitement avec Access ne peut se faire étant limiter à 255 caractères.

Ma question : Je désire séparer cette chaine de caractères (longueur
variable d'une ligne à l'autre) en une seule colonne; et faire suivre
(recopier) les colonnes avoisinantes. Les différentes valeurs dans la
colonne

E sont séparées par le "-".

Merci à l'avance pour votre aide.
--
CharlesF