OVH Cloud OVH Cloud

doublons ?

7 réponses
Avatar
Frédéric LEGEAI
bonjour
encore encore moi !
une dernière question :
en vba, comment afficher un message dans dans une plage de cellules a1:b10
de la feuille feuil1 si une valeur existe déja ?

par exemple si en A1 j'ai "bc", et q'en b9 je tape "bc" alors j'ai le
message "Valeur déjà saisie!"

mille mille mercis
;0)

7 réponses

Avatar
Joel
Re ;-)

à placer dans le module privé de la feuille concernée :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then
Exit Sub
End If
If Target.Row > 9 Or Target.Column > 2 Or Target.Value = "" Then
Exit Sub
End If

Dim oCell As Range
For Each oCell In Range("A1:B9")
If oCell.Value = Target.Value And Target.Address <> oCell.Address Then
MsgBox Target.Value & " a déjà été saisi en " & oCell.Address
Target.ClearContents
Target.Select
Exit For
End If
Next
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Frédéric LEGEAI" a écrit dans le message de
news:cc1n0h$cfd$
bonjour
encore encore moi !
une dernière question :
en vba, comment afficher un message dans dans une plage de cellules a1:b10
de la feuille feuil1 si une valeur existe déja ?

par exemple si en A1 j'ai "bc", et q'en b9 je tape "bc" alors j'ai le
message "Valeur déjà saisie!"

mille mille mercis
;0)




Avatar
AV
en vba, comment afficher un message dans dans une plage de cellules a1:b10
de la feuille feuil1 si une valeur existe déja ?


Solution 1 :
Sélection de la plage A1:B10 > Données > Validation > Options > Autoriser :
"Personnalisée > Formule :
=NB.SI($A$1:$B$10;A1)=1
Ajuster ensuite les éventuels messages


Solution 2 :
Clic droit sur l'onglet de feuille > Visualiser le code > Copier/Coller :

Private Sub Worksheet_Change(ByVal zz As Excel.Range)
If Selection.Count > 1 Then Exit Sub
If Intersect(zz, [A1:B10]) Is Nothing Or zz = "" Then Exit Sub
Set C = [A1:B10].Find(zz(1), zz(1))
If C.Address <> zz(1).Address Then
MsgBox "Valeur déjà présente en " _
& C.Address, vbCritical, "Doublon !"
Application.EnableEvents = False
zz = "": zz.Select
Application.EnableEvents = True
'SendKeys "{F2}+{HOME}" 'pour passer en mode édition
End If
End Sub

AV

