Créer message d'erreur VBA : nombre de caractère


#1

Bonjour,

Dans le cadre de nos études, nous avons un projet informatique où l’objectif est de créer un programme Excel avec des macros et savoir utiliser VBA.

Nous souhaiterions créer un message d’erreur pour une colonne spécifique de notre fichier : cette colonne contient des numéros clients, chaque numéro contient 10 chiffres. Nous aimerions que le message apparaisse lorsque la personne écrit un numéro client qui ne contient pas 10 chiffres (du à une erreur de frappe de sa part par exemple). Ce message s’afficherait uniquement lorsque cette personne entre le numéro client et le valide (touche espace).

Auriez-vous une idée de comment cela peut se faire ?

Cordialement.


#2

Bonjour,
Avez commencez a rediger le code en question?
Si oui collez le puis expliquez ou vous coincés.

Il faut une macro VBA qui se declenche toute seule, c’est la programmation evenementielle.

Le code doit etre logé dans la feuille a surveiller comme suit :
1- Clic droit sur l’onglet -> Visualiser le code
1

2-Dans l’interface, choisir “Worksheet” puis en face l’evenement qui declenchera le code.
2

Le mot cled Target est untilisé pourrepérer la cellule ayant declenché l’evenement.
3-Pour plus de détails les liens suivant :


#3

Bonjour,

Malheureusement, nous n’avons pas du tout de code… Nous ne sommes pas étudiants en informatique et n’avons jamais eu de vrais cours de VBA…


#4

Ok,

Pour le traitement il faut en code VBA il faut penser aux différentes situations :

  • La saisie du code uniquement dans la colonne L (se verifie avec Target.column)
    J’ai rajouté le test de la ligne pour voir comment limiter en hauter

  • Est-ce que 10 caracteres ont été saisis (Se verifie avec la fonction Len qui renoit le nombre de carateres dans un mot donné)

  • Si oui les 10 caractères sont-ils des chiffres (se vérifie avec Isnumeric qui renvoi vrai le ne contient que des chiffres,pour la négation il suffit de placer not avant.

  • Afficher un texte a l’écran se fait avec la fonction MsgBox

Le code ressemble a ceci (Il y’a des commentaires a l’interieur)
Fichier Control Saisie.xlsm (14,4 Ko)

Private Sub Worksheet_Change(ByVal Target As Range)
'Code dans Worksheet_Change car se declenche a chaque changement dans la feuille

    'Test si le changement a lieu dans la colonne L (12eme) et avant la 20eme ligne
    'sinon ne fait rien
    If Target.Column = 12 And Target.Row <= 20 Then
    
    'Test du contenu de la cellule ayant ete modifiee
    'si moins ou plus de 10 carateres on qffiche le message puis on sort de la macro
    If (Len(Target.Value) < 10 Or Len(Target.Value) > 10) Then
        MsgBox "Numero incomplet.", vbCritical, "Erreur"
    Exit Sub
    
    'sinon verifie s'il n'y a que des chiffres
    ElseIf Not IsNumeric(Target.Value) Then
        MsgBox "Numero ne doit comporter que des chiffres.", vbCritical, "Erreur"
    End If
    
    End If


End Sub

#5

Hello,

J’en profite pour partager un petit document qui m’a été plutôt utile jusqu’à maintenant :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf

Sinon on peut aussi passer par la validation des données pour limiter le nombre de caractères, mais aucun intérêt si c’est un exercice/projet, sauf si pour rire on passe par du VBA pour mettre en place cette validation de données sur la colonne ^^


#6

Bonjour WildDigiSoft,

Bien vu, mais j’aurais réduit cette ligne

par

If (Len(Target.Value) <> 10) Then

#7

Oui bien optimisé en effet.