Recherche de valeurs sur plusieurs feuille

Bonjour

Tout d'abord je suis novice, si je comprend la logique du langage, je ne maitrise pas les codes. Pour ainsi dire voilà seulement deux semaines que je me plonge dedans.

Je dois créer un fichier de référencement de produits, jusque là ok. Seulement ces produits sont variés il a nécessité de les classer par catégories et references.

Mon projet était d'avoir une feuille de saisie de données (pour pouvoir entrer les produit et les dispatcher dans les différentes feuilles) et de pouvoir avoir un dernière feuille où par l'indication de la reference on aurait le recapitulatif produit. ou en tout cas un element de recherche.

Pour le formulaire de saisie, j'y suis parvenu, avec un peu plus de boulot je perfectionnerai par la suite

Je suis parvenu a faire une macro pour appeler une image dans une cellule, simple me direz vous, mais pour un total neophyte c'est quasi l'himalaya.

Le principe du Userform avec une combobox n'est pas forcément le top il y a tant de reference que la liste serait longue

Mon idée était en tapant la référence dans la cellule A1 de la feuille de recherche par exemple, une macro explore les références de chaque feuille contenue dans la premiere colonne pour pouvoir me sortir le bon produit.

J'ai exploré pas mal de tutos, j'ai testé pas mal de choses....En l'occurrence j'ai réussi a faire une boucle pour chercher sur une feuille, seulement pour parvenir à le faire sur 5,6 voire plus de feuille, là je n'y arrive pas, je bloque.

J'ai testé plus simple avec une formule RECHERCHEV pour ne pas m'aventurer dans le vba, mais ça bloque, et le plus judicieux pour moi progresser est en fait une bonne fois pour toute de me plonger dedans, j'y serais de toute façon confronté un jour ou l'autre.

Pour le ficher que je met en exemple j'explique:....il y a

en premiere feuille mon test de formulaire,

