Nombre de caractères dans une cellule

Le
Flac
Bonjour,
Excel 2000,
J'ai dans une colonne le format suivant:
1234-5678-9012-3456
Il y a donc 16 caractères dans la cellule (en excluant les traits d'union
qui s'inscrivent automatiquement).
Je voudrais une procédure qui vérifie que le nombre de caractères inscrits
dans une cellule de la colonne 10 soit égal à 16 et que les caractères
soient tous numériques.
Ce serait du genre:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 10 Then
if "si le nombre de caractères numériques est différent de
16" then
msgbox "Vous n'avez pas inscrit un numéro valide"
activecell.ClearContents
End If
End Sub

Merci

Flac
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #16657501
Bonsoir,

Ceci peut-être
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Or Len(Target) <> (19) Then GoTo erreur
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'------------------

--
Salutations
JJ


"Flac"
Bonjour,
Excel 2000,
J'ai dans une colonne le format suivant:
1234-5678-9012-3456
Il y a donc 16 caractères dans la cellule (en excluant les traits d'union
qui s'inscrivent automatiquement).
Je voudrais une procédure qui vérifie que le nombre de caractères inscrits
dans une cellule de la colonne 10 soit égal à 16 et que les caractères
soient tous numériques.
Ce serait du genre:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 10 Then
if "si le nombre de caractères numériques est différent de
16" then
msgbox "Vous n'avez pas inscrit un numéro valide"
activecell.ClearContents
End If
End Sub

Merci

Flac



Flac
Le #16657871
Bonjour,
Merci pour la réponse. La macro fonctionne bien, mais il y a un petit
inconvénient. Je dois inscrire un trait d'union entre les 4 groupes de
caractères. Y aurait-il une façon d'éviter d'écrire les traits d'union,
seulement les 16 caractères numériques.

Merci

Flac



"Jacky" %
Bonsoir,

Ceci peut-être
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Or Len(Target) <> (19) Then GoTo erreur
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'------------------

--
Salutations
JJ


"Flac"
Bonjour,
Excel 2000,
J'ai dans une colonne le format suivant:
1234-5678-9012-3456
Il y a donc 16 caractères dans la cellule (en excluant les traits d'union
qui s'inscrivent automatiquement).
Je voudrais une procédure qui vérifie que le nombre de caractères
inscrits dans une cellule de la colonne 10 soit égal à 16 et que les
caractères soient tous numériques.
Ce serait du genre:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 10 Then
if "si le nombre de caractères numériques est différent de
16" then
msgbox "Vous n'avez pas inscrit un numéro valide"
activecell.ClearContents
End If
End Sub

Merci

Flac







CAP2
Le #16658721
Salut,

tu sélectionnes ta colonne, puis clic-droit --> Format de
cellule-->Nombre-->Personnalisé et tu mets ça :

0000-0000-0000-0000

Rq: ca ne fait que 3 traits d'union pour séparer 4 groupes ;o)

Ca marche ?

CAP2

"Flac" %
Bonjour,
Merci pour la réponse. La macro fonctionne bien, mais il y a un petit
inconvénient. Je dois inscrire un trait d'union entre les 4 groupes de
caractères. Y aurait-il une façon d'éviter d'écrire les traits d'union,
seulement les 16 caractères numériques.

Merci

Flac



"Jacky" %
Bonsoir,

Ceci peut-être
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Or Len(Target) <> (19) Then GoTo erreur
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'------------------

--
Salutations
JJ


"Flac"
Bonjour,
Excel 2000,
J'ai dans une colonne le format suivant:
1234-5678-9012-3456
Il y a donc 16 caractères dans la cellule (en excluant les traits
d'union qui s'inscrivent automatiquement).
Je voudrais une procédure qui vérifie que le nombre de caractères
inscrits dans une cellule de la colonne 10 soit égal à 16 et que les
caractères soient tous numériques.
Ce serait du genre:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 10 Then
if "si le nombre de caractères numériques est différent de
16" then
msgbox "Vous n'avez pas inscrit un numéro valide"
activecell.ClearContents
End If
End Sub

Merci

Flac











Jacky
Le #16659221
Re
Y aurait-il une façon d'éviter d'écrire les traits d'union, seulement les
16 caractères numériques



Avec ceci je pensais (a tort) que c'était déjà fait
(en excluant les traits d'union qui s'inscrivent automatiquement).


je pensais (a tort) que c'était déjà fait


Essaie avec
'------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Then GoTo erreur
x = x * 1
Target.NumberFormat = "0000-0000-0000-0000"
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'---------------

--
Salutations
JJ


"Flac" %
Bonjour,
Merci pour la réponse. La macro fonctionne bien, mais il y a un petit
inconvénient. Je dois inscrire un trait d'union entre les 4 groupes de
caractères. Y aurait-il une façon d'éviter d'écrire les traits d'union,
seulement les 16 caractères numériques.

Merci

Flac



"Jacky" %
Bonsoir,

Ceci peut-être
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Or Len(Target) <> (19) Then GoTo erreur
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'------------------

--
Salutations
JJ


"Flac"
Bonjour,
Excel 2000,
J'ai dans une colonne le format suivant:
1234-5678-9012-3456
Il y a donc 16 caractères dans la cellule (en excluant les traits
d'union qui s'inscrivent automatiquement).
Je voudrais une procédure qui vérifie que le nombre de caractères
inscrits dans une cellule de la colonne 10 soit égal à 16 et que les
caractères soient tous numériques.
Ce serait du genre:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 10 Then
if "si le nombre de caractères numériques est différent de
16" then
msgbox "Vous n'avez pas inscrit un numéro valide"
activecell.ClearContents
End If
End Sub

Merci

Flac











CAP2
Le #16659211
Excuse-moi Jacky, j'avais pas regardé ton code avant de répondre ;o))

Et du coup, j'ai bien l'impression que Flac a fait pareil que moi !!

;o)))

