Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Masque de saisie

  • Initiateur de la discussion Michel Borduas
  • Date de début
M

Michel Borduas

Guest
Bonjour!

Je voudrais savoir comment donner à une cellule le format d'un masque de saisie correspondant au format canadien pour les codes postaux (Ex: G6F 7R8). J'ai tout essayé en utilisant la fonction "Personnalisée" mais je n'y arrive pas.

Merci!
M. Borduas.
 
A

andré

Guest
Salut Michel,

Je crains qu'il n'y a pas moyen, XL considérant ce code comme étant du texte !
Une solution qui te reste est la macro évenementielle.

Ândré.
 
A

andré

Guest
Salut Michel,

Le VBA n'est pas ma tasse de thé !

Si je sais ce qu'il y a moyen de faire, le faire est autre chose.

J'avais cru qu'un des "gros bras" du VBA serait déjà venu à ton secours, mais c'est le week-end, ... et le début de vacances.

Comme d'ici quelques mois j'ai décidé de ne plus travailler qu'à mi-temps (pas plus de huit heures par jour), j'ai pris la ferme résolution de m'attaquer au VBA.

Donc, si tu n'es pas dépanné entre-temps, fais-moi confiance, je te donnerai la solution, mais tu devras avoir un peu de patience (lol).

Sur ces bonnes paroles, je te souhaite une bonne fin de week-end.
Ândré.
 
M

Michel Borduas

Guest
Merci pour ton soutient André... c'est très apprécié! Malheureusement, aucun "gros bras" du VBA n'a répondu à ma requête. Je reviendrai donc consulter le Forum afin de suivre l'évolution du sujet. Entre-temps, j'ai essayé diverses façons d'y arriver, mais toujours sans succès
Bon week-end à toi également,
Michel.
 
C

chris

Guest
Bonjour
Une demie solution :
pas de masque mais refus de toute suite ne correspondant pas à
1 lettre, 1 chiffre, 1 lettre, 1 espace, 1 chiffre, 1 lettre, 1 chiffre.

1. Sélectionner la première cellule contenant le code postal et la nommer CP en ayant une référence de type
Feuil1!$C1

($ pour colonne pas pour ligne)

2. sélectionner le colonne de codes puis données validation :
mettre personnalisé et la formule suivante :
=ET(NON(ESTERREUR(CNUM(STXT(cp;2;1))));NON(ESTERREUR(CNUM(STXT(cp;5;1))));NON(ESTERREUR(CNUM(STXT(cp;7;1))));ESTERREUR(CNUM(STXT(cp;1;1)));ESTERREUR(CNUM(STXT(cp;3;1)));ESTERREUR(CNUM(STXT(cp;6;1)));STXT(cp;4;1)=" ")

A adapter et peut-être simplifier.

Chris
 
@

@+Thierry

Guest
Re: DEMO UserForm Masque de saisie avec Contrôle Type de Données

Bonjour Michel, Chris, Ândré, le Forum

Comme Ândré risque de travailler à mi-temps bientôt, je vais pouvoir aller boire quelques bonnes Duvels avec lui plus souvent alors !

En fait, moi, en "Masque de Saisie" je comprend immédiatement UserForm... D'aileurs avec Vériland l'autre jour je me suis marré en me dénommant "@+Thierry The UserForum" lol

Donc ci-joint une autre approche automatisée en VBA et comme le préconisait très justement Ândré, j'utilise une macro évènementielle... (Voir dans VBE (Visual Basic Editor) le Private Module de la Feuille (on peut passer par Excel => click droit sur l'onglet de feuille et "Visualiser le Code)...

Ensuite c'est un UserForm de Saisie qui prend la main, il est bourré (pas de Duvel lol) mais de contrôles afin d'avoir la certitude de n'envoyer que des données formatées en Code Postal Canadien (en partant du même principe que Chris "1 lettre, 1 chiffre, 1 lettre, 1 espace, 1 chiffre, 1 lettre, 1 chiffre"...

Voilà, je ne sais pas si ce sera une solution acceptable pour toi Michel, mais c'est une autre façon de voir le problème.

Bon Dimanche
@+Thierry
 

Pièces jointes

  • USF_Mask_Canadian_PostalCode.zip
    14.4 KB · Affichages: 58
A

andré

Guest
Re: DEMO UserForm Masque de saisie avec Contrôle Type de Données

Salut @+Thierry et les autres,

En vitesse, pour bien commencer la journée ... et la semaine.

