Changement de cellule après x caractères

Résolu
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -  
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aurais aimé savoir si dans VBA il était possible de faire un petit programme qui change de cellule automatiquement après avoir tapé 3 caractères dans la cellule plutôt que de devoir taper sur tabulation.

Du genre
Je suis en A1, je tape 7 "azertyuiop" je trouve :
en A1 : aze
en B1 : rty
en C1 : uio
en D1 : p

Dans le même esprit, je voudrais savoir si après avoir remplis 5 cellules (avec 3 caractères chacune) il est possible de se retrouver sur la ligne en dessous et de reprendre le même cycle.

Pour reprendre mon exemple, après avoir tapé mon "azertyuiop", je tape "qsdfghjkl" j'ai donc
en D1 : pqs
en A2 : dfg
en B2 : hjk
en C2 : l

Est-il possible de faire ça simplement ? Sur plusieurs plages différentes sur une feuille ?

Merci d'avance.
A voir également:

1 réponse

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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)

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
0
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
 
Bonjour Michel,

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 ?)
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Villette54,

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...
0
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
 
Huuum.

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.
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Le lien entre les deux sujets ? La macro de pikaju qui utilise la longueur du champ saisi dans la textbox
Du coup tu n'inscris que des triplets dans une textbox et la feuille se remplit avec ces triplets.
0