Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Découper des chaînes de caractère

  • Initiateur de la discussion Initiateur de la discussion m@di
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

m@di

Guest
Bonjour !

Dans la colonne A j'ai des chaînes de 5 caractères qu'il faudrait que je découpe en 2 et 3. J'ai pensé utiliser pour cela les formules DROITE et GAUCHE. Mon problème est le suivant : il faut que les 3 derniers caractères se positionnent en dessous. Il faudrait dans le même temps que les colonnes B et C se copient.

exemple
avant
A1: V0109 B1: XXX C1: YYYY
après
A1: V0 B1: XXX C1: YYYY
A2: 109 B1: XXX C1: YYYY

Quelqu'un peut m'aider ?! merci !
 
Salut,

Si tu veux que cela se fasse sur la même feuille, en créant des lignes supplémentaires, il faut necessairement passer par une macro.
Par contre, si c'est sur une autre feuille, une solution par formules est envisageable.

Pour la deuxième solution, je puis t'aider, pas pour la première.
Voudrais-tu le préciser et, le cas échéant, indiquer s'il y a plusieurs lignes avec un nombre de caractères identique à dissocier ?

Ândré.
 
Il est envisageable de passer sur une autre feuille !! Je n'ai pas de préférence là dessus.
Pour préciser ma question il y a 800 lignes de 5 caractères (sauf pour les 4 premières lignes)

Comme c'était urgent, j'ai réussi à me débrouiller, mais c'est système D et comme j'aurais certainement à le refaire bientôt je suis à la recherche d'une méthode plus propre !


Pour l'instant j'ai inséré des lignes avec une macro(que j'ai péniblement écrite), j'ai découpé les chaînes de caractères grâce aux formules DROITE et GAUCHE et j'ai copié les informations de la colonne B (pour que B1 se copie dans B2, B3 dans B4 etc) en la copiant d'abord dans D, puis décalage manuel d'une ligne, et CONCATENER B et D. Pour avoir un doc propre j'ai copié les valeurs obtenues dans une nouvelle feuille .. tordu hein !?! 😉

En espérant qur c'est assez clair !
 
Resalut,

Vois si l'exemple joint répond à ta demande.
Les formules peuvent être recopiées (par ensemble de deux lignes).

Pour les cinq premières lignes, il faudrait les voir pour chercher une solution, par exemple en cherchant l'espace entre les deux premières chaines.

Ândré.
 

Pièces jointes

Salut
Au niveau des macros, si tu n'est pas obligé d'utilié une seule feuille voici un exemple

Sub machin
dim m_cell as range

dim m_deb_A as string
dim m_fin_A as string
dim m_val_B as string
dim m_val_C as string
dim i as long
'si tu as déja plusieur feuille et pour un sousi de facilité de débugage :
dim m_fls1 as string 'variable contenant le nom de ta feuille 1
dim m_fls2 as string 'variable contenant le nom de ta feuille 2

'si tu n'as pas plusieur feuille ou tu veux en rajouter une :
'worksheet.add
i=0
m_fls1=sheet("nomdefeuille1").name
m_fls2=sheet("nomdefeuille2").name

sheets(m_fls1).select
'selection de la plage de référence
range("A1").select
activecell.end(xldown).select
range("A1",activecell.address).select

for each m_cell in Selection
sheets(m_fls1).select
m_deb_A=left(m_cell.value,3) ' si ta chaine comporte 6 caractère
m_fin_A=right(m_cell.value,3)
m_val_B=m_cell.offset(0,1).value
m_val_C=m_cell.offset(0,2).value
sheets(m_fls2).select
range("A1").offset(i,0).select
activecell.value=m_deb_A
range("B1").offset(i,0).select
activecell.value=m_fin_A
range("C1").offset(i,0).select
activecell.value=m_val_B
range("D1").offset(i,0).select
activecell.value=m_val_C
i=i+1
next
end sub

Bon courage..
Wilfried
 
Bonjour Wilfried,

Je ne dois vraiment pas être douée mais je n'arrive pas à executer ta macro 🙁 il me signal des bugs là où il y a "m_fls1" !!

Mais comme la solution par formule fonctionne ce n'est pas très grave si tu n'as pas le temps de m'expliquer ! 😉

bonne journée 🙂
 
salut madi

Question: As tu remplacée le terme nomdefeuille1 par le nom de la feuille contenant tes chaines de caractère ?

m_fls1=sheet("nomdefeuille1").name

Essaye plutôt :
m_fls1="nomdefeuille1"
m_fls2="nomdefeuille2"

ou nomdefeuille1 et 2 sont les noms de tes deux feuilles 1 pour la source et 2 pour la destination

Si tu veux d'autre explication n'hésite pas.

Wilfried
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
1 K
Réponses
1
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…