CAP2

"Jacky" %
Re
Y aurait-il une façon d'éviter d'écrire les traits d'union, seulement les
16 caractères numériques



Avec ceci je pensais (a tort) que c'était déjà fait
(en excluant les traits d'union qui s'inscrivent automatiquement).


je pensais (a tort) que c'était déjà fait


Essaie avec
'------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Then GoTo erreur
x = x * 1
Target.NumberFormat = "0000-0000-0000-0000"
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'---------------

--
Salutations
JJ


"Flac" %
Bonjour,
Merci pour la réponse. La macro fonctionne bien, mais il y a un petit
inconvénient. Je dois inscrire un trait d'union entre les 4 groupes de
caractères. Y aurait-il une façon d'éviter d'écrire les traits d'union,
seulement les 16 caractères numériques.

Merci

Flac



"Jacky" %
Bonsoir,

Ceci peut-être
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Or Len(Target) <> (19) Then GoTo erreur
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'------------------

--
Salutations
JJ


"Flac"
Bonjour,
Excel 2000,
J'ai dans une colonne le format suivant:
1234-5678-9012-3456
Il y a donc 16 caractères dans la cellule (en excluant les traits
d'union qui s'inscrivent automatiquement).
Je voudrais une procédure qui vérifie que le nombre de caractères
inscrits dans une cellule de la colonne 10 soit égal à 16 et que les
caractères soient tous numériques.
Ce serait du genre:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 10 Then
if "si le nombre de caractères numériques est différent de
16" then
msgbox "Vous n'avez pas inscrit un numéro valide"
activecell.ClearContents
End If
End Sub

Merci

Flac















Jacky
Le #16661201
Re...

J'ai bien peur qu'il faille employer une autre stratégie.
Le format avec 16 chiffres ne passe pas
J'ai pas trouver mieux.
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) <> 16 Then GoTo erreur
Target = Left(x, 4) & "-" & Mid(x, 5, 4) & "-" & Mid(x, 9, 4) & "-" &
Right(x, 4)
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "N'est pas un numéro valide." & Chr(10) & Chr(10)
& "Recommencez."
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'-----------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
Target.NumberFormat = "@"
End If
End Sub
'---------------

--
Salutations
JJ


"CAP2"
Excuse-moi Jacky, j'avais pas regardé ton code avant de répondre ;o))

Et du coup, j'ai bien l'impression que Flac a fait pareil que moi !!

;o)))

CAP2

"Jacky" %
Re
Y aurait-il une façon d'éviter d'écrire les traits d'union, seulement les
16 caractères numériques



Avec ceci je pensais (a tort) que c'était déjà fait
(en excluant les traits d'union qui s'inscrivent automatiquement).


je pensais (a tort) que c'était déjà fait


Essaie avec
'------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Then GoTo erreur
x = x * 1
Target.NumberFormat = "0000-0000-0000-0000"
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'---------------

--
Salutations
JJ


