Changement de cellule après x caractères
Résolu/Fermé
Villette54
Messages postés
300
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
31 juillet 2018
-
4 sept. 2013 à 16:44
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 5 sept. 2013 à 11:49
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 5 sept. 2013 à 11:49
A voir également:
- Changement de cellule après x caractères
- Caractères ascii - Guide
- Changer de dns - Guide
- Caractères spéciaux clavier azerty - Guide
- Excel cellule couleur si condition texte - Guide
- Changement d'écriture - Guide
1 réponse
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 4/09/2013 à 18:28
Modifié par michel_m le 4/09/2013 à 18:28
Binjour,
Est-il possible de faire ça? oui
Simplement ? bof!
le point noir est la longueur avec un reste de la division par X
le code à adapter à ton contexte
segment représente la longueur de X (3 actuellement mais possible de changer)
la maquette de W
https://www.cjoint.com/?3Iesk2AwUwh
dans l'attente de ta réaction
Michel
Est-il possible de faire ça? oui
Simplement ? bof!
le point noir est la longueur avec un reste de la division par X
le code à adapter à ton contexte
segment représente la longueur de X (3 actuellement mais possible de changer)
Option Explicit Sub test() découpertexteparX 3 End Sub '------------------------------------------- Sub découpertexteparX(segment) Dim F As Byte, Fin As Byte, Lig As Byte, Concat As String Dim Nbre As Byte, cptr As Byte, T_dec() Fin = Columns("A").Find("*", , , , , xlPrevious).Row For Lig = 1 To Fin Concat = Concat & Cells(Lig, "A") Next Nbre = Int(Len(Concat) / segment) If Len(Concat) Mod segment <> 0 Then Nbre = Nbre + 1 ReDim T_dec(1 To Nbre) For cptr = 1 To UBound(T_dec) T_dec(cptr) = Left(Concat, segment) If cptr = UBound(T_dec) Then T_dec(cptr) = Concat Else Concat = Right(Concat, Len(Concat) - segment) End If Next Range("B1").Resize(1, UBound(T_dec)) = T_dec End Sub
la maquette de W
https://www.cjoint.com/?3Iesk2AwUwh
dans l'attente de ta réaction
Michel
5 sept. 2013 à 10:20
Merci pour ta réponse,
Cependant, malgré de multiple essai je ne comprend pas ta macro (je suis débutant en VBA) et ne parvient pas à l'utiliser.
Peut-être que j'ai mal formulé ma demande.
Pour plus de précision, je souhaitais appliquer ça à un tableau ou j'ai un nombre incalculable de valeur à 3 chiffres à saisir.
Du coup je dois : taper 3 chiffres, appuyer sur tab, taper 3 chiffres, appuyer sur tab, ..., taper 3 chiffres appuyer sur entrée, et recommencer...
Le soucis est de devoir vérifier à chaque fois à l'écran ou j'en suis sur la ligne.
C'est pourquoi j'aurais aimer que le "changement de cellule" se fasse automatiquement.
(Peut-être qu'un extrait du fichier t'aiderais à mieux comprendre ?)
5 sept. 2013 à 11:05
Si tu peux faire ta saisie dans une Textbox, inspire-toi peut-être de :
https://forums.commentcamarche.net/forum/affich-28617073-fonction-regexp-sous-vba#p28636205
Avec la macro Textbox_Change, tu devrais pouvoir vider le champ de la Textbox dès que tu as rédigé 3 caractères et lancer l'écriture dans la bonne cellule.
Oh, tiens, c'était en réponse à une question que tu posais...
5 sept. 2013 à 11:33
Merci, mais passer par une textbox n'est pas la meilleure solution pour moi.
De plus, je ne vois pas très bien le lien entre les deux sujets ?
L'autre je cherchais à conditionner une textbox pour n'y saisir qu'un format date.
Ici je cherche simplement à conditionner une cellule, pour qu'elle détecte automatiquement que 3 caractères ont été saisis, et que du coup elle passe à la cellule suivante pour que je puisse continuer à taper.
5 sept. 2013 à 11:49
Du coup tu n'inscris que des triplets dans une textbox et la feuille se remplit avec ces triplets.