Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2011, 21h02   #1
Invité de passage
 
Hugo
Contrôleur de gestion
Inscription : octobre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Hugo
Localisation : France

Informations professionnelles :
Activité : Contrôleur de gestion
Secteur : Service public

Informations forums :
Inscription : octobre 2011
Messages : 6
Points : 3
Points : 3
Par défaut Autorisation caractères multiples

Bonjour,

Je suis novice en VBA et je dois créer un petit programme. Dans ce programme j'ai inséré des textbox et des boutons.
J'aurais souhaité pouvoir contrôler le format des caractères inscrits dans la textbox lorsque je clique sur un bouton. Les caractères autorisés doivent être seulement des lettres en majuscules ou des chiffres et le nombre de caractère maximum doit être de 8.
Je suis coincé sur cette problématique, j'arrive à contrôler le nombre de caractère mais par leur format majuscule ou numérique.
Je pensais faire quelque chose du genre :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
'On définit les caractères autorisés
caractere = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
 
' On vérifie le nombre de caractères de la chaîne
If Len(Box_Immo.Value) > 8 Then
    MsgBox ("Votre Code Immobilisation ne doit pas dépasser 8 caractères")
End If
 
'On vérifie que les caractère de la box
For i = 1 To Len(Box_Immo)
 If Box_Immo.Value = Mid(caractere, i, 1) <> 0 Then
        MsgBox ("Votre Code Immobilisation ne doit pas comporter d'espaces")
    End If
Next i
Cela ne fonctionne malheureusement pas...
J'ai cherché et testé pas mal de fonction et malheureusement je ne dispose pas de beaucoup de temps pour bosser dessus...
Si vous avez des idées ?
Merci !
gogo850 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 21h09   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 232
Points : 7 232
Bonjour,

En utilisant l'évenement Keypress de la textbox, tu test le code ascii du caractère saisit
Code :
1
2
3
4
5
6
7
8
9
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
    Case 65 To 90
        'Caractère ok
    Case Else
        KeyAscii = 0
End Select
 
End Sub
Il te reste a adapter pour les chiffres
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 21h13   #3
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 
If Len(TextBox1) = 8 Then
    KeyAscii = 0
Else
    Select Case KeyAscii
        Case 48 To 57, 65 To 90
        Case 97 To 122: KeyAscii = KeyAscii - 32
        Case Else: KeyAscii = 0
    End Select
End If
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2011, 21h39   #4
Invité de passage
 
Hugo
Contrôleur de gestion
Inscription : octobre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Hugo
Localisation : France

Informations professionnelles :
Activité : Contrôleur de gestion
Secteur : Service public

Informations forums :
Inscription : octobre 2011
Messages : 6
Points : 3
Points : 3
Merci de ta réponse !

Mais est-il vraiment nécessaire d'utiliser KeyAscii ?

J'aurais souhaité quelque chose d'assez simple, c'est un boulot que nous demande notre prof et nous sommes tous débutants en programmation, je pensais faire cela avec des fonctions que je connaissais, genre "Len", "Instr" ou "Chr" mais je suis un peu perdu avec toutes ces fonctions...

Je souhaite pourvoir faire quelques choses en définissant mes caractères que j'autorise et ensuite lorsque j'analyse les valeurs des données entrées dans la textbox, il m'affiche une msgbox en cas de caractère n'appartenant pas à la chaine de caractère autorisée comme quoi il y a une "erreur".
Suis-je compréhensible ?

Merci en tout cas pour l'aide, ce qui est chiant c'est que je ne peux pas tester à présent vos formules puisque je tourne sur mac et que le VBA mac n'accepte pas activeX...
gogo850 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 21h53   #5
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 919
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 919
Points : 7 232
Points : 7 232
Dans cas remplace la dernière partie de ton code.
Tu n’étais pas très loin
Code :
1
2
3
4
5
For i = 1 To Len(Box_Immo)
    If InStr(Caracteres, Mid(Box_Immo.Text, i, 1)) = 0 Then
            MsgBox ("Votre Code Immobilisation ne doit pas comporter d'espaces")
    End If
Next i
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 21h58   #6
Invité de passage
 
Hugo
Contrôleur de gestion
Inscription : octobre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Hugo
Localisation : France

Informations professionnelles :
Activité : Contrôleur de gestion
Secteur : Service public

Informations forums :
Inscription : octobre 2011
Messages : 6
Points : 3
Points : 3
Merci pour ton aide !

Je teste cela demain et je te dirais si cela convient à mon attente.
D'ailleurs le message que j'ai mis dans ma dernière Msgbox ("Votre Code Immobilisation ne doit pas comporter d'espaces") est erroné.
Je vais faire afficher un message du style "votre code immobilisation doit être écrit en majuscule et doit être composé seulement de lettres ou de chiffres"

En tout cas merci encore, parce que VBA quand on début on y passe (et perd) énormément de temps, même si cela reste très intéressant pour quelqu'un qui utilise habituellement les fonctions basiques d'Excel !

Bonne soirée !
gogo850 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 10h12   #7
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Si ça peut t'être utile, vois l"approche de ce tutoriel :

http://didier-gonard.developpez.com/...e-dans-texbox/

Cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h55.


 
 
 
 
Partenaires

Hébergement Web