XL 2010 Selection multiples a partir de deux fichiers

s_ofie

XLDnaute Nouveau
Bonjour à tous. Merci pour votre accueil.


La problématique est la suivante.
Je travaille sur des modifications de tarifs à l'aide de fichiers basiques que les fournisseurs nous envoient (1200 1300 ref) comprenant des colonnes ref et des colonnes intitulés.

Je souhaiterai si c'est possible isoler dans ce fichier fourniseurs.xlsx les références que je détiens dans mon fichier références internes.xlsx (200-300ref) sans avoir besoin de le faire ligne par ligne (ce qui est ceci dit impossible avec tant de ref) afin de pouvoir recréer un seul fichier qui comprend seulement les références que je possède.
Je voulais savoir si il est possible de faire une recherche globale sans avoir a le faire code par code....

Pour ce faire j'ai une cellule CODE EAN qui est communes aux deux tableaux.

🙏Merci de votre aide 🙏
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour et bienvenue sur le forum,

Lorsque vous avez lu la charte du forum, vous avez certainement noté que vous aviez la possibilité de joindre des fichiers exemples (anonymisés et sans donnée confidentielle) sur le site. Ce qui permet d'être au plus prêt du besoin du demandeur.

De plus écrire un titre en majuscule, c'est sur un forum, comme crier dans un couloir. Cela n'apporte rien d'autre que le soulagement de celui qui crie.

A propos de votre question, je me demande pourquoi vous utilisez encore le format de fichier .xls qui est périmé depuis office 2007.

Cordialement
 
Dernière édition:

s_ofie

XLDnaute Nouveau
Bonjour et bienvenue sur le forum,

Lorsque vous avez lu la charte du forum, vous avez certainement noté que vous aviez la possibilité de joindre des fichiers exemples (anonymisés et sans donnée confidentielle) sur le site. Ce qui permet d'être au plus prêt du besoin du demandeur.

De plus écrire un titre en majuscule, c'est sur un forum, comme crier dans un couloir. Cela n'apporte rien d'autre que le soulagement de celui qui crie.

A propos de votre question, je me demande pourquoi vous utilisez encore le format de fichier .xls qui est périmé depuis office 2007.

Cordialement
Bonjour,

Les réponses ont été modifiées,
Les majuscules dans les titres sont une habitude liée à mon travail . Question de visibilité non pas d'agression. Encore une fois tout dépend du point de vue et de l'habitude que l'on a. Le contenu n'étant pas un contenu 'criant' ni agressif.
J'ai aussi fait une erreur dans la transcription du nom du fichier. Que j'ai également modifié.

Merci d'avoir souligné les dysfonctionnement de mon post.
Je pense que pour le coup la problématique est assez simple pour les experts excel ++++ et ne nécessite pas de visuel. Si cela pose problème je veillerai a trouver une solution.

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Je pense que pour le coup la problématique est assez simple pour les experts excel ++++ et ne nécessite pas de visuel.
si vous le dites. C'est vrai qu'on demande un exemple de fichier pour perdre notre temps et celui du demandeur .

Vous pouvez toujours tester les fonctions NB.SI, EQUIV, RECHERCHEV, AGREGAT, SOMMEPROD etc., tenter une macro, une requête ADODB et beaucoup de choses encore

=NB.SI('Z:\Chemin\Vers\[références internes.xlsx]Feuil1'!$A$1:$A$400;$A$1)
 

job75

XLDnaute Barbatruc
Bonjour s_ofie, Hasco,

Je suppose que "CODE EAN" se trouve dans les 2 colonnes qu'il faut comparer.

Téléchargez les 2 fichiers joints et voyez cette macro dans le fichier fournisseurs.xlsm :
VB:
Sub References_communes()
Dim w As Worksheet, cible1 As Range, fichier$, wb As Workbook, cible2 As Range, d As Object, tablo, i&, x$
'---fichier à comparer---
For Each w In ThisWorkbook.Worksheets
    Set cible1 = w.Cells.Find("CODE EAN", , xlValues, xlWhole)
    If Not cible1 Is Nothing Then Exit For
Next w
If cible1 Is Nothing Then MsgBox "'CODE EAN' introuvable !", 48: Exit Sub
'--- fichier source---
fichier = "références internes.xlsx"
For Each wb In Workbooks
    If LCase(wb.Name) = fichier Then Exit For
Next wb
If wb Is Nothing Then MsgBox "Ouvrez le fichier '" & fichier & "' !", 48: Exit Sub
For Each w In wb.Worksheets
    Set cible2 = w.Cells.Find("CODE EAN", , xlValues, xlWhole)
    If Not cible2 Is Nothing Then Exit For
Next w
If cible2 Is Nothing Then MsgBox "'CODE EAN' introuvable dans '" & fichier & "' !", 48: Exit Sub
'---colonne source--
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
tablo = Intersect(cible2.EntireColumn, w.UsedRange).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    x = CStr(tablo(i, 1))
    If x <> "" Then d(x) = ""
Next i
'---colonne à comparer---
Application.ScreenUpdating = False
Application.Goto cible1 'active la feuille
With cible1.EntireColumn
    .Insert 'colonne auxiliaire
    With Intersect(.Offset(, -1).Resize(, 2), ActiveSheet.UsedRange.EntireRow)
        tablo = .Value
        For i = 1 To UBound(tablo)
            x = CStr(tablo(i, 2))
            If d.exists(x) Then tablo(i, 1) = 1 'repère
        Next
        .Value = tablo 'restitution
        .Columns(1).SpecialCells(xlCellTypeConstants).Select 'sélection recherchée
        .Columns(1).EntireColumn.Delete 'supprime la colonne auxiliaire
    End With
End With
End Sub
Les 2 fichiers doivent être ouverts.

A+
 

Pièces jointes

  • fournisseurs.xlsm
    23.8 KB · Affichages: 0
  • références internes.xlsx
    10 KB · Affichages: 0

Discussions similaires

Réponses
36
Affichages
1 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972