en second ma feuille de base de donnée (mais inutile pour l'instant

, la feuille avec un bouton où je voulais pour ainsi dire "déclencher" une macro a partir d'une cellule ou l'on rempli la reference on obtient les élément de produit après recherche, c'est sur ce quoi je bute en fait

et enfin le/les feuilles pour l'instant des projets qui recueilles les données dispatchées par le formulaire de départ.

Si quelqu'un pouvait juste m'éclairer sur la partie où je bute ce serait sympa.

Merci.

39classeur1.xlsm (37.08 Ko)

Salut

essai

39classeur11.xlsm (184.84 Ko)

Bonsoir,

tout d'abords merci d'avoir répondu et planché sur mon projet.

D'un premier jet, je dirai que ça offre les fonctionnalités auxquelles je pensais avec moins de macro que j'allais mettre.

Y'a pas à dire quand on maitrise on fait plus de choses de manière moins complexe!

J'ai du coup inspecté aussi le VBA pour voir comment cela s'articule, le but étant bien sûr que j'apprenne aussi. De visu, je comprend la logique, mais vu l'heure je n'ai pas encore tout saisi.

Demain je vais travailler plus profondément ce que vous m'avez proposé pour voir si j'ai bien compris chaque commande et si je peux aussi le modifier pour l'axer plus sur mon projet...

Mais le lien photo chemin de photo déjà ça super, oui je le pensais pas comme ça. pareil pour la petite msgbox.

Donc je décortique cela plus précisément demain et je reviens toucher un mot

Encore merci.

Bonsoir

Bien j'ai potassé toute la journée...y'a pas a dire si on ne connaît pas le vba on rame et on rame et on rame......

Cependant, tout dans ma galère j'arrive à bien progresser je m'épate moi meme , en bidouillant au fur et à mesure...j'ai compris le truc pour l'image, j'arrive a mieux cerner les histoires de variables...(a force de naviguer dedans...)

Bref j'arrive a obtenir à peu près ce que je veux, pour un premier projet ce n'est pas mal, je devrais pouvoir présenter un truc pas trop mauvais, et puis après tout de base ce n'est pas mon métier, je débute, faut pas trop demander

Merci beaucoup pour ce coup de pouce qui m'a énormément aidé!

Salut :

Merci pegase51

et s'il ya une question n'hésiter pas à demander , Je vais répondre si je peux

Bonsoir à nouveau...

Oui en fait j'aurais besoin à nouveau d'un peu d'aide. C'est du détail mais souvent c'est le détail qui fait que l'on se tire les cheveux.

Dans le fichier en test il y a une macro qui permet d'effectuer la recherche en fonction du nom. dont voici l'énoncé complété par mes modification

Sub Macro2()
Application.ScreenUpdating = False
Dim F As Worksheet, cel As Range
Dim Sh As Worksheet, Last As Long
Set Sh = Sheets("recherche")
Sh.Range("A18:K" & Sh.Cells(Rows.Count, 1).End(xlUp).Row + 6).ClearContents
For Each F In Sheets(Array("feuil1", "feuil2", "divers", "ster", "sachet", "sol", "produit"))
Last = F.Cells(Rows.Count, 1).End(xlUp).Row + 1
For Each cel In F.Range("B2:B" & Last)
If CStr(cel) Like "*" & CStr(Sh.Range("B7")) & "*" Then
'permet de faire la recherche aproximative
cel.Resize(, 8).Copy
Sh.Range("B" & Sh.Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues, Transpose:=False
Sh.Range("A" & Sh.Cells(Rows.Count, 1).End(xlUp).Row + 1) = Sh.Cells(Rows.Count, 1).End(xlUp).Row - 4
Sh.Range("J" & Sh.Cells(Rows.Count, 1).End(xlUp).Row) = F.Name
Sh.Range("K" & Sh.Cells(Rows.Count, 1).End(xlUp).Row) = Split(cel.Address, "$")(1) & cel.Row
End If
Next
Next

Application.ScreenUpdating = True

If Sh.Range("A6") = "" Then _
MsgBox "Pas de résultat ressemblant la recherche de  " & Sh.Range("B2").Value, vbInformation, "Recherche"
End Sub

Cette macro fonction je n'ai pas de soucis, la recherche et le collage des valeurs s'effectuent correctement. J'ai compris sur ce point le resize(,8)

J'ai voulu donc par conséquent permettre aussi une recherche par intitulé, mais aussi par référence (donc dans la colonne suivante sur ma feuille) en refaisant un code similaire:

Sub rechref()
Application.ScreenUpdating = False
Dim F As Worksheet, cel As Range
Dim Sh As Worksheet, Last As Long
Set Sh = Sheets("recherche")
Sh.Range("A18:K" & Sh.Cells(Rows.Count, 1).End(xlUp).Row + 6).ClearContents
For Each F In Sheets(Array("feuil1", "feuil2", "divers", "ster", "sachet", "sol", "produit"))
Last = F.Cells(Rows.Count, 1).End(xlUp).Row + 1
For Each cel In F.Range("C2:C" & Last)
'je demande d_inspecter la colonne d_apres ca marche
If CStr(cel) Like "*" & CStr(Sh.Range("B10")) & "*" Then
F.Range("B2:K").Copy
'c_est ici que ca bloque
Sh.Range("C" & Sh.Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues, Transpose:=False
Sh.Range("A" & Sh.Cells(Rows.Count, 1).End(xlUp).Row + 1) = Sh.Cells(Rows.Count, 1).End(xlUp).Row - 4
Sh.Range("J" & Sh.Cells(Rows.Count, 1).End(xlUp).Row) = F.Name
Sh.Range("K" & Sh.Cells(Rows.Count, 1).End(xlUp).Row) = Split(cel.Address, "$")(1) & cel.Row
End If
Next
Next

Application.ScreenUpdating = True

If Sh.Range("A18") = "" Then _
MsgBox "Pas de résultat ressemblant la recherche de  " & Sh.Range("B10").Value, vbInformation, "Recherche"
End Sub

Voilà en gros: c'est ici que ça bloque...Si je met le "cel.resize(,8)" il va faire comme l'autre prendre la cellule et les 8 autre mais j'aurais aimé aussi la cellule précédente, pour avoir toutes les infos.

J'ai tenté de faire F.Range.copy, par exemple, de faire une selection ("B2:K").... bref ce genre de selection et copy, mais ca coince...

Certainement encore une subtilité de langage vba, mais si un coup de main est encore possible....

Merci à vous..


A moins que je ne définisse une autre variable...je vais tenter....

Bonsoir pegase51

Je vais essayer d'expliquer autant que possible

Nous sommes dans : Range("B2")

Range("B2").Offset( , 1) nous donne Range("C2")

Range("B2").Offset(0 , 1) nous donne Range("C2")

Range("B2").Offset( 1) nous donne Range("B3")

Range("B2").Offset( 1, 0 ) nous donne Range("B3")

Range("B2").Offset(1 , 1) nous donne Range("C3")

Range("B2").Offset(1 , 2) nous donne Range("D3")

Range("B2").Offset(2 , 1) nous donne Range("C4")

Nous pouvons utiliser des nombres négatifs : Range("F6").Offset(-2 , 2) nous donne Range("H4")

En général

Range("B2").Offset( X , Y )

X = marcher verticalement vers le bas

Y = marcher horizontalement À droite

Range("B2").Offset(- X , -Y )

  • X = marcher verticalement vers le haut
  • Y = marcher horizontalement À gauche

La fonction ( Resize ) faire presque le même travail mais elle n'accepter pas les chifres négatif

En ce qui concerne votre question

Si vous voulez faire des recherches avec deux conditions

La première condition dans la cellule : B10 ( Intitulé )

Supposons que la deuxième condition dans la cellule : C10 ( Référence )

S’il ya une seule condition nous appliquons :

If CStr(cel) Like "*" & CStr(Sh.Range("B10")) & "*" Then

S’il ya deux conditions nous appliquons :

If CStr(cel) Like "*" & CStr(Sh.Range("B10")) & "*" And CStr(cel.Offset(, 1)) Like "*" & CStr(Sh.Range("C10")) & "*" Then

Pour copier

Nous avons utilisé l’instruction : cel.Resize(, 8).Copy .

Cela veut dire copier les données De la colonne ( B ) à la colonne ( i )

Si nous voulons copier les données De la colonne ( A ) à la colonne ( i ) , Nous utilisions l’instruction :

cel.Offset(0, -1).Resize(, 9).Copy

Bonne chance

OBSERVATION

J'ai oublié de dire

Nous avons utilisé ( cel ) pour la recherche dans la colonne ( B )

Si vous voulez copier les données De la colonne ( A ) à la colonne ( K ) , Nous utilisions l’instruction :

cel.Offset(0, -1).Resize(, 11).Copy

Superbe! oulah a chaque fois ce sont des sensations fortes de débugger un truc avec seulement quelques lettres alors qu'on buche depuis des heures

Mais au moins là, ça y est! j'ai la base de ce que je voulais et ça marche.

Oui en effet pour le resize j'avais adapté, j'ai meme pu constater en bidouillant toute la journée qu'on pouvait même sélectionner de cette manière tout une plage de celle en long et en large.

Très bien expliqué pour la fonction offset, je me demandais en plus ce que ça voulais dire depuis quelques temps et je me disais que le problème venait d'ailleurs.

je vais rebucher encore quelques heures sur mes problèmes d'images et contrôle ActiveX,

Finalement c'est très remue méninge, ça me plait le vba....

Aller je travaille cela et je reviens vous dire, ce que ma responsable pense, et si je suis parvenu a gérer ce système d'apparition d'image.

Encore merci!

Rechercher des sujets similaires à "recherche valeurs feuille"