Recherche Valeur dans X onglet

Bonjour,

Je fais suite a un ancienne demande sur une fonction "Erreur su formule SI(ESTERREUR(RECHERCHEV(..... "

Voila les demandes évolue et donc là mon petit souci est de pouvoir effectuer une comparaison mais dans l'autre sens. Je m'explique.

Dans mon fichier, j'ai un Onglet "Listing" qui représente une liste de BL avec un poids. (possibilité d'avoir le même BL avec plusieurs poids)

Dans les autres Onglet j'ai des lignes avec un Num de BL est un Poids. (il faut que le BL correspond au poids pour chaque ligne de mes onglets)

Maintenant que cela fonctionne, je souhaite effectuer une vérification inverse, c'est a dire de pouvoir savoir dans mon onglet listing si celle ci existe bien dans l'un de mes autres onglet !

Le but est de pouvoir faire une vérification dans les deux sens.

Merci a vous de partager vos connaissance

Franck

est il possible de faire un truc comme ça :

=SI(ESTERREUR(EQUIV(A3&B3;'043'!D:D&'043'!F:F;0));"";SI(ESTERREUR(EQUIV(A3&B3;'043'!D:D&'660'!F:F;0));"";SI(ESTERREUR(EQUIV(A3&B3;'043'!D:D&'603-0994'!F:F;0));"";"OK")

Mais cela ne fonctionne pas, je pense avoir une erreur avec le résultat si Vrai, mais bon là je bug...

Merci de votre aide

Franck

Bonjour Franck, bonjour le forum,

Une proposition VBA avec le code ci-dessous :

Sub Macro1()
Dim L As Object 'déclare la variable L (onglet Listing)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim I As Integer 'déclare la variable I (Incrément)
Dim O As Object 'déclare la variable O (Onglets)
Dim RC As Range 'déclare la variable RC (Recherce en Colonne)
Dim PA As String 'déclare la variable PA (Première Adresse)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim RL As Range 'déclare la variable RL (Recherche en Ligne)

Set L = Sheets("listing") 'définit l'onglet L
DL = L.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet L
TC = L.Range("A1:B" & DL) 'définit le tableau de cellules TC
For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes du tableau TC en partant de la seconde
    If TC(I, 2) <> 0 Then 'condition 1 : si le poids n'est pas vide
        For Each O In Sheets 'boucle 2 sur tous les onglets du classeur
            If O.Name <> L.Name Then 'condition 2 : si l'onglet n'est pas l'onglet "listing"
                'définit la recherche RC (recherche NumBL identique dans la colonne 4 (=D) de l'onglet O)
                Set RC = O.Columns(4).Find(TC(I, 1), , xlValues, xlWhole)
                If Not RC Is Nothing Then 'condition 3 : si il existe au moins une occurrence trouvée
                    PA = RC.Address 'définit l'adresse PA de la première occurrence trouvée
                    Do 'exécute
                        LI = RC.Row 'définit la ligne LI de l'occurrence trouvée
                        'définit la recherche RL (recherche poids identique dans la ligne LI de l'onglet O)
                        Set RL = O.Rows(LI).Find(TC(I, 2), , xlValues, xlWhole)
                        'si il existe au moins une occurrence trouvée, définit la valeur de la cellule en colonne 4 (=D) de la ligne I de l'onglet L
                        If Not RL Is Nothing Then L.Cells(I, 4).Value = L.Cells(I, 4).Value & "Existe dans l'onglet " & O.Name & " cellule " & RL.Address(0, 0) & " "
                    Loop While Not RC Is Nothing And RC.Address <> PA 'boucle tant qu'il existe de nouvelles occurrences de RC ailleurs qu'en PA
                End If 'fin de la condition 3
            End If 'fin de la condition 2
        Next O 'prochaine onglet de la boucle 2
    End If 'fin de la condition 1
Next I 'prochaine onglet de la boucle 2
End Sub

Si tous les NumBL ne se trouvent pas dans la colonne D, se code ne sera plus fonctionnel !

Merci pour ce code.

Mais voilà, tous mes num BL sont bien dans la colonne D mais les poids ne sont pas tous dans la colonne F (des onglets 043, 660...)

après, ce code très bien expliqué, je dois le mettre dans l'onglet "listing" mais ou est affiché le résultat ?

Merci

Franck


Peux ton créer un bouton pour exécuter cette macro ?

et quand je la lance plusieurs fois, il me m'est le résultats plusieurs fois, Logique je dirais mais est il possible depuis un Bouton, de lancer cette macro mais avant qu'elle s'exécute, de supprimer le contenue du précédent résultat ?

Merci

Franck

Bonjour Franck, bonjour le forum,

Non, le code doit être mis dans un module standard (Module1 par exemple), Le résultat s'affiche dans la colonne D de l'onglet listing. J'avais remarqué que le poids ne se trouvait pas toujours dans la même colonne et la macro prend cette anomalie en compte...

Bonjour Franck, bonjour le forum,

Non, le code doit être mis dans un module standard (Module1 par exemple), Le résultat s'affiche dans la colonne D de l'onglet listing. J'avais remarqué que le poids ne se trouvait pas toujours dans la même colonne et la macro prend cette anomalie en compte...

19kisscoll-v01.zip (32.97 Ko)

Ok et merci

J'ai rajouter un bouton pour exécuter la macro.

Mais est il possible d'effectuer un vidage de la colonne D de l'onglet "Listing" avant l'execution de la macro

Car si je clique plusieurs fois sur le bouton, le résultat vient ce mettre au bout du premier résultat.

Merci de ton aide

Franck

25kisscoll-v02.zip (35.36 Ko)

je pense que c'est ma dernière question,

Comment je peux faire pour modifier la colonne de résultat dans l'onglet "listing"

sur ta macro.

Merci a vous et bon Week end .....

Franck

Bonjour Franck, bonjour le forum,

J'ai rajouté la ligne :

L.Columns(4).Clear 'efface la colonne 4 (=D)
21kisscoll-v03.zip (35.66 Ko)
Rechercher des sujets similaires à "recherche valeur onglet"