Recherche valeur

Bonjour le forum,

Je souhaite réaliser en macro l’équivalent d'une recherche V.

Dans mon fichier joint, je cherche à rapatrier en colonne 70 de l'onglet "Lb_commerciaux" l'information "rayons" qui se trouve en colonne dans l'onglet "liaison".

La valeur qui me permet de faire le lien est en colonne 60 de l'onglet "Lb_commerciaux" et en colonne 1 de l'onglet "liaison".

Sachant que l'onglet liaison peut être mis à jour.

Merci pour votre aide

Salut,

Dans le fichier ci-joint, à chaque fois que tu reviens sur la feuille ''Lb_commerciaux'', sa colonne 70 est actualisée en fonction des modifications de la feuille ''Liaison''.

Pour cette première présentation, je l'ai vidée manuellement, mais dans la pratique, les données sont remplacées si nécessaire.

Amicalement.

Merci beaucoup Yvouille !

Peux tu m' éclairer sur le *1 sur ta ligne de code :

Cells(i, 70) = .Range("B" & WorksheetFunction.Match(Cells(i, 60) * 1, .Range("A:A"), 0))

Merci

Nico

Salut,

Tes cellules de la colonne B de la feuille "Lb_commerciaux" ne sont pas à un format de nombre, mais à un format "Standard", il n'est donc pas possible d'en comparer le contenu avec les nombres de la feuille "Liaison". Je multiplie donc le contenu des ces cellules par 1 afin d'en faire des nombres.

Une autre solution serait de modifier tes formats sur les feuilles, soit afin de comparer des nombres avec des nombres ou des textes avec des textes, mais je ne savais pas dans quelle mesure ça t'aurait dérangé de le faire.

Alors je me suis dis :"Je place un "*1" bien discret et il n'y verra que du feu"

Amicalement.

capture

Super, merci pour tes précisions !

Nico

Salut Yvouille,

Comment peut on gérer le si erreur dans ta macro ?

Si par exemple il n'y à pas de liaison j'aimerai faire apparaître le texte "n'existe pas".

De plus peux tu me montrer comment faire cette macro via en cliquant sur un bouton de macro au lieu de faire apparaître les données quand on active la page ? Pour ma culture, merci !

Nico

SAlut Nico,

Deux réponses d'un coup dans le fichier ci-joint

Au passage : On pourrait remplacer les deux lignes suivantes par la troisième !

DerLig = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row

Amicalement.

Super, merci beaucoup Yvouille

Je vais me renseigner sur ta ligne j = WorksheetFunction.Match(Cells(i, 60) * 1, .Range("A:A"), 0)

Ca reste un peu flou ahah.

En tout cas merci c'est exactement ce que je voulais

Salut,

Lors de ta première présentation, il y avait toujours une valeur ‘’Rayon’’ qui était trouvée pour chaque ‘’Code Chef Produit’’. On pouvait donc retourner SANS CONDITION un ‘’Rayon’’ dans chaque cellule de la colonne 70 de la feuille ‘’Lb_commerciaux’’ par la ligne de code :

Cells(i, 70) = .Range("B" & WorksheetFunction.Match(Cells(i, 60) * 1, .Range("A:A"), 0))

Le passage WorksheetFunction.Match(Cells(i, 60) * 1, .Range("A:A"), 0) renvoyant le numéro de la ligne de la feuille ‘’Liaison’’ sur laquelle on aura trouvé le ‘’Rayon’’

Tu m’as dit ensuite que ce n’était pas certain qu’un ‘’Rayon’’ existe pour chaque ‘’Code Chef Produit’’.

On cherche alors dans un premier temps si le ‘’Rayon’’ existe par le code :

j = WorksheetFunction.Match(Cells(i, 60) * 1, .Range("A:A"), 0)

SI OUI, la variable ‘’j’’ aura une certaine valeur – ce sera le numéro de la ligne de la feuille ‘’Liaison’’ sur laquelle on aura trouvé le ‘’Rayon’’ – et on pourra utiliser ce numéro de ligne pour renvoyer le ‘’Rayon’’ par la ligne :

Cells(i, 70) = .Range("B" & j)

SI NON, la variable ‘’j’’ vaudra 0 car on n’a trouvé aucun ‘’Rayon’’ pour un ‘’Code Chef Produit’’ et on le fera savoir par la ligne

Cells(i, 70) = "N'existe pas"

C’est un peu plus clair ?

Salut Yvouille,

Alors oui merci c'est plus clair !

Pour ton infos, grâce à tes lignes de codes, j'essaie de les utiliser sur mes autres fichiers pour remplacer mes anciennes formules excel !

Dans le fichier ci joint, tout semble presque fonctionner ! Je ne comprends pas pourquoi à la ligne 144 / colonne 38, rien ne s'affiche dans l'onglet "Référentiel"

Quand j'effectue la macro en mode pas à pas, la macro sort de la boucle alors qu'elle ne devrait pas car j = 184 donc est supérieur à zéro !

Si tu peux me donner un coup de main précieux

Merci

Nico

3packs-magasins.xlsm (943.01 Ko)

Salut,

Avec ton code, à la ligne

ElseIf j = WorksheetFunction.Match(Cells(1, a) & (Cells(i, 14)) * 1, .Range("I:I"), 0) Then

tu compares j qui vaut 0 (sinon ton code n’aurait pas été aussi loin) avec la valeur trouvée par la fonction WorksheetFunction.Match(Cells(1, a) & (Cells(i, 14)) * 1, .Range("I:I"), 0), soit 184 selon tes indications.

Jusqu’à la ligne 144, soit la valeur à reporter est trouvée immédiatement, soit elle n’est jamais trouvée et tu contrôles plusieurs fois si 0 = 0 pour fini par indiquer ‘’a préconiser’’ (ce serait plus correcte de mettre une majuscule ‘’A préconiser’’, sinon il faut au moins écrire un accent à à ‘’à préconiser)

Mais à la ligne 144, une valeur est trouvée par la fonction WorksheetFunction.Match(Cells(1, a) & (Cells(i, 14)) * 1, .Range("I:I"), 0) et comme tu indiques ‘’si j qui est égal à zéro est égal à la valeur 184 trouvée par cette fonction '', c’est normal que ça ne fasse rien et que ça passe plus loin (à End if).

Si tout ceci n’est pas très clair, regarde ma correction et tu devais comprendre.

Amicalement.

Salut Yvouille,

C'est compris.

En gros il suffisait de changer mon Elseif en Else dans le code.

Merci beaucoup pour ton aide en tout cas !

Bonne soirée,

Nico

En gros il suffisait de changer mon Elseif en Else dans le code.

Non, c’est quand même un tout petit peu plus compliqué que ça

En changeant le ElseIf par un Else, tu comparerais toujours une valeur de j (qui serait toujours 0) avec une autre valeur recherchée et èventuellement trouvée.

Il faut donc à chaque fois chercher à nouveau la valeur de j, avec chacune des valeurs de base (ci-dessous les différentes valeurs de XXXX), d’où à chaque fois la répétition du passage

……
j = WorksheetFunction.Match(Cells(1, a) & (Cells(i, XXXX)) * 1, .Range("I:I"), 0)
If j > 0 Then
…..

Chaleureusement.

Rechercher des sujets similaires à "recherche valeur"