Avatar
sabatier
il a dit en vba le monsieur : c'est quoi cette solution 1? un excès de
zèle? ah! je commence à en avoir marre de ces MVP ; bon, allez, moi, je
me désabonne, ne supprime pas le fichier .dbx d' OE puisque, pour être
en union avec mon ange et l'abominable FxM, je suis sur NN mais jette
carrément mon PC par la fenêtre, écris à MS pour leur dire que je ne
veux plus de leur distinction, tente de leur rendre des valises entières
de CD et des dizaines de chemises bleu nuit que je n'ai jamais reçus,
les prie de ne m'inviter à Seattle qu'à titre privé avec billet avion en
first, limousine avec chauffeur à dispo, hôtel 5****NN en suite
présidentielle, open bar dans tous les bistrots de la ville sans oublier
une vingtaine de tickets-repas chez MacDo histoire de passer inaperçu,
ce que tout compte fait j'aime le plus...je veux dire : vivre incognito
jps (ex MVP HS qui fonce sur le PC de son fils pour renouer avec cette
drogue de mpfe dont je ne souhaiterais vraiment pas que quelque
québécois, trop souvent énervé mais pas assez enclin à la tolérance, ait
pu être victime d'une overdose)


AV a écrit:
en vba, comment afficher un message dans dans une plage de cellules a1:b10
de la feuille feuil1 si une valeur existe déja ?



Solution 1 :
Sélection de la plage A1:B10 > Données > Validation > Options > Autoriser :
"Personnalisée > Formule :
=NB.SI($A$1:$B$10;A1)=1

Ajuster ensuite les éventuels messages



Solution 2 :
Clic droit sur l'onglet de feuille > Visualiser le code > Copier/Coller :

Private Sub Worksheet_Change(ByVal zz As Excel.Range)
If Selection.Count > 1 Then Exit Sub
If Intersect(zz, [A1:B10]) Is Nothing Or zz = "" Then Exit Sub
Set C = [A1:B10].Find(zz(1), zz(1))
If C.Address <> zz(1).Address Then
MsgBox "Valeur déjà présente en " _
& C.Address, vbCritical, "Doublon !"
Application.EnableEvents = False
zz = "": zz.Select
Application.EnableEvents = True
'SendKeys "{F2}+{HOME}" 'pour passer en mode édition
End If
End Sub

AV






Avatar
Pierre CFI [mvp]
Les ordres sont clairs : Il faut abattre le soldat JPS et tenter de réparer les dégats causés dans le coeur des jolies femmes :o)))

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site perso
http://access.cfi.free.fr
"sabatier" a écrit dans le message de news:
il a dit en vba le monsieur : c'est quoi cette solution 1? un excès de
zèle? ah! je commence à en avoir marre de ces MVP ; bon, allez, moi, je
me désabonne, ne supprime pas le fichier .dbx d' OE puisque, pour être
en union avec mon ange et l'abominable FxM, je suis sur NN mais jette
carrément mon PC par la fenêtre, écris à MS pour leur dire que je ne
veux plus de leur distinction, tente de leur rendre des valises entières
de CD et des dizaines de chemises bleu nuit que je n'ai jamais reçus,
les prie de ne m'inviter à Seattle qu'à titre privé avec billet avion en
first, limousine avec chauffeur à dispo, hôtel 5****NN en suite
présidentielle, open bar dans tous les bistrots de la ville sans oublier
une vingtaine de tickets-repas chez MacDo histoire de passer inaperçu,
ce que tout compte fait j'aime le plus...je veux dire : vivre incognito
jps (ex MVP HS qui fonce sur le PC de son fils pour renouer avec cette
drogue de mpfe dont je ne souhaiterais vraiment pas que quelque
québécois, trop souvent énervé mais pas assez enclin à la tolérance, ait
pu être victime d'une overdose)


AV a écrit:
en vba, comment afficher un message dans dans une plage de cellules a1:b10
de la feuille feuil1 si une valeur existe déja ?



Solution 1 :
Sélection de la plage A1:B10 > Données > Validation > Options > Autoriser :
"Personnalisée > Formule :
=NB.SI($A$1:$B$10;A1)=1

Ajuster ensuite les éventuels messages



Solution 2 :
Clic droit sur l'onglet de feuille > Visualiser le code > Copier/Coller :

Private Sub Worksheet_Change(ByVal zz As Excel.Range)
If Selection.Count > 1 Then Exit Sub
If Intersect(zz, [A1:B10]) Is Nothing Or zz = "" Then Exit Sub
Set C = [A1:B10].Find(zz(1), zz(1))
If C.Address <> zz(1).Address Then
MsgBox "Valeur déjà présente en " _
& C.Address, vbCritical, "Doublon !"
Application.EnableEvents = False
zz = "": zz.Select
Application.EnableEvents = True
'SendKeys "{F2}+{HOME}" 'pour passer en mode édition
End If
End Sub

AV









Avatar
sabatier
:-))))))))))))
jps (et une bise à mon soigneur individuel et portatif)

Pierre CFI [mvp] a écrit:
Les ordres sont clairs : Il faut abattre le soldat JPS et tenter de réparer les dégats causés dans le coeur des jolies femmes :o)))



Avatar
frédéric legeai
mille merci c'est ok !

"Frédéric LEGEAI" a écrit dans le message de
news:cc1n0h$cfd$
bonjour
encore encore moi !
une dernière question :
en vba, comment afficher un message dans dans une plage de cellules a1:b10
de la feuille feuil1 si une valeur existe déja ?

par exemple si en A1 j'ai "bc", et q'en b9 je tape "bc" alors j'ai le
message "Valeur déjà saisie!"

mille mille mercis
;0)




Avatar
FxM
Bonjour Ôh Maître es-HS,

en union avec mon ange et l'abominable FxM, je suis sur NN mais jette


Non mais ça va pas ? Déclaration de guerre à 8h28 du matin ... et pis
quoi encore ? C'est un peu tôt jeune homme ! On pouvait faire bien des
choses en plus du somme ... :o)

Au fait ... pour le NN, ca fait déjà quelques mois que je suis sur
Mozilla et quelques semaines sur Thunderbird, mais tout cela n'est que
détail ... pas assez déprimé pour prendre OE :o)

@+
FxM