Le Userform ne s'ouvre pas sur Windows XP Familiale et Office 2003, bien sur Windows XP Pro et Office 2000.
Un problème chez moi, ou dans la macro ?

Par masque de saisie je comprenais simplement une mise en forme automatique, comme pour le séparateur des milliers : # ##0.00.
Introduire dans la cellule les six caractères à la suite, placement automatique d'un espace après le troisème caractère et message d'erreur si le nombre de caractères est différent de 6 (7 avec l'espace)
Je ne vois pas l'utilité de vérifier (bien que cela soit un plus) si les chiffres et les lettres sont placées dans le bon orde, puisqu'il n'est pas possible de vérifier s'il n'y a pas de faute de frappe (un 4 au lieu d'un 5 par exemple).
Le placement de l'espace peut se faire par macro évenementielle, le message d'erreur par le menu Validation, le tout sans Userform (que je considère toujours comme du gadget).

A ce propos il me vient une petite idée (saugrenue ?)
Il y aurait-il moyen d'écrire une macro évenementielle qui teste si le format de la cellule est un format horaire, et dans l'affirmative placerait automatiquement le : (double point).
Exemple : je tapes 805 ou 0805 dans une cellule en format horaire (h:mm ou hh:mm) et j'obtiens 8:05 ou 08:05.
Actuellement on obtient 15.03.1902 00:00:00 dans la barre de formule et 00:00 dans la cellule.
Cela fonctionne avec le format personnalisé 00":"00, mais ce n'est pas un format horaire (exemple : 08:21 + 10:52 = 18:73).

Quant à la petite collation proposée (on n'en boit pas, on s'en nourrit !), toujours disposé à te rencontrer à ton prochain passage à Bruxelles (ceci vaut aussi pour tous les autres), quant à mon prochain passage à Monaco, il faudra au moins attendre le printemps prochain.

Ândré.
 
@

@+Thierry

Guest
Re: DEMO UserForm Masque de saisie avec Contrôle Type de Données

Bonjour Ândré, Chris, Michel, le Forum

Ah Office 2003 et XP Home n'accepte pas ... Alors que Win PRO et Office 2000 passe... Difficile de tester je n'ai pas ton premier mariage... Je ne pense pas que çà proviennt de l'OS mais d'Excel 2003... que je n'ai pas sous la main... Userform réalisé sous 2000...

Pourtant il n'y a rien la dedans, 6 malheureuses TextBox et c'est tout... Une variable String Publique et ce genre de codes :

Module Standard:
Public TheCode As String

Evènementielle:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A2:A24")) Is Nothing Then
TheCode = ""
UserForm1.Show
Target.Value = TheCode
End If
End Sub

Userform:
Private Sub TextBox1_Change() 'ALPHA
Dim i As Byte
If Len(Me.TextBox1) <> 1 Then GoTo Out:
Me.TextBox1 = UCase(Me.TextBox1)
For i = 65 To 90
If Left(Me.TextBox1, 1) = CStr(Chr(i)) Then
Me.TextBox2.SetFocus
Exit Sub
End If
Next
Out:
With Me.TextBox1
.Value = ""
.SetFocus
End With
End Sub


Private Sub TextBox2_Change() 'NUMERIC
Dim i As Byte
If Len(Me.TextBox2) <> 1 Then GoTo Out:
For i = 48 To 57
If Left(Me.TextBox2, 1) = CInt(Chr(i)) Then
Me.TextBox3.SetFocus
Exit Sub
End If
Next
Out:
With Me.TextBox2
.Value = ""
.SetFocus
End With
End Sub

Je ne vois pas, pourtant je ne bois pas le matin !! lol !!!

Bon on verra si quelqu'un peut nous confirmer la même chose sous Office 2003...On lui offrira une Duvel aussi !

Bonne Semaine
@+Thierry
 
P

petchy

Guest
bonjour à tous

je travaille avec Windows XP pro et Office 2003.
quand je click sur une cellule l'USF s'ouvre,et je peut saisir le code postal.

@ plus
petchy
 
@

@+Thierry

Guest
Bonsoir Ândré, Chris, Michel, Petchy, le Forum

Merci Petchy pour ce test... Donc Ândré a mis trop de Duvel dans le Lecteur de DuVelD....... oups DVD !!! lol

Non je blague. c'est Bizarre........... Bizarre ? vous avez dit Bizarre.........
Comme c'est Bizarre.......

@+Thierry
 

Discussions similaires

Réponses
3
Affichages
315
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…