Recherche de contenu existant dans une même colonne

Bonjour,

Je pensais trouver rapidement une réponse sur la toile mais non finalement.

Dans le fichier ci-joint, je cherche à savoir si chaque nouveau code existe lorsque je le saisis.

Un "oui" doit donc apparaître sur ce même code est présent dans une autre cellule de cette même colonne.

Merci bien pour votre aide.

10classeur1.xlsx (8.56 Ko)

Bonjour,

Je te propose cette solution:

Les différents NB.SI.ENS comptent le nombre de cellules qui:

  • commencent par le code suivi d'un espace
  • finissent par le code
  • contiennent le code entouré d'espaces
  • sont égales au code

Je vérifie ensuite si cette valeur est supérieure à 1 (la cellule actuelle).

Bonjour,

tu peux essayer cette formule, elle devrait faire le job.

=SI(NB.SI(A:A;"*" & A6 &"*")>1; "Oui";"")

EDIT : Il semblerait que tu as été plus rapide au moi @AuSecour

Cordialement.

Bonjour,

tu peux essayer cette formule, elle devrait faire le job.

=SI(NB.SI(A:A;"*" & A6 &"*")>1; "Oui";"")

Cordialement.

Bonjour

je réagis à ton message parce que j'étais partis pour présenter cette solution, ça te fera des erreurs si par exemple quand tu cherches ML02, tu trouves TML02, qui contient bien ML02

Merci déjà.

@Ausecour

Si je recopie ta formule en C7, j'obtiens "oui" donc y'a un soucis quelque part.

@vince1512

Ça me semble tout bon

EDIT : ah mince, bien vu @Ausecour

Effectivement,

je ne devrais pas m’étendre au formule (pour donner une idée de mon niveau en formule j'ai découvert NB.SI en répondant à ce sujet )

Au moins ca me donne l'impression d'apprendre en tout cas

Cordialement.

Merci déjà.

@Ausecour

Si je recopie ta formule en C7, j'obtiens "oui" donc y'a un soucis quelque part.

En effet, petite erreur de calcul de ma part, la cellule actuelle est égale au code, et finit bien par le code, ce qui fera 2, et non 1, j'ai remplacé >1 par >2 et ça marche:

Effectivement,

je ne devrais pas m’étendre au formule (pour donner une idée de mon niveau en formule j'ai découvert NB.SI en répondant à ce sujet )

Au moins ca me donne l'impression d'apprendre en tout cas

Cordialement.

Pas de souci

J'ai appris à coder en VBA en aidant des personnes sur des sujets de VBA justement, tu peux apprendre en aidant les gens et en regardant les contributions des autres membres

Maintenant c'est à mon tour de t’embêter

Ta formule ne fonctionnerai pas dans le cas ou on rentre "IK03 / B003" par exemple car il va vérifier l'existence de "IK03 / B003" et non IK03 puis B003. Mais là c'est vraiment compliqué ...

je me suis heurté au même problème avec mon prototype.

=SI(OU(NB.SI(A:A;"* " & A4 &"*")>1;NB.SI(A:A;"*" & A4 &" *")>1;NB.SI(A:A;"*" & A4 &"*")>1);"Oui";"")

Top, merci @Ausecour

@vince1512 En effet mais ça restera très très marginal dans mon fichier réel.

Je suis preneur de mieux mais ça répond à 99,99% de ma demande

Bonne journée.

Maintenant c'est à mon tour de t’embêter

Ta formule ne fonctionnerai pas dans le cas ou on rentre "IK03 / B003" par exemple car il va vérifier l'existence de "IK03 / B003" et non IK03 puis B003. Mais là c'est vraiment compliqué ...

je me suis heurté au même problème avec mon prototype.

=SI(OU(NB.SI(A:A;"* " & A4 &"*")>1;NB.SI(A:A;"*" & A4 &" *")>1;NB.SI(A:A;"*" & A4 &"*")>1);"Oui";"")

Dans ce cas je ne vois qu'une solution, une fonction personnalisée:

Code de la fonction utilisée:

Function estDoublon(valeur_vérifiée As Range, plage_vérification As Range) As Boolean
Dim tableau As Variant, tabSplit1 As Variant, tabSplit2 As Variant
Dim ligExclue As Long

Application.Volatile

'vérifications
If valeur_vérifiée.Count > 1 Then Exit Function
If plage_vérification.Areas.Count > 1 Then Exit Function

'initialisations
tabSplit1 = Split(valeur_vérifiée, "/")
tableau = plage_vérification
If Not Intersect(valeur_vérifiée, plage_vérification) Is Nothing Then
    ligExclue = Intersect(valeur_vérifiée, plage_vérification).Row - plage_vérification.Row + 1
End If

'parcours de la plage vérification par lignes et colonnes
For i = LBound(tableau, 1) To UBound(tableau, 1)
    If Not i = ligExclue Then
        For j = LBound(tableau, 2) To UBound(tableau, 2)
            'séparation des codes
            tabSplit2 = Split(tableau(i, j), "/")

            'parcours des tableaux splités
            For h = LBound(tabSplit1, 1) To UBound(tabSplit1, 1)
                For x = LBound(tabSplit2, 1) To UBound(tabSplit2, 1)
                    If Trim(tabSplit1(h)) = Trim(tabSplit2(x)) Then
                        estDoublon = True
                        Exit Function
                    End If
                Next x
            Next h
        Next j
    End If
Next i
End Function

Une seule chose à dire : merci !

Rechercher des sujets similaires à "recherche contenu existant meme colonne"