Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction Vb qui s'applique une ligne sur deux

6 réponses
Avatar
easystop
Bonjour,
j'aimerais completer ma formule
j'ai utiliser cette formule pour interdire les doublons sur une colonne :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'colonne à "surveiller" (ici colonne A)
If Target.Column = 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then

MsgBox "GENCODE DEJA EXISTANT"
Target.Value = ""
Target.Select
End If
End If
End Sub

j'aimerais quelle ne s'applique que une ligne sur deux.
(j'ai une ligne sur deux avec marqué gencode dedans).

ou exclure le mot gencode de la regle.
Merci de votre aide :)

6 réponses

Avatar
Hervé
Bonsoir easystop,

Intègre ces lignes de code dans ta proc et adapte. Ce bout de code recherche
la partie numérique de l'adresse(AZ2569 --> 2569) et contrôle si ce nombre
est pair ou impair.

Dim I As Integer
For I = 1 To Len(Target.Address(0, 0))
If IsNumeric(Mid(Target.Address(0, 0), _
I, Len(Target.Address(0, 0)) - I)) Then Exit For
Next I

MsgBox Mid(Target.Address(0, 0), _
I, Len(Target.Address(0, 0)) - I + 1) Mod 2

Hervé.


"easystop" a écrit dans le message de news:

Bonjour,
j'aimerais completer ma formule
j'ai utiliser cette formule pour interdire les doublons sur une colonne :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'colonne à "surveiller" (ici colonne A)
If Target.Column = 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then

MsgBox "GENCODE DEJA EXISTANT"
Target.Value = ""
Target.Select
End If
End If
End Sub

j'aimerais quelle ne s'applique que une ligne sur deux.
(j'ai une ligne sur deux avec marqué gencode dedans).

ou exclure le mot gencode de la regle.
Merci de votre aide :)




Avatar
JB
Bonsoir,

On ne teste que les lignes impaires:
(Nommer le champ de saisie MonChamp)

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp"), Target) Is Nothing _
And Target.Count = 1 And (Target.Row Mod 2) = 1 Then
For Each c In Range("monchamp")
If (c.Row Mod 2) = 1 Then
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row
And c.Value <> Empty Then
MsgBox "Doublon"
Target.Value = Empty
Exit Sub
End If
End If
Next c
End If
End Sub

JB


Bonjour,
j'aimerais completer ma formule
j'ai utiliser cette formule pour interdire les doublons sur une colonne :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'colonne à "surveiller" (ici colonne A)
If Target.Column = 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then

MsgBox "GENCODE DEJA EXISTANT"
Target.Value = ""
Target.Select
End If
End If
End Sub

j'aimerais quelle ne s'applique que une ligne sur deux.
(j'ai une ligne sur deux avec marqué gencode dedans).

ou exclure le mot gencode de la regle.
Merci de votre aide :)


Avatar
JB
Bonsoir:

Ne vérifie que les lignes impaires:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp"), Target) Is Nothing _
And Target.Count = 1 And (Target.Row Mod 2) = 1 Then
For Each c In Range("monchamp")
If (c.Row Mod 2) = 1 Then
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row
And c.Value <> Empty Then
MsgBox "Doublon"
Target.Value = Empty
Exit Sub
End If
End If
Next c
End If
End Sub

JB


Bonjour,
j'aimerais completer ma formule
j'ai utiliser cette formule pour interdire les doublons sur une colonne :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'colonne à "surveiller" (ici colonne A)
If Target.Column = 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then

MsgBox "GENCODE DEJA EXISTANT"
Target.Value = ""
Target.Select
End If
End If
End Sub

j'aimerais quelle ne s'applique que une ligne sur deux.
(j'ai une ligne sur deux avec marqué gencode dedans).

ou exclure le mot gencode de la regle.
Merci de votre aide :)


Avatar
easystop
Merci pour celle adaptation :)
parcontre c les lignes paires qui m'initerresse.
quesque je dois changer pour le faire sur les lignes paires


"JB" a écrit dans le message de news:

Bonsoir:

