[RESOLU] Macro de validation de données

  • Initiateur de la discussion Initiateur de la discussion tibel6
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

tibel6

XLDnaute Nouveau
Bonjour à tous,
Je suis en train de créer un fichier me permettant de dresser un inventaire d'échantillons. Je souhaiterais afficher la liste des valeurs possibles en tapant les 1ère lettres. J'ai donc suivi l'excellent tuto trouvé sur le site suivant :
Listes en cascade

Néanmoins, cette technique ne permet pas d'empêcher à l'utilisateur d'entrer une valeur qui n'est pas sur la liste. Le tuto propose donc l'ajout de la macro ci-dessous :

Pour empêcher la saisie d'un nom qui n'existe pas dans la liste Noms

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
If Target <> "" Then
On Error Resume Next
Set temp = [noms].Find(Target.Value, LookAt:=xlWhole)
If Err = 50290 Then Exit Sub
If temp Is Nothing Then Application.Undo
End If
End If
End Sub

Mon fichier n'est pas organisé pareil que celui de l'exemple puisque les cellules à vérifier sont en colonne B, de B16 à B105 pour être plus précis. J'ai changé Target.Column = 2 mais ensuite je suis bloqué !
Merci par avance pour l'aide que vous pourrez m'apporter.

PS: merci de m'expliquer votre solution pour que je puisse progresser !
 

Pièces jointes

Dernière édition:
Re : Macro de validation de données

J'ai oublié de préciser qu'il faut absolument que la macro ne concerne que les lignes à partir de la ligne 16.
Merci

Edit : J'ai trouvé pour ça voilà le nouveau code que j'utilise, le problème étant que ça me supprime tout même si le nom est dans la liste :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Row > 15 And Target.Count = 1 Then
If Target <> "" Then
On Error Resume Next
Set temp = [noms].Find(Target.Value, LookAt:=xlWhole)
If Err = 50290 Then Exit Sub
If temp Is Nothing Then Application.Undo
End If
End If
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
444
Réponses
1
Affichages
415
Réponses
7
Affichages
287
Retour