Comparaison/extraction

  • Initiateur de la discussion sarah
  • Date de début
S

sarah

Guest
Bonjour,
Pourriez vous m'aider sur ce sujet:
j'ai 2 feuilles dans 1 fichier excel.
2° feuille, de A1 à A55: liste de noms de fournisseurs
1° feuille colonne A: texte dans lequel on retrouve le noms des fournisseurs.
ex:
dans A1: machine à café MELITTA
dans A2: MEIKO machine à laver
....
Les noms n'ont aucune place fixe, ils peuvent être au début, à la fin ou au milieu du texte.

Je cherche donc une macro qui:
*compare le texte de la feuille 1 avec la liste de la feuille 2,
*si le nom existe dans le texte de la feuille 1, alors le nom est indiqué dans la colonne B de la feuille 1.

Une idée?
Merci pour votre aide.
sarah
 
S

sarah

Guest
oui si avec une formule c'est possible sinon une macro.

J'ai mis en pièce jointe un extrait du fichier.
merci
Sarah
[file name=fornisseurs.zip size=3038]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/fornisseurs.zip[/file]
 

Pièces jointes

  • fornisseurs.zip
    3 KB · Affichages: 21
P

Papaye

Guest
Bonjour Sarah,

Essaye avec ce classeur ...

Papaye [file name=fornisseurs_20060509135842.zip size=9044]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/fornisseurs_20060509135842.zip[/file]
 

Pièces jointes

  • fornisseurs_20060509135842.zip
    8.8 KB · Affichages: 28
S

sarah

Guest
waou! super. ca marche vraiment bien, merci beaucoup mais j'avoue que j'y comprend rien!!

Et avec une formule, tu crois que ce serait possible?
J'ai essayer avec VLOOKUP. avec ISNUMBER mais pas de résultats satisfaisants.

sarah
 
P

Papaye

Guest
En clair :

Sub totoche() 'le nom de ta macro

Sheets('Sheet2').Activate 'je vais sur la feuille 2
NbFournisseur = ActiveSheet.UsedRange.Rows.Count 'je compte le nombre de fournisseur

ReDim tab_fournisseur(NbFournisseur) 'je crée un tableau avec autant de
'lignes que de fournisseurs
For i = 1 To NbFournisseur 'je mets dans ce tableau le nom de tes fournisseurs
tab_fournisseur(i) = Range('A' & CStr(i)).Value
Next i

Sheets('Sheet1').Activate 'je vais sur la feuille 1
NbProduit = ActiveSheet.UsedRange.Rows.Count 'je compte le nombre de produits

For i = 1 To NbProduit 'pour chaque produit
For j = 1 To NbFournisseur 'et pour chaque fournisseur
If InStr(1, Range('A' & CStr(i)).Value, tab_fournisseur(j), vbTextCompare) > 0 Then
Range('B' & CStr(i)).Value = tab_fournisseur(j)
End If 'si je trouve la chaîne de caractère du nom du fournisseur dans ton
Next j 'ton nom de produit (le n° de caractère trouvé est >0)
Next i 'je mets le nom de ton fournisseur en cellule B

End Sub

Il doit y avoir une autre solution en utilisant des formules matricielles ... Mais je n'ai jamais rien compris à leurs utilisations.

Papaye
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Avec une formule matricielle, à valider par ctrl, maj et entrée
et Estnum(Cherche()) [file name=MarquesSarah.zip size=3587]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MarquesSarah.zip[/file]
 

Pièces jointes

  • MarquesSarah.zip
    3.5 KB · Affichages: 51

Discussions similaires

Réponses
5
Affichages
143

Statistiques des forums

Discussions
312 217
Messages
2 086 352
Membres
103 195
dernier inscrit
martel.jg