Insérer des ; dans une liste de caractère
Fermé
vinceCS
Messages postés
1
Date d'inscription
mercredi 1 décembre 2010
Statut
Membre
Dernière intervention
1 décembre 2010
-
Modifié par vinceCS le 1/12/2010 à 12:04
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 1 déc. 2010 à 22:38
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 1 déc. 2010 à 22:38
A voir également:
- Insérer des ; dans une liste de caractère
- Liste déroulante excel - Guide
- Caractère ascii - Guide
- Insérer une vidéo dans powerpoint - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
4 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
1 déc. 2010 à 13:45
1 déc. 2010 à 13:45
Bonjour,
dans un module :
eric
dans un module :
Function sep2(s As String) As String Dim i As Long For i = Len(s) - 2 To 1 Step -2 s = Left(s, i) & ";" & Mid(s, i + 1) Next i sep2 = s End Function
eric
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
245
1 déc. 2010 à 13:50
1 déc. 2010 à 13:50
Bonjour,
J'ai décomposé le problème en 4 étapes:
- découpage par paires (stxt)
-concatener des paires avec un ; intermédiaire
-supression des ; en double (substitue)
-ajoute le dernier ; si manquant
http://www.cijoint.fr/cj201012/cij2y5KHqP.xls
J'ai décomposé le problème en 4 étapes:
- découpage par paires (stxt)
-concatener des paires avec un ; intermédiaire
-supression des ; en double (substitue)
-ajoute le dernier ; si manquant
http://www.cijoint.fr/cj201012/cij2y5KHqP.xls
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
1 déc. 2010 à 16:12
1 déc. 2010 à 16:12
bonjour
une autre ...
dans ton pb
RQ1. les cellules contiennent des chaines de caracteres
RQ2. les chaines de caracteres sont de longueurs paires (ce n'est pa verifie)
bonne suite
une autre ...
Private Sub CommandButton1_Click() Dim c As Range For Each c In Selection c.Value = inserepv(c.Value) Next c End Sub Function inserepv(ByVal s As String) As String If Len(s) = 2 Then inserepv = s Else inserepv = Left(s, 2) & ";" & inserepv(Right(s, Len(s) - 2)) End If End Function
dans ton pb
RQ1. les cellules contiennent des chaines de caracteres
RQ2. les chaines de caracteres sont de longueurs paires (ce n'est pa verifie)
bonne suite
Ton exemple d'énoncé est incorrect (nombre impair de car).
Voici la solution.
F11 éditeur VBA, ajouter module, dedans du colles ça
Public Function DeuxParDeux(Cel As Range) As String
Dim S As String
Dim S2 As String
Dim i As Integer
Dim Ct As Integer
S = CStr(Cel)
If Len(S) / 2 = Len(S) \ 2 Then
'Delete possible blanks
S = Replace(S, " ", "")
S = Replace(S, ";", "")
For i = 1 To Len(S)
S2 = S2 & Mid$(S, i, 1)
Ct = Ct + 1
If Ct = 2 Then
Ct = 0
S2 = S2 & ";"
End If
Next i
DeuxParDeux = S2
Else
DeuxParDeux = "IMPAIR !"
End If
End Function
Puis tu fais dans une colonne =deuxpardeux(colonnenonséprarée)
si le nombre de car est impair, il retourne impair.
TRES vite fait sur le gaz, signale-moi si tu vois un bug.
Oki ?
Voici la solution.
F11 éditeur VBA, ajouter module, dedans du colles ça
Public Function DeuxParDeux(Cel As Range) As String
Dim S As String
Dim S2 As String
Dim i As Integer
Dim Ct As Integer
S = CStr(Cel)
If Len(S) / 2 = Len(S) \ 2 Then
'Delete possible blanks
S = Replace(S, " ", "")
S = Replace(S, ";", "")
For i = 1 To Len(S)
S2 = S2 & Mid$(S, i, 1)
Ct = Ct + 1
If Ct = 2 Then
Ct = 0
S2 = S2 & ";"
End If
Next i
DeuxParDeux = S2
Else
DeuxParDeux = "IMPAIR !"
End If
End Function
Puis tu fais dans une colonne =deuxpardeux(colonnenonséprarée)
si le nombre de car est impair, il retourne impair.
TRES vite fait sur le gaz, signale-moi si tu vois un bug.
Oki ?
1 déc. 2010 à 19:30
- ne gère pas le terminateur ;
- ne gère pas les anomalies (impair)
1 déc. 2010 à 19:39
- ne gère pas le terminateur ;
Bonne remarque, je n'avais pas vu.
remplacer sep2 = s par sep2 = s & ";"
- ne gère pas les anomalies (impair)
Pas demandé, les données sont sensées être correctes pour moi
eric
1 déc. 2010 à 19:50
Et c'est en testant ma fonction que j'ai remarqué que l'énoncé ne correspondait pas à la question.
Il semble qu'on était tout un peloton sur le coup ? C'est un peu con...
On ne pourrait pas prévoir quelque chose du genre un post "JE PRENDS..." à éditer dans la 1/2h ? Parce que là ça fait un peu débauche même si en finale, j'ai comme l'impression qu'il n'y a que deux solutions sur quatre qui fonctionnent.dans le cas général. Mais je vais arrêter de critiquer sinon je vais me faire manger tout cru.
La palme de l'artisanat (no pun intended) revient à ccm81 qui réussit à trouver une solution garantie 100% sans produits dopants de type VBA. :D Par contre, impossible de prédire la longueur de la chaine initiale.
Bonne soirée,
1 déc. 2010 à 20:53
RQ1. comme eriic pas vu le ; final d'où la modif ..
Function inserepv(ByVal s As String) As String
If Len(s) = 2 Then
inserepv = s & ";"
Else
inserepv = Left(s, 2) & ";" & inserepv(Right(s, Len(s) - 2))
End If
End Function
RQ2. pourquoi se contenter de gerer les espaces et pas les eventuelles erreurs de frappes (+,-,*,/, sont si près geographiquement du pavé numérique )
RQ3. que veux tu dire par
Par contre, impossible de prédire la longueur de la chaine initiale.
cordialement
1 déc. 2010 à 21:08
Pourquoi les "blanks' c'est à dire pas uniquement les espaces, mais aussi les ; Tout simplement parce que les données sont plus susceptibles d'être polluées (copies, manips) par ces caractères. Le mieux aurait été en fait de ne permettre QUE les car de 0 à 9 qui suffisent pour noter les départements.