Valeur non présente dans colonne lors de la saisie

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Paulox
Membre habitué
Membre habitué
Messages : 135
Appréciations reçues : 7
Inscrit le : 26 février 2011
Version d'Excel : 2013

Message par Paulox » 10 septembre 2019, 14:04

Bonjour,

Comment faire pour ouvrir un message d'erreur si lors de la saisie d'un texte (ou d'un nombre), celui-ci n'est pas présent dans une colonne sur une autre feuille ??

Pour résumer :

- J'ai une colonne sur une feuille "Base" avec des valeurs
- Lors de la saisie dans une colonne d'une autre feuille, je voudrais qu'il y ait une vérification automatique de la présente de la valeur saisie
- Si elle est bien dans ma colonne de la feuille "Base" --> RAS
- Si elle n'y est pas, j'ai une fenêtre d'alerte qui s'ouvre

Merci d'avance
Avatar du membre
Xmenpl
Membre impliqué
Membre impliqué
Messages : 2'036
Appréciations reçues : 128
Inscrit le : 16 mai 2018
Version d'Excel : 2003 à 2013

Message par Xmenpl » 10 septembre 2019, 14:47

Bonjour,
Est-ce qu'il sera quand même possible de saisir une valeur qui n'est pas dans la base ou le but est-il de forcer une valeur existante ?

Dans ce cas tu peux créer une liste de validation de données avec ta base comme référence.

Voir exemple si le chiffre saisie existe dans la base alors ok sinon message et impossible de saisir autre chose.
test-validation données.xlsx
(8.76 Kio) Téléchargé 2 fois
Avatar du membre
Paulox
Membre habitué
Membre habitué
Messages : 135
Appréciations reçues : 7
Inscrit le : 26 février 2011
Version d'Excel : 2013

Message par Paulox » 11 septembre 2019, 07:15

Bonjour,

Désolé pour la réponse tardive et merci déjà pour t'intéresser à mon souci :wink:

Il ne doit pas être possible qu'il y ait une valeur en dehors de la base. J'avais bien pensé à la liste de validation que j'utilise sur d'autres tableaux mais ça ne fonctionne pas si on fait un copier/coller de données d'un autre classeur dans ce nouveau tableau.

Là le but est vraiment qu'il y ait une vérification au cours de la saisie, si erreur ouverture d'une boite de dialogue type msgbox.
Avatar du membre
Paulox
Membre habitué
Membre habitué
Messages : 135
Appréciations reçues : 7
Inscrit le : 26 février 2011
Version d'Excel : 2013

Message par Paulox » 11 septembre 2019, 10:47

Pour être plus précis, je souhaiterai qu'il soit possible de vérifier que les colonnes B, E, H, K etc (une colonne sur 3) ne contiennent que les données présentes dans une liste sur un autre onglet (nommé "LISTE" par exemple) ou qu'il n'y ait rien.

Mais il faudrait que ça fonctionne avec un copier/coller issu d'un autre classeur.

Merci d'avance car là je sèche ::o ::(

NB : Le petit "plus" serait que si une valeur de ces colonnes n'est pas présente dans la liste, elle(s) soi(en)t mise(s) en surbrillance ou d'une couleur spécifique pour qu'une correction soit apportée
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'640
Appréciations reçues : 162
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 11 septembre 2019, 11:44

Bonjour Paulox,

Salut Xmenpl, (°v°)°

Une simple MFC sur les colonnes ne suffirait-elle pas ?
test mfc.xlsx
(11.17 Kio) Téléchargé 5 fois
Cordialement,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
Avatar du membre
Paulox
Membre habitué
Membre habitué
Messages : 135
Appréciations reçues : 7
Inscrit le : 26 février 2011
Version d'Excel : 2013

Message par Paulox » 11 septembre 2019, 13:09

Bonjour,

Effectivement ça peut être une solution. J'ai malgré tout approfondi au niveau de la macro et j'en suis là :
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column <> 2 Or Target.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
        Dim Dli As Long
        Dli = Cells(Rows.Count, 1).End(xlUp).Row
    If Application.CountIf(ActiveWorkbook.Sheets("Liste").Range("A1:A999" & Dli), Target) = 0 Then
         MsgBox Target & " n'est pas existant", vbInformation, "ATTENTION"
         Target = ""
    End If

End Sub
J'ai donc mes données sur une feuille "Liste" en colonne A, quand je fais la saisie manuellement ça fonctionne au poil sur ma feuille destination mais ça ne fonctionne pas avec un copier/coller. Je vais peut-être faire un mix de ta proposition et de ce que j'ai fait, sauf si quelqu'un a une solution pour prendre en compte le copier/coller dans la macro ?? Là je ne vois pas du tout.

Merci en tout cas pour cette approche à laquelle je n'avais pas pensé.
Avatar du membre
xorsankukai
Membre impliqué
Membre impliqué
Messages : 1'640
Appréciations reçues : 162
Inscrit le : 7 octobre 2014
Version d'Excel : 2010 FR

Message par xorsankukai » 11 septembre 2019, 13:45

Re,

Un essai par vba...
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Application.Intersect(Target, Range("B:B,E:E,H:H,K:K")) Is Nothing Then
    If Target.Count > 1 Or Target = "" Then Exit Sub
        Dim Dli As Long
        Dli = Cells(Rows.Count, 1).End(xlUp).Row
    If Application.CountIf(ActiveWorkbook.Sheets("Liste").Range("A1:A999" & Dli), Target) = 0 Then
         MsgBox Target & " n'est pas existant", vbInformation, "ATTENTION"
         Target = ""
    End If
   End If
End Sub
Le copier/coller semble fonctionner, à condition de ne copier qu'une valeur à la fois...

Cordialement,
xorsankukai

La connaissance, c’est partager le savoir qui nous fait grandir.
Avatar du membre
Paulox
Membre habitué
Membre habitué
Messages : 135
Appréciations reçues : 7
Inscrit le : 26 février 2011
Version d'Excel : 2013

Message par Paulox » 12 septembre 2019, 07:24

Merci pour cette approche, je vais me débrouiller avec tout ça ;;)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message