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

VBA-Saisie sans doublon

2 réponses
Avatar
Pierre.M
Bonsoir tous,

je bloque depuis un moment sur le petit probleme suivant :

Dans les colonnes F1 à O300 d'un tableau je dois remplir certaines
cellules avec des "0" ou des "1".
Je peux avoir plusieurs "0" dans chaque ligne mais un seul "1".

Comment (en VBA - oui, je sais, une validation de donnee serait bien
plus simple, mais ça ne m'arrange pas dans ce cas precis) ouvrir un
MsgBox si j'essaye de saisir un "1" alors qu'il y en a deja un dans la
meme ligne (colonne F a O, toujours) ?

J'ai essaye avec application.worksheetFunction.CountIf, mais je
n'arrive a rien de fonctionnel.

Quelqu'un aurait-il le temps de me depanner ?

Merci beaucoup et bonne soiree a tous.

Pierre.M

2 réponses

Avatar
Daniel.C
Bonjour.
Essaie :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 6 Or Target.Column > 15 _
Or Target.Row > 300 Then Exit Sub
If Application.CountIf(Range("F" & Target.Row, "O" & Target.Row),
1) > 1 Then
MsgBox "Erreur"
End If
End Sub

Cordialement.
Daniel

Bonsoir tous,

je bloque depuis un moment sur le petit probleme suivant :

Dans les colonnes F1 à O300 d'un tableau je dois remplir certaines cellules
avec des "0" ou des "1".
Je peux avoir plusieurs "0" dans chaque ligne mais un seul "1".

Comment (en VBA - oui, je sais, une validation de donnee serait bien plus
simple, mais ça ne m'arrange pas dans ce cas precis) ouvrir un MsgBox si
j'essaye de saisir un "1" alors qu'il y en a deja un dans la meme ligne
(colonne F a O, toujours) ?

J'ai essaye avec application.worksheetFunction.CountIf, mais je n'arrive a
rien de fonctionnel.

Quelqu'un aurait-il le temps de me depanner ?

Merci beaucoup et bonne soiree a tous.

Pierre.M


Avatar
Pierre.M
Merci Daniel, c'est exactement ce qu'il me fallait.

J'ai souvent du mal a definir la plage d'application de mes macros (un
truc en ActiveCell.("C1:F1") plutot que "F" & Target.Row... par
exemple). La, en fait, j'etais parti sur une macro avec For each
Cell... Next Cell.
Ta solution est bien plus simple (et surtout elle fonctionne !).

Merci encore et bonne soiree.

Pierre.M





On 2009-10-30 18:05:33 +0100, Daniel.C said:

Bonjour.
Essaie :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 6 Or Target.Column > 15 _
Or Target.Row > 300 Then Exit Sub
If Application.CountIf(Range("F" & Target.Row, "O" & Target.Row),
1) > 1 Then
MsgBox "Erreur"
End If
End Sub

Cordialement.
Daniel

Bonsoir tous,

je bloque depuis un moment sur le petit probleme suivant :

Dans les colonnes F1 à O300 d'un tableau je dois remplir certaines
cellules avec des "0" ou des "1".
Je peux avoir plusieurs "0" dans chaque ligne mais un seul "1".

Comment (en VBA - oui, je sais, une validation de donnee serait bien
plus simple, mais ça ne m'arrange pas dans ce cas precis) ouvrir un
MsgBox si j'essaye de saisir un "1" alors qu'il y en a deja un dans la
meme ligne (colonne F a O, toujours) ?

J'ai essaye avec application.worksheetFunction.CountIf, mais je
n'arrive a rien de fonctionnel.

Quelqu'un aurait-il le temps de me depanner ?

Merci beaucoup et bonne soiree a tous.

Pierre.M