Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tester la présence d'une valeur dans une colonne

  • Initiateur de la discussion Initiateur de la discussion natorp
  • 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 !

natorp

XLDnaute Barbatruc
Bonsoir à toutes et tous

J'aimerais tester la présence d'une valeur saisie dans une colonne,
si elle est présente on stoppe
si elle est absente on continue et on l'ajoute à la colonne testée

voir fichier joint

merci de votre aide, cordialement
Gérard

PS, merci de mettre le code dans le message de réponse ou dans la feuille excel, demain je serais au boulot et le code est effacé par le filtre de mon entreprise
 

Pièces jointes

Re : Tester la présence d'une valeur dans une colonne

Bonsoir Gérard,
voici une possibilité.

VB:
Sub Test()

Dim Valeur_Test As String
Dim DerniereLigne As Integer
Dim Lig

Valeur_Test = Cells(1, 3).Value 'La valeur qu'on souhaite tester

DerniereLigne = Cells(65536, 1).End(xlUp).Row 'On va aller trouver la dernière ligne de la colonne A

'On va voir si on trouve la valeur testée.
Set Lig = Range(Cells(1, 1), Cells(DerniereLigne, 1)).Find(Valeur_Test, LookIn:=xlValues, LookAt:=xlWhole)
If Not Lig Is Nothing Then
    Exit Sub 'Si on la trouve, alors on sort de la macro
Else
    Cells(DerniereLigne + 1, 1).Value = Valeur_Test 'Sinon, on l'ajoute à la liste.
End If


End Sub

Bonne soirée,

Étienne
 
Re : Tester la présence d'une valeur dans une colonne

Etienne,

l'idée serait plutôt de tester en direct la saisie

si le mot saisi existe dans la colonne A alors on reste sur C1 et l'utilisateur est obligé d'en saisir un autre, sinon on passe à C2 et le mot et ajouté à la fin de la liste en colonne A

cordialement, Gérard
 
Re : Tester la présence d'une valeur dans une colonne

Bonsoir Gérard,
voici une version qui devrait remplir votre besoin, du moins, je l'espère.

VB:
Sub Test()

Dim Valeur_Test As String
Dim DerniereLigne As Integer
Dim Lig

Valeur_Test = Cells(Cells(65536, 1).End(xlUp).Row, 3).Value 'La valeur qu'on souhaite tester

DerniereLigne = Cells(65536, 1).End(xlUp).Row 'On va aller trouver la dernière ligne de la colonne A

'On va voir si on trouve la valeur testée.
Set Lig = Range(Cells(1, 1), Cells(DerniereLigne, 1)).Find(Valeur_Test, LookIn:=xlValues, LookAt:=xlWhole)
If Not Lig Is Nothing Then
    Cells(Cells(65536, 1).End(xlUp).Row, 3).Select
Else
    Cells(DerniereLigne + 1, 1).Value = Valeur_Test 'Sinon, on l'ajoute à la liste.
    Cells(Cells(65536, 1).End(xlUp).Row + 1, 3).Select
End If


End Sub

Cordialement,

Étienne
 
Re : Tester la présence d'une valeur dans une colonne

Bonsoir natorp, Etienne 🙂

Au cas où, une autre approche, avec ce code (à placer dans le code de la feuille):
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$1" Then
        If Application.WorksheetFunction.CountIf([A:A], UCase(Target.Value)) = 0 Then
            Cells(Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row, 1) = Target.Value
        End If
    End If
End Sub

Bonne soirée 🙂

mth
 
Dernière édition:
Re : Tester la présence d'une valeur dans une colonne

Bjr Etienne et mth

l'idée de mth est le bonne piste, je souhaiterais juste pouvoir ajouter un msgbox :
si le texte saisi en C1 existe dans la colonne A alors on efface C1 et on oblige à en saisir un autre

Merci de votre aide, cordialement
Gérard
 
Re : Tester la présence d'une valeur dans une colonne

Re

en fait j'ai essayé avec ça :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$D$4" Then
        If Application.WorksheetFunction.CountIf([A:A], UCase(Target.Value)) <> 0 Then
        Target.Cells = ""
        Range("D4").Select
        MsgBox ("Déjà utilisé !")
        Exit Sub
        ElseIf Application.WorksheetFunction.CountIf([A:A], UCase(Target.Value)) = 0 Then
            Cells(Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row, 1) = Target.Value
            Cells(Sheets("Feuil1").Range("b1000").End(xlUp).Row + 3, 7) = Target.Value
            Range("D4").Select
        End If
    End If
End Sub

mais je n'arrive pas à fermer la msgbox (je pense qu'elle teste les 65000 lignes de la colonne A), y a-t-il une autre solution ?

merci de votre aide, cordialement
Gérard
 
Re : Tester la présence d'une valeur dans une colonne

Salut

à tester
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$D$4" Or Target.Count > 1 Then Exit Sub
  If Target = "" Then Exit Sub 'pour éviter des appels successifs
  Dim Dli As Long
  Dli = Cells(Rows.Count, 1).End(xlUp).Row
  If Application.CountIf(Range("A1:A" & Dli), Target) > 0 Then
    MsgBox Target & " est déjà dans la liste", vbInformation, "pas accepté :"
    Target = ""
  Else
    Cells(Dli + 1, 1) = Target
    Cells(Sheets("Feuil2").Range("B1000").End(xlUp).Row + 3, 7) = Target
    '----- OU, pour écrire en Feuil2
    'With Sheets("Feuil2")
    '  .Cells(.Range("B1000").End(xlUp).Row + 3, 7) = Target
    'End With
  End If
  Target.Select
End Sub
 
- 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
148
Réponses
9
Affichages
444
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…