Comment imposer le nombre de caractères saisis dans une grille de données ?

  • Initiateur de la discussion Mécano
  • Date de début
M

Mécano

Guest
Bonsoir le forum

Je voudrais savoir si il est possible (et si oui comment ;-) obtenir le résultat suivant à partir d'une grille de données (lancée par un ShowDataForm):

Quel que soit le nombre de caractères saisis, je voudrais avoir 8 caractères dans mes cellules, les "au dela de huitième" seraient purement et simplement ignorées, et si "moins de huit", combler la cellule avec des espaces (ou des points si espace impossible).

Cerise sur le gâteau : est il possible que tout cela soit automatisé sans message d'alerte ou autre interruption de la saisie?

je suis allé voir tous les anciens messages concernant "grille de données" ou "dataform" mais rien ne me concerne.

Merci beaucoup et bonne nuit
 
C

chris

Guest
Bonjour
Directement non.
Une piste simple pour biaiser
Tu peux créer une colonne qui reprend les 8 caractères de l'autre (fonction gauche).
Tu masques si nécessaire la colonne source.
Avant d'afficher avec ShowDataForm, tu démasques la colonne et tu masuqes celle qui tronque (ainsi la grille se construit sur les champs à saisir) et après fermeture de la grille tu remets les masquages (que tu peux stocker dans une vue personnalisée).
Sinon tu ne peux pas utiliser la grille et il faut programmer une boîte de dialogue pour la saisie.
CHris
 
D

Dop421

Guest
je ne sais pas ce qu'est une grille de donnée ( ? ) mais j'ai programmer exactement ce que tu décrit. La seule différence etant que c'est avec 15 caractères et pas 8
j'utilise la fonction len(string) qui compte le nombre de caractère d'un string.
'-----------------------------------------------------------------------------------------------
dim strIdproto as string
'## si moins, rajoute des espaces jusqu'a 15 caractères
strIdProto = InputBox("Nom du nouveau protocole", "Entrez le nom en 15 lettres maximum")
If Len(strIdProto) < 15 Then
Do Until Len(strIdProto) = 15
strIdProto = strIdProto + " "
Loop
'## si + de 15 caractères
ElseIf Len(strIdProto) > 15 Then
strIdProto = vba.left(strIdproto,15)
End If
'-----------------------------------------------------------------------------------------------

voila ... j'espere que ta grille de donnée sera contente ;-)
 
J

Jon

Guest
mécano,


soit tu utilises ta propre grille ( je crois que c'est "john walhenbach", un américain, qui en a programmé une pour remplacer la grille intégrée d'excel.
peut-êre peux-tu la retrouver et la modifier pour tenir compte de longueurs)


soit tu bidouilles en créant :
- une première grille de saisie masquée aux yeux de l'utilisateur
- une seconde crée par formules
- une mise à jour par macro
=> cf pièce jointe
 

Pièces jointes

  • Classeur1.zip
    6.8 KB · Affichages: 85
  • Classeur1.zip
    6.8 KB · Affichages: 92
  • Classeur1.zip
    6.8 KB · Affichages: 90
M

Mécano

Guest
Bonsoir chris, dop, jon, et le forum.

Super sympa d'avoir répondu, et avec des arguments qui vont à coup sur correspondre à ce que je recherche.

Seul bémol, je pinaille depuis un moment pour adapter vos solutions à mon fichier, mais étant archi-nul en vba (ouvrier mécanicien oblige ;-) je me noie sous les messages d'erreur.

Je vais gratter encore tant que je peux, et dès que je toucherai le fond, je mettrai un fichier exemple sur le même fil.

Encore merci et bonne continuation.

Mécano.
 

Statistiques des forums

Discussions
314 198
Messages
2 107 051
Membres
109 743
dernier inscrit
TROMBATI