Ne vérifie que les lignes impaires:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp"), Target) Is Nothing _
And Target.Count = 1 And (Target.Row Mod 2) = 1 Then
For Each c In Range("monchamp")
If (c.Row Mod 2) = 1 Then
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row
And c.Value <> Empty Then
MsgBox "Doublon"
Target.Value = Empty
Exit Sub
End If
End If
Next c
End If
End Sub

JB


Bonjour,
j'aimerais completer ma formule
j'ai utiliser cette formule pour interdire les doublons sur une colonne :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'colonne à "surveiller" (ici colonne A)
If Target.Column = 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then

MsgBox "GENCODE DEJA EXISTANT"
Target.Value = ""
Target.Select
End If
End If
End Sub

j'aimerais quelle ne s'applique que une ligne sur deux.
(j'ai une ligne sur deux avec marqué gencode dedans).

ou exclure le mot gencode de la regle.
Merci de votre aide :)


Avatar
JB
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp2"), Target) Is Nothing _
And Target.Count = 1 And (Target.Row Mod 2) = 0 Then
For Each c In Range("monchamp2")
If (c.Row Mod 2) = 0 Then
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row
And c.Value <> Empty Then
MsgBox "Doublon"
Target.Value = Empty
Exit Sub
End If
End If
Next c
End If
End Sub

JB



Merci pour celle adaptation :)
parcontre c les lignes paires qui m'initerresse.
quesque je dois changer pour le faire sur les lignes paires


"JB" a écrit dans le message de news:

Bonsoir:

Ne vérifie que les lignes impaires:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp"), Target) Is Nothing _
And Target.Count = 1 And (Target.Row Mod 2) = 1 Then
For Each c In Range("monchamp")
If (c.Row Mod 2) = 1 Then
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row
And c.Value <> Empty Then
MsgBox "Doublon"
Target.Value = Empty
Exit Sub
End If
End If
Next c
End If
End Sub

JB


Bonjour,
j'aimerais completer ma formule
j'ai utiliser cette formule pour interdire les doublons sur une colonne :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'colonne à "surveiller" (ici colonne A)
If Target.Column = 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then

MsgBox "GENCODE DEJA EXISTANT"
Target.Value = ""
Target.Select
End If
End If
End Sub

j'aimerais quelle ne s'applique que une ligne sur deux.
(j'ai une ligne sur deux avec marqué gencode dedans).

ou exclure le mot gencode de la regle.
Merci de votre aide :)




Avatar
easystop
Merci bien :)
"JB" a écrit dans le message de news:


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp2"), Target) Is Nothing _
And Target.Count = 1 And (Target.Row Mod 2) = 0 Then
For Each c In Range("monchamp2")
If (c.Row Mod 2) = 0 Then
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row
And c.Value <> Empty Then
MsgBox "Doublon"
Target.Value = Empty
Exit Sub
End If
End If
Next c
End If
End Sub

JB



Merci pour celle adaptation :)
parcontre c les lignes paires qui m'initerresse.
quesque je dois changer pour le faire sur les lignes paires


"JB" a écrit dans le message de news:

Bonsoir:

Ne vérifie que les lignes impaires:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("monchamp"), Target) Is Nothing _
And Target.Count = 1 And (Target.Row Mod 2) = 1 Then
For Each c In Range("monchamp")
If (c.Row Mod 2) = 1 Then
If UCase(c.Value) = UCase(Target.Value) And c.Row <> Target.Row
And c.Value <> Empty Then
MsgBox "Doublon"
Target.Value = Empty
Exit Sub
End If
End If
Next c
End If
End Sub

JB


Bonjour,
j'aimerais completer ma formule
j'ai utiliser cette formule pour interdire les doublons sur une colonne
:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

'colonne à "surveiller" (ici colonne A)
If Target.Column = 1 Then

' pour vérifier si la saisie n'existe pas déjà dans la colonne
If Application.WorksheetFunction. _
CountIf(Range("A:A"), Target.Value) > 1 Then

MsgBox "GENCODE DEJA EXISTANT"
Target.Value = ""
Target.Select
End If
End If
End Sub

j'aimerais quelle ne s'applique que une ligne sur deux.
(j'ai une ligne sur deux avec marqué gencode dedans).

ou exclure le mot gencode de la regle.
Merci de votre aide :)