Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
eAQRFhUEJHA.3996@TK2MSFTNGP03.phx.gbl...
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
If Len(x) <> 16 Then GoTo erreur
Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
If Len(x) <> 16 Then GoTo erreur
Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
uKEuj%23YEJHA.4492@TK2MSFTNGP05.phx.gbl...
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
eAQRFhUEJHA.3996@TK2MSFTNGP03.phx.gbl...
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
If Len(x) <> 16 Then GoTo erreur
Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est "Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères numériques
inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5" then
goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10) &
Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10)
& Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.
If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
OcdTeLaEJHA.4744@TK2MSFTNGP02.phx.gbl...
Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
uKEuj%23YEJHA.4492@TK2MSFTNGP05.phx.gbl...
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
eAQRFhUEJHA.3996@TK2MSFTNGP03.phx.gbl...
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10)
& Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10)
& Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que si
je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" a écrit dans le message de news:Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10)
& Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que si
je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
O7EQmQaEJHA.1272@TK2MSFTNGP02.phx.gbl...
Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.
If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
OcdTeLaEJHA.4744@TK2MSFTNGP02.phx.gbl...
Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
uKEuj%23YEJHA.4492@TK2MSFTNGP05.phx.gbl...
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
eAQRFhUEJHA.3996@TK2MSFTNGP03.phx.gbl...
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10)
& Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que si
je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" a écrit dans le message de news:Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." & Chr(10)
& Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" a écrit dans le message de news:
%Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" a écrit dans le message de news:Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
%23tOGixaEJHA.5732@TK2MSFTNGP04.phx.gbl...
Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
O7EQmQaEJHA.1272@TK2MSFTNGP02.phx.gbl...
Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.
If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
OcdTeLaEJHA.4744@TK2MSFTNGP02.phx.gbl...
Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
uKEuj%23YEJHA.4492@TK2MSFTNGP05.phx.gbl...
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
eAQRFhUEJHA.3996@TK2MSFTNGP03.phx.gbl...
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" a écrit dans le message de news:
%Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" a écrit dans le message de news:Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure qui
suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes supplémentaires,
soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Re...
C'est exactement ce que faisait le code proposé
Celui-ci efface AUSSI les "b" s'il y a Modification d'une
cellule(préalablement saisie) et si les conditions ne sont pas remplies
http://cjoint.com/?jipuCTnbiH
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" a écrit dans le message de news:
%Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" a écrit dans le message de news:Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure
qui suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes
supplémentaires, soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Re...
C'est exactement ce que faisait le code proposé
Celui-ci efface AUSSI les "b" s'il y a Modification d'une
cellule(préalablement saisie) et si les conditions ne sont pas remplies
http://cjoint.com/?jipuCTnbiH
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
O10AONbEJHA.4504@TK2MSFTNGP05.phx.gbl...
Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
%23tOGixaEJHA.5732@TK2MSFTNGP04.phx.gbl...
Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
O7EQmQaEJHA.1272@TK2MSFTNGP02.phx.gbl...
Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.
If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
OcdTeLaEJHA.4744@TK2MSFTNGP02.phx.gbl...
Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
uKEuj%23YEJHA.4492@TK2MSFTNGP05.phx.gbl...
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
eAQRFhUEJHA.3996@TK2MSFTNGP03.phx.gbl...
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure
qui suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes
supplémentaires, soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Re...
C'est exactement ce que faisait le code proposé
Celui-ci efface AUSSI les "b" s'il y a Modification d'une
cellule(préalablement saisie) et si les conditions ne sont pas remplies
http://cjoint.com/?jipuCTnbiH
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" a écrit dans le message de news:
%Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" a écrit dans le message de news:Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure
qui suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes
supplémentaires, soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Rebonjour,
Merci, effectivement, ton code est beaucoup performant que le mien. La
syntaxe du code qui accompagne le fichier que tu as joint répare les
erreurs de mon code qui faisait en sorte que la macro ne fonctionnait pas
correctement.
Salutations
Flac
"Jacky" a écrit dans le message de news:Re...
C'est exactement ce que faisait le code proposé
Celui-ci efface AUSSI les "b" s'il y a Modification d'une
cellule(préalablement saisie) et si les conditions ne sont pas remplies
http://cjoint.com/?jipuCTnbiH
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" a écrit dans le message de news:
%Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" a écrit dans le message de news:Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure
qui suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes
supplémentaires, soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie
d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Rebonjour,
Merci, effectivement, ton code est beaucoup performant que le mien. La
syntaxe du code qui accompagne le fichier que tu as joint répare les
erreurs de mon code qui faisait en sorte que la macro ne fonctionnait pas
correctement.
Salutations
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
uRZ3IXbEJHA.4872@TK2MSFTNGP03.phx.gbl...
Re...
C'est exactement ce que faisait le code proposé
Celui-ci efface AUSSI les "b" s'il y a Modification d'une
cellule(préalablement saisie) et si les conditions ne sont pas remplies
http://cjoint.com/?jipuCTnbiH
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
O10AONbEJHA.4504@TK2MSFTNGP05.phx.gbl...
Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
%23tOGixaEJHA.5732@TK2MSFTNGP04.phx.gbl...
Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
O7EQmQaEJHA.1272@TK2MSFTNGP02.phx.gbl...
Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.
If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
OcdTeLaEJHA.4744@TK2MSFTNGP02.phx.gbl...
Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
uKEuj%23YEJHA.4492@TK2MSFTNGP05.phx.gbl...
Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" <luc_bt@hotmail.com> a écrit dans le message de news:
eAQRFhUEJHA.3996@TK2MSFTNGP03.phx.gbl...
Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure
qui suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes
supplémentaires, soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie
d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Rebonjour,
Merci, effectivement, ton code est beaucoup performant que le mien. La
syntaxe du code qui accompagne le fichier que tu as joint répare les
erreurs de mon code qui faisait en sorte que la macro ne fonctionnait pas
correctement.
Salutations
Flac
"Jacky" a écrit dans le message de news:Re...
C'est exactement ce que faisait le code proposé
Celui-ci efface AUSSI les "b" s'il y a Modification d'une
cellule(préalablement saisie) et si les conditions ne sont pas remplies
http://cjoint.com/?jipuCTnbiH
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Après maintes tentatives, j'ai trouvé.
Voici le code que je cherchais:
If Len(x) <> 16 Then GoTo erreur
If Left(x, 1) = 4 Then
Target.Offset(0, -2).Value = "b"
ElseIf Left(x, 1) = 5 Then
Target.Offset(0, -1).Value = "b"
ElseIf Left(x, 1) <> 4 Or Left(x, 1) <> 5 Then
GoTo erreur
End If
Merci, sans ton aide je n'y serais pas arrivé.
Flac
"Flac" a écrit dans le message de news:
%Bonjour,
Merci pour la réponse.
J'ai essayé le code et ça ne fonctionne pas.
Aussitôt que j'inscris 16 caractères numériques, je n'ai pas de message
d'erreur,
même si le premier caractère est un 4 ou un 5. C'est la même chose que
si je ne change
pas le code.
Je continue d'autres alternatives.
Merci encore
Flac
"Jacky" a écrit dans le message de news:Re..
Remplacer cette ligne et ajouter les 2 lignes avant le reste du code.If Len(x) <> 16 Then GoTo erreur
Comme ceci:
If Len(x) <> 16 Or (Left(x, 1) <> 4 And Left(x, 1) <> 5) Then GoTo
erreur
Target.Offset(0, 2 * (Left(x, 1) <> 4) + (Left(x, 1) <> 5)) = ""
Target.Offset(0, 2 * (Left(x, 1) = 4) + (Left(x, 1) = 5)) = "b"
Ps: j'ai pas testé le reste du code "Unprotect" etc....
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Effectivement, il y a confusion. Je voulais parler de la colonne J.
Une erreur bête.
Merci
Flac
"Jacky" a écrit dans le message de news:
uKEuj%Bonjour,
N'y a t-il pas confusion entre Colonne "F" et Target.Column = 10
--
Salutations
JJ
"Flac" a écrit dans le message de news:Bonjour,
Excel 2000
Je voudrais ajouter des contraintes additionnelles à la procédure
qui suit.
Le format des cellules de la colonne "F" (la colonne cible) est
"Texte".
Je voudrais donc qu'après avoir vérifié que les 16 caractères
numériques inscrits dans la cellule de la colonne "F"
soient valides, la macro vérifie aussi 3 contraintes
supplémentaires, soit:
if "le premier caractère de la cellule cible est égal à 4" then
target.offset(0,-2) = "b"
elseif "le premier caractère de la cellule cible est égal à 5" then
target.offset(0,-1) = "b"
elseif "le premier caractère de la cellule est différent de 4 ou 5"
then goto erreur
end if
Espérant que ma requête est bien comprise, je vous remercie
d'avance
Flac
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Application.EnableEvents = False
On Error GoTo erreur
x = Application.Substitute(Target, "-", "")
If Len(x) = 0 Then
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
End If
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
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Exit Sub
erreur:
MsgBox Target & Chr(10) & "n'est pas un numéro valide." &
Chr(10) & Chr(10) & "Recommencez.", vbCritical, " NON VALIDE"
Target.Select
Target.ClearContents
Application.EnableEvents = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 10 Then
ActiveSheet.Unprotect
Target.NumberFormat = "@"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End If
End Sub