J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des cellules
au-dessus :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 And Target <> Empty Then
j = ActiveCell.Row
For i = 1 To j - 1
If Cells(i, 4) = ActiveCell Then
MsgBox ("la valeur a déjà été saisie à la ligne : " & i )
End If
Next
End If
End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas
quand je valide par la touche Entrée après avoir saisi une valeur en D (c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller.
Pourquoi ? Comment y remédier ?
2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre.
Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ?
3) La vérification est "absolue" c'est à dire que si en D je saisis une
valeur en minuscule et plus tard, la même en majuscule, ce n'est pas
considéré comme un doublon. Comment faire pour que la casse ne soit pas
distinctive ?
Merci
Christèle
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Hervé
Salut Christèle, Teste ceci :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range Dim Cel As Range If Not Intersect(Target, [D:D]) Is Nothing _ And Target <> Empty Then If Target.Value <> "" Then 'évite l'erreur si Target = D1(D0 n'existant pas ;o)) On Error Resume Next Set Plage = Range("D1:D" & Target.Row - 1) Set Cel = Plage.Find(Target.Value, , xlValues) If Not Cel Is Nothing Then MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row End If End If End If Set Cel = Nothing Set Plage = Nothing End Sub
Hervé.
"christèle" a écrit dans le message news:
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des cellules
au-dessus : Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 And Target <> Empty Then j = ActiveCell.Row For i = 1 To j - 1 If Cells(i, 4) = ActiveCell Then MsgBox ("la valeur a déjà été saisie à la ligne : " & i ) End If Next End If End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas quand je valide par la touche Entrée après avoir saisi une valeur en D (c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller. Pourquoi ? Comment y remédier ? 2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre. Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ? 3) La vérification est "absolue" c'est à dire que si en D je saisis une valeur en minuscule et plus tard, la même en majuscule, ce n'est pas considéré comme un doublon. Comment faire pour que la casse ne soit pas distinctive ? Merci Christèle
Salut Christèle,
Teste ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
Dim Cel As Range
If Not Intersect(Target, [D:D]) Is Nothing _
And Target <> Empty Then
If Target.Value <> "" Then
'évite l'erreur si Target = D1(D0 n'existant pas ;o))
On Error Resume Next
Set Plage = Range("D1:D" & Target.Row - 1)
Set Cel = Plage.Find(Target.Value, , xlValues)
If Not Cel Is Nothing Then
MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row
End If
End If
End If
Set Cel = Nothing
Set Plage = Nothing
End Sub
Hervé.
"christèle" <christle@discussions.microsoft.com> a écrit dans le message
news: 6388E181-B863-421E-B939-39BB10F661A5@microsoft.com...
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de
vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des
cellules
au-dessus :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 And Target <> Empty Then
j = ActiveCell.Row
For i = 1 To j - 1
If Cells(i, 4) = ActiveCell Then
MsgBox ("la valeur a déjà été saisie à la ligne : " & i )
End If
Next
End If
End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas
quand je valide par la touche Entrée après avoir saisi une valeur en D
(c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton
Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller.
Pourquoi ? Comment y remédier ?
2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre.
Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ?
3) La vérification est "absolue" c'est à dire que si en D je saisis une
valeur en minuscule et plus tard, la même en majuscule, ce n'est pas
considéré comme un doublon. Comment faire pour que la casse ne soit pas
distinctive ?
Merci
Christèle
Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range Dim Cel As Range If Not Intersect(Target, [D:D]) Is Nothing _ And Target <> Empty Then If Target.Value <> "" Then 'évite l'erreur si Target = D1(D0 n'existant pas ;o)) On Error Resume Next Set Plage = Range("D1:D" & Target.Row - 1) Set Cel = Plage.Find(Target.Value, , xlValues) If Not Cel Is Nothing Then MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row End If End If End If Set Cel = Nothing Set Plage = Nothing End Sub
Hervé.
"christèle" a écrit dans le message news:
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des cellules
au-dessus : Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 And Target <> Empty Then j = ActiveCell.Row For i = 1 To j - 1 If Cells(i, 4) = ActiveCell Then MsgBox ("la valeur a déjà été saisie à la ligne : " & i ) End If Next End If End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas quand je valide par la touche Entrée après avoir saisi une valeur en D (c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller. Pourquoi ? Comment y remédier ? 2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre. Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ? 3) La vérification est "absolue" c'est à dire que si en D je saisis une valeur en minuscule et plus tard, la même en majuscule, ce n'est pas considéré comme un doublon. Comment faire pour que la casse ne soit pas distinctive ? Merci Christèle
Hervé
Oups, Il faut enlever la ligne " If Target.Value <> "" Then" ainsi que son "End if" Désolé, petite erreur :o(
Hervé.
"Hervé" a écrit dans le message news:
Salut Christèle, Teste ceci :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range Dim Cel As Range If Not Intersect(Target, [D:D]) Is Nothing _ And Target <> Empty Then If Target.Value <> "" Then 'évite l'erreur si Target = D1(D0 n'existant pas ;o)) On Error Resume Next Set Plage = Range("D1:D" & Target.Row - 1) Set Cel = Plage.Find(Target.Value, , xlValues) If Not Cel Is Nothing Then MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row End If End If End If Set Cel = Nothing Set Plage = Nothing End Sub
Hervé.
"christèle" a écrit dans le message news:
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des cellules
au-dessus : Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 And Target <> Empty Then j = ActiveCell.Row For i = 1 To j - 1 If Cells(i, 4) = ActiveCell Then MsgBox ("la valeur a déjà été saisie à la ligne : " & i ) End If Next End If End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas quand je valide par la touche Entrée après avoir saisi une valeur en D (c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller. Pourquoi ? Comment y remédier ? 2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre. Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ? 3) La vérification est "absolue" c'est à dire que si en D je saisis une valeur en minuscule et plus tard, la même en majuscule, ce n'est pas considéré comme un doublon. Comment faire pour que la casse ne soit pas distinctive ? Merci Christèle
Oups,
Il faut enlever la ligne " If Target.Value <> "" Then" ainsi que son "End
if"
Désolé, petite erreur :o(
Hervé.
"Hervé" <hmsilve@wanadoo.fr> a écrit dans le message news:
e3ejvwMKFHA.1540@TK2MSFTNGP14.phx.gbl...
Salut Christèle,
Teste ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
Dim Cel As Range
If Not Intersect(Target, [D:D]) Is Nothing _
And Target <> Empty Then
If Target.Value <> "" Then
'évite l'erreur si Target = D1(D0 n'existant pas ;o))
On Error Resume Next
Set Plage = Range("D1:D" & Target.Row - 1)
Set Cel = Plage.Find(Target.Value, , xlValues)
If Not Cel Is Nothing Then
MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row
End If
End If
End If
Set Cel = Nothing
Set Plage = Nothing
End Sub
Hervé.
"christèle" <christle@discussions.microsoft.com> a écrit dans le message
news: 6388E181-B863-421E-B939-39BB10F661A5@microsoft.com...
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de
vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des
cellules
au-dessus :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 And Target <> Empty Then
j = ActiveCell.Row
For i = 1 To j - 1
If Cells(i, 4) = ActiveCell Then
MsgBox ("la valeur a déjà été saisie à la ligne : " & i )
End If
Next
End If
End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas
quand je valide par la touche Entrée après avoir saisi une valeur en D
(c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton
Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller.
Pourquoi ? Comment y remédier ?
2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre.
Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ?
3) La vérification est "absolue" c'est à dire que si en D je saisis une
valeur en minuscule et plus tard, la même en majuscule, ce n'est pas
considéré comme un doublon. Comment faire pour que la casse ne soit pas
distinctive ?
Merci
Christèle
Oups, Il faut enlever la ligne " If Target.Value <> "" Then" ainsi que son "End if" Désolé, petite erreur :o(
Hervé.
"Hervé" a écrit dans le message news:
Salut Christèle, Teste ceci :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range Dim Cel As Range If Not Intersect(Target, [D:D]) Is Nothing _ And Target <> Empty Then If Target.Value <> "" Then 'évite l'erreur si Target = D1(D0 n'existant pas ;o)) On Error Resume Next Set Plage = Range("D1:D" & Target.Row - 1) Set Cel = Plage.Find(Target.Value, , xlValues) If Not Cel Is Nothing Then MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row End If End If End If Set Cel = Nothing Set Plage = Nothing End Sub
Hervé.
"christèle" a écrit dans le message news:
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des cellules
au-dessus : Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 And Target <> Empty Then j = ActiveCell.Row For i = 1 To j - 1 If Cells(i, 4) = ActiveCell Then MsgBox ("la valeur a déjà été saisie à la ligne : " & i ) End If Next End If End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas quand je valide par la touche Entrée après avoir saisi une valeur en D (c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller. Pourquoi ? Comment y remédier ? 2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre. Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ? 3) La vérification est "absolue" c'est à dire que si en D je saisis une valeur en minuscule et plus tard, la même en majuscule, ce n'est pas considéré comme un doublon. Comment faire pour que la casse ne soit pas distinctive ? Merci Christèle
christèle
Je viens juste d'essayer sans la correction est ça marche super. Grand merci. Par contre je connaissais pas du tout :" Not Intersect(Target, [D:D]) Is Nothing _ And Target <> Empty". Je débute sous VBA excel. J'ai bien quelques ouvrages qui m'ont permis de "dégrossir" le terrain mais rien qui traite sérieusement des événements de type "Worksheet_Change", rien sur l'utilisation des fonctions dans des userforms ... Ton code est super mais j'aimerais le comprendre, peux-tu m'indiquer quelques ouvrages de référence qui me permettrait d'aller + loin ? Pour ce qui est du site d'excel labo, je m'y suis bien rendue mais les infos bien qu'interessantes ne répondent pas tout à fait à mes besoins. Et puis j'aime mieux travailler sur des bouquins ... merci Christèle
"Hervé" wrote:
Oups, Il faut enlever la ligne " If Target.Value <> "" Then" ainsi que son "End if" Désolé, petite erreur :o(
Hervé.
"Hervé" a écrit dans le message news:
Salut Christèle, Teste ceci :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range Dim Cel As Range If Not Intersect(Target, [D:D]) Is Nothing _ And Target <> Empty Then If Target.Value <> "" Then 'évite l'erreur si Target = D1(D0 n'existant pas ;o)) On Error Resume Next Set Plage = Range("D1:D" & Target.Row - 1) Set Cel = Plage.Find(Target.Value, , xlValues) If Not Cel Is Nothing Then MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row End If End If End If Set Cel = Nothing Set Plage = Nothing End Sub
Hervé.
"christèle" a écrit dans le message news:
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des cellules
au-dessus : Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 And Target <> Empty Then j = ActiveCell.Row For i = 1 To j - 1 If Cells(i, 4) = ActiveCell Then MsgBox ("la valeur a déjà été saisie à la ligne : " & i ) End If Next End If End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas quand je valide par la touche Entrée après avoir saisi une valeur en D (c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller. Pourquoi ? Comment y remédier ? 2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre. Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ? 3) La vérification est "absolue" c'est à dire que si en D je saisis une valeur en minuscule et plus tard, la même en majuscule, ce n'est pas considéré comme un doublon. Comment faire pour que la casse ne soit pas distinctive ? Merci Christèle
Je viens juste d'essayer sans la correction est ça marche super. Grand merci.
Par contre je connaissais pas du tout :" Not Intersect(Target, [D:D]) Is
Nothing _
And Target <> Empty". Je débute sous VBA excel. J'ai bien quelques ouvrages
qui m'ont permis de "dégrossir" le terrain mais rien qui traite sérieusement
des événements de type "Worksheet_Change", rien sur l'utilisation des
fonctions dans des userforms ... Ton code est super mais j'aimerais le
comprendre, peux-tu m'indiquer quelques ouvrages de référence qui me
permettrait d'aller + loin ? Pour ce qui est du site d'excel labo, je m'y
suis bien rendue mais les infos bien qu'interessantes ne répondent pas tout à
fait à mes besoins. Et puis j'aime mieux travailler sur des bouquins ...
merci
Christèle
"Hervé" wrote:
Oups,
Il faut enlever la ligne " If Target.Value <> "" Then" ainsi que son "End
if"
Désolé, petite erreur :o(
Hervé.
"Hervé" <hmsilve@wanadoo.fr> a écrit dans le message news:
e3ejvwMKFHA.1540@TK2MSFTNGP14.phx.gbl...
Salut Christèle,
Teste ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
Dim Cel As Range
If Not Intersect(Target, [D:D]) Is Nothing _
And Target <> Empty Then
If Target.Value <> "" Then
'évite l'erreur si Target = D1(D0 n'existant pas ;o))
On Error Resume Next
Set Plage = Range("D1:D" & Target.Row - 1)
Set Cel = Plage.Find(Target.Value, , xlValues)
If Not Cel Is Nothing Then
MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row
End If
End If
End If
Set Cel = Nothing
Set Plage = Nothing
End Sub
Hervé.
"christèle" <christle@discussions.microsoft.com> a écrit dans le message
news: 6388E181-B863-421E-B939-39BB10F661A5@microsoft.com...
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de
vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des
cellules
au-dessus :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 And Target <> Empty Then
j = ActiveCell.Row
For i = 1 To j - 1
If Cells(i, 4) = ActiveCell Then
MsgBox ("la valeur a déjà été saisie à la ligne : " & i )
End If
Next
End If
End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas
quand je valide par la touche Entrée après avoir saisi une valeur en D
(c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton
Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller.
Pourquoi ? Comment y remédier ?
2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre.
Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ?
3) La vérification est "absolue" c'est à dire que si en D je saisis une
valeur en minuscule et plus tard, la même en majuscule, ce n'est pas
considéré comme un doublon. Comment faire pour que la casse ne soit pas
distinctive ?
Merci
Christèle
Je viens juste d'essayer sans la correction est ça marche super. Grand merci. Par contre je connaissais pas du tout :" Not Intersect(Target, [D:D]) Is Nothing _ And Target <> Empty". Je débute sous VBA excel. J'ai bien quelques ouvrages qui m'ont permis de "dégrossir" le terrain mais rien qui traite sérieusement des événements de type "Worksheet_Change", rien sur l'utilisation des fonctions dans des userforms ... Ton code est super mais j'aimerais le comprendre, peux-tu m'indiquer quelques ouvrages de référence qui me permettrait d'aller + loin ? Pour ce qui est du site d'excel labo, je m'y suis bien rendue mais les infos bien qu'interessantes ne répondent pas tout à fait à mes besoins. Et puis j'aime mieux travailler sur des bouquins ... merci Christèle
"Hervé" wrote:
Oups, Il faut enlever la ligne " If Target.Value <> "" Then" ainsi que son "End if" Désolé, petite erreur :o(
Hervé.
"Hervé" a écrit dans le message news:
Salut Christèle, Teste ceci :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Plage As Range Dim Cel As Range If Not Intersect(Target, [D:D]) Is Nothing _ And Target <> Empty Then If Target.Value <> "" Then 'évite l'erreur si Target = D1(D0 n'existant pas ;o)) On Error Resume Next Set Plage = Range("D1:D" & Target.Row - 1) Set Cel = Plage.Find(Target.Value, , xlValues) If Not Cel Is Nothing Then MsgBox "la valeur a déjà été saisie à la ligne : " & Cel.Row End If End If End If Set Cel = Nothing Set Plage = Nothing End Sub
Hervé.
"christèle" a écrit dans le message news:
J'ai saisi dans la feuil1 d'un projet vba un code qui me permet de vérifier
si la valeur saisie dans la colonne D n'existe pas déjà dans une des cellules
au-dessus : Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 4 And Target <> Empty Then j = ActiveCell.Row For i = 1 To j - 1 If Cells(i, 4) = ActiveCell Then MsgBox ("la valeur a déjà été saisie à la ligne : " & i ) End If Next End If End Sub
Je suis confrontée à 3 problèmes : 1) La vérification ne se réalise pas quand je valide par la touche Entrée après avoir saisi une valeur en D (c'est
embêtant !) mais se réalise très bien quand je valide avec le bouton Entrer
(à gauche dans la barre des formules) ou que je fais un copier/coller. Pourquoi ? Comment y remédier ? 2) Lorsque je fais une suppression, la fenêtre de deboggage s'ouvre. Pourquoi et quelle procédure d'erreur dois je introduire ? Solution ? 3) La vérification est "absolue" c'est à dire que si en D je saisis une valeur en minuscule et plus tard, la même en majuscule, ce n'est pas considéré comme un doublon. Comment faire pour que la casse ne soit pas distinctive ? Merci Christèle