Microsoft 365 Correspondance de mot dans une cellule

willschmidt

XLDnaute Nouveau
Bonjour à tous,

J'ai du mal à trouver quelle formule correspond à ma recherche !

Je voudrais reproduire dans la colonne G du fichier exple1 la colonne B du fichier exple2, avec comme condition :
- si dans une cellule de la colonne A du fichier exple1 on retrouve ce qu'il y a écrit dans un des cellules de la colonne A du fichier exple2 (par exemple dans mes fichiers on retrouve le mot SEREGENTI à la fois dans la celulle A4 du fichier exple 1 et dans la celulle A8 fichier exple2)
- alors on réécrit la cellule de la colonne B du fichier exple2 dans la cellule G du fichier exple2 (on réécrit en G4 du fichier exple1 ce qu'il y a écrit en B8 du fichier exple 2)

Merci d'avance, j'espère avoir été assez clair dans mes explications.
Bonne journée :)
 

Pièces jointes

  • Exple2.xlsx
    9.5 KB · Affichages: 4
  • Exple1.xlsx
    9.4 KB · Affichages: 4

vgendron

XLDnaute Barbatruc
Hello une solution "simple" serait par Power Query
1) importer le fichier Exemple2 (ne faire que la connexion)
2) importer le fichier Ex1
séparer la première colonne avant et après le 1er espace==> pour extraire le fournisseur
3) fusionner les deux tables
 

Pièces jointes

  • Exple1.xlsx
    21.8 KB · Affichages: 1

job75

XLDnaute Barbatruc
Bonsoir willschmidt, vgendron,

Téléchargez les 2 fichiers joints dans le même dossier (le bureau) et ouvrez Exple1.xlsm.

La macro dans le code de la feuille :
VB:
Private Sub Workbook_Activate()
Dim fichier$, tablo, i&, j As Variant
fichier = ThisWorkbook.Path & "\Exple2.xlsx" 'modifiable
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With Workbooks.Open(fichier)
    tablo = .Sheets(1).[A1].CurrentRegion.Resize(, 2)
    .Close False
End With
[A1].CurrentRegion.Columns(7).Offset(1).ClearContents 'RAZ
For i = 2 To UBound(tablo)
    j = Application.Match("*" & tablo(i, 1) & "*", Columns(1), 0)
    If IsNumeric(j) Then Cells(j, 7) = tablo(i, 2)
Next
Columns(7).AutoFit 'ajustement largeur
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle s'exécute automatiquement quand on ouvre ou active le fichier Exple1.xlsm.

A+
 

Pièces jointes

  • Exple1.xlsm
    16.4 KB · Affichages: 2
  • Exple2.xlsx
    9.5 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour le forum,

On peut préférer affecter la macro à un bouton :
VB:
Sub MAJ()
Dim fichier$, tablo, i&, j As Variant
fichier = ThisWorkbook.Path & "\Exple2.xlsx" 'modifiable
Application.ScreenUpdating = False
With Workbooks.Open(fichier)
    tablo = .Sheets(1).[A1].CurrentRegion.Resize(, 2)
    .Close False
End With
[A1].CurrentRegion.Columns(7).Offset(1).ClearContents 'RAZ
For i = 2 To UBound(tablo)
    j = Application.Match("*" & tablo(i, 1) & "*", Columns(1), 0)
    If IsNumeric(j) Then Cells(j, 7) = tablo(i, 2)
Next
Columns(7).AutoFit 'ajustement largeur
End Sub
A+
 

Pièces jointes

  • Exple1.xlsm
    18.3 KB · Affichages: 2
  • Exple2.xlsx
    9.5 KB · Affichages: 2

Discussions similaires

Réponses
10
Affichages
368
Réponses
5
Affichages
284

Statistiques des forums

Discussions
315 085
Messages
2 116 075
Membres
112 650
dernier inscrit
badi44