Insérer un tiret tous les 3 caractères
Fermé
Carol
-
1 sept. 2011 à 13:28
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 - 1 sept. 2011 à 17:05
ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 - 1 sept. 2011 à 17:05
A voir également:
- Insérer un tiret tous les 3 caractères
- Caractères ascii - Guide
- Insérer une vidéo sur powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Caractères spéciaux clavier azerty - Guide
4 réponses
Voilà à condition que AAAYYYFFFGGGRRR soit en C6 !!!
=GAUCHE(C6;3) & "-" &GAUCHE(DROITE(C6;12);3) & "-" &GAUCHE(DROITE(C6;9);3) & "-" &GAUCHE(DROITE(C6;6);3) & "-" &DROITE(C6;3)
=GAUCHE(C6;3) & "-" &GAUCHE(DROITE(C6;12);3) & "-" &GAUCHE(DROITE(C6;9);3) & "-" &GAUCHE(DROITE(C6;6);3) & "-" &DROITE(C6;3)
cousinhub29
Messages postés
982
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
7 janvier 2025
348
1 sept. 2011 à 14:17
1 sept. 2011 à 14:17
Bonjour,
Par code macro :
(Plage à adapter)
Bonne journée
Par code macro :
(Plage à adapter)
Sub tirets() Dim Cel As Range Dim I As Byte, J As Byte Dim Tblo As Object Set Tblo = CreateObject("Scripting.Dictionary") For Each Cel In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row) J = 1 For I = 1 To Application.RoundUp(Len(Cel) / 3, 0) Tblo(I) = Mid(Cel, J, 3) J = J + 3 Next I Cel.Offset(, 1) = Join(Tblo.Items, "-") Tblo.RemoveAll Next Cel End Sub
Bonne journée
Heremion
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
1 juin 2022
102
1 sept. 2011 à 14:21
1 sept. 2011 à 14:21
Bonjour Carol.
Vite fait, j'ai essayé le code suivant dans une macro. Sur un évènement de bouton, ou sur un évènement de la feuille :
Il y a surement quelques trucs à corriger mais l'idée est là. En espérant que cela t'apporte un peu d'aide...
Vite fait, j'ai essayé le code suivant dans une macro. Sur un évènement de bouton, ou sur un évènement de la feuille :
Dim imax Dim i, j Dim ilongueur_cellule Dim stexte_cellule Dim stexte_resultat imax = Range("A65536").End(xlUp).Row For i = 1 To imax stexte_cellule = Range("A" & i).Value ilongueur_cellule = Len(stexte_cellule) j = 1 If Len(stexte_cellule) < 3 Then stexte_resultat = stexte_cellule Else stexte_resultat = Mid(stexte_cellule, j, 3) Do While j <= ilongueur_cellule If j > 1 Then stexte_resultat = stexte_resultat & "-" & Mid(stexte_cellule, j, 3) End If j = j + 3 Loop stexte_resultat = stexte_resultat & "-" & Mid(stexte_cellule, j, j - ilongueur_cellule) End If Range("B" & i).Value = stexte_resultat Next i
Il y a surement quelques trucs à corriger mais l'idée est là. En espérant que cela t'apporte un peu d'aide...
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
Modifié par ccm81 le 1/09/2011 à 17:13
Modifié par ccm81 le 1/09/2011 à 17:13
bonjour
une autre version avec une fonction à mettre dans un module
Utilisation dans la feuille
si A1 = azertyuiop
B1 =inserecar($A1;"-";3;"g") donne aze-rty-uio-p
C1 =inserecar($A1;"-";3;"d") donne a-zer-tyu-iop
Utilisation via une procedure VBA sur une plage selectionnée
bonne suite
une autre version avec une fonction à mettre dans un module
Option Explicit ' ch = chaine a traiter ' car = caractere de separation ' saut = nb de caracteres entre deux car ' dir = "d" ou "g" on commence par la droite ou la gauche Public Function InsereCar(ByVal ch As String, car As String, saut As Long, dir As String) As String If Len(ch) <= saut Then InsereCar = ch Else If dir = "g" Then InsereCar = Left(ch, saut) & car & InsereCar(Right(ch, Len(ch) - saut), car, saut, dir) Else InsereCar = InsereCar(Left(ch, Len(ch) - saut), car, saut, dir) & car & Right(ch, saut) End If End If End Function
Utilisation dans la feuille
si A1 = azertyuiop
B1 =inserecar($A1;"-";3;"g") donne aze-rty-uio-p
C1 =inserecar($A1;"-";3;"d") donne a-zer-tyu-iop
Utilisation via une procedure VBA sur une plage selectionnée
Dim c As Range For Each c In Selection c.Value = InsereCar(c.Value, "-", 3, "g") Next c
bonne suite