"Flac" %
Bonjour,
Merci pour la réponse. La macro fonctionne bien, mais il y a un petit
inconvénient. Je dois inscrire un trait d'union entre les 4 groupes de
caractères. Y aurait-il une façon d'éviter d'écrire les traits d'union,
seulement les 16 caractères numériques.

Merci

Flac



"Jacky" %
Bonsoir,

Ceci peut-être
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Or Len(Target) <> (19) Then GoTo erreur
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'------------------

--
Salutations
JJ


"Flac"
Bonjour,
Excel 2000,
J'ai dans une colonne le format suivant:
1234-5678-9012-3456
Il y a donc 16 caractères dans la cellule (en excluant les traits
d'union qui s'inscrivent automatiquement).
Je voudrais une procédure qui vérifie que le nombre de caractères
inscrits dans une cellule de la colonne 10 soit égal à 16 et que les
caractères soient tous numériques.
Ce serait du genre:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 10 Then
if "si le nombre de caractères numériques est différent de
16" then
msgbox "Vous n'avez pas inscrit un numéro valide"
activecell.ClearContents
End If
End Sub

Merci

Flac



















Flac
Le #16661781
Merci, c'est parfait comme ça.
J'ai même le choix d'inscrire ou non les traits d'union et
la macro fait le travail.
Super

Très apprécié.

Flac



"Jacky" %
Re...

J'ai bien peur qu'il faille employer une autre stratégie.
Le format avec 16 chiffres ne passe pas
J'ai pas trouver mieux.
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) <> 16 Then GoTo erreur
Target = Left(x, 4) & "-" & Mid(x, 5, 4) & "-" & Mid(x, 9, 4) & "-" &
Right(x, 4)
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "N'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez."
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'-----------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
Target.NumberFormat = "@"
End If
End Sub
'---------------

--
Salutations
JJ


"CAP2"
Excuse-moi Jacky, j'avais pas regardé ton code avant de répondre ;o))

Et du coup, j'ai bien l'impression que Flac a fait pareil que moi !!

;o)))

CAP2

"Jacky" %
Re
Y aurait-il une façon d'éviter d'écrire les traits d'union, seulement
les 16 caractères numériques



Avec ceci je pensais (a tort) que c'était déjà fait
(en excluant les traits d'union qui s'inscrivent automatiquement).


je pensais (a tort) que c'était déjà fait


Essaie avec
'------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Then GoTo erreur
x = x * 1
Target.NumberFormat = "0000-0000-0000-0000"
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'---------------

--
Salutations
JJ


"Flac" %
Bonjour,
Merci pour la réponse. La macro fonctionne bien, mais il y a un petit
inconvénient. Je dois inscrire un trait d'union entre les 4 groupes de
caractères. Y aurait-il une façon d'éviter d'écrire les traits
d'union, seulement les 16 caractères numériques.

Merci

Flac



"Jacky" %
Bonsoir,

Ceci peut-être
'--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target.Value, "-", "")
If Len(x) <> 16 Or Len(Target) <> (19) Then GoTo erreur
x = x * 1
Application.EnableEvents = True
Exit Sub
erreur:
MsgBox "Vous n'avez pas inscrit un numéro valide"
Target.Select
Target.ClearContents
Application.EnableEvents = True
End If
End Sub
'------------------

--
Salutations
JJ


"Flac"
Bonjour,
Excel 2000,
J'ai dans une colonne le format suivant:
1234-5678-9012-3456
Il y a donc 16 caractères dans la cellule (en excluant les traits
d'union qui s'inscrivent automatiquement).
Je voudrais une procédure qui vérifie que le nombre de caractères
inscrits dans une cellule de la colonne 10 soit égal à 16 et que les
caractères soient tous numériques.
Ce serait du genre:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 10 Then
if "si le nombre de caractères numériques est différent de
16" then
msgbox "Vous n'avez pas inscrit un numéro valide"
activecell.ClearContents
End If
End Sub

Merci

Flac























Modeste
Le #16664171
Bonsour® Flac avec ferveur ;o))) vous nous disiez :

Je voudrais une procédure qui vérifie que le nombre de caractères
inscrits dans une cellule de la colonne 10 soit égal à 16 et que les
caractères soient tous numériques.



format cellule= Texte

Menu Données > Validation
autoriser : Personnalisé
La formule est :
=ET(NBCAR(A1);NON(ESTERR(1*A1)))

adapter les messages de saisie et alerte d'erreur




--
--
@+
;o)))
Publicité
Poster une réponse
Anonyme