XL 2016 Recherche solution retrouver des données

fifilamarmotte

XLDnaute Nouveau
Bonjour, bonjour,
Après plusieurs tentatives, plusieurs tutos je m'adresse à vous car je n'y arrive vraiment pas.
Voilà mon soucis :
Chaque mois je dois extraire en format Excel un liste d'ouvrages (environ 1000 à 1500 ouvrages) de mon logiciel de gestion.
Jusqu'à là tout va très bien.
Le problème est que sur cette liste je souhaite extraire certains ouvrages que je souhaite mettre dans un autre tableau Excel.
Mes ouvrages sont munis de code barre.
Je souhaiterai juste scanner mes codes-barre et que toutes les information de l'ouvrage apparaissent pour éviter de sélectionner dans le tableau de base et faire des copier-coller, ce qui me prendrait énormément de temps.
Je ne sais pas si je suis claire dans mes explication.
Je joins un tableau pour montrer de quoi il s'agit.
Sur Excel je n'ai pas l'onglet DEVELOPPEUR
Merci par avance.
 

Pièces jointes

  • ut1_exemplaire_pilonnes2.xlsx
    335.9 KB · Affichages: 9

fifilamarmotte

XLDnaute Nouveau
Bonjour, bonjour,
Après plusieurs tentatives, plusieurs tutos je m'adresse à vous car je n'y arrive vraiment pas.
Voilà mon soucis :
Chaque mois je dois extraire en format Excel un liste d'ouvrages (environ 1000 à 1500 ouvrages) de mon logiciel de gestion.
Jusqu'à là tout va très bien.
Le problème est que sur cette liste je souhaite extraire certains ouvrages que je souhaite mettre dans un autre tableau Excel.
Mes ouvrages sont munis de code barre.
Je souhaiterai juste scanner mes codes-barre et que toutes les information de l'ouvrage apparaissent pour éviter de sélectionner dans le tableau de base et faire des copier-coller, ce qui me prendrait énormément de temps.
Je ne sais pas si je suis claire dans mes explication.
Je joins un tableau pour montrer de quoi il s'agit.

Merci par avance.

Erreur de ma part j'ai bien l'onglet DEVELOPPEUR
 

job75

XLDnaute Barbatruc
Bonjour fifilamarmotte, JB,

Le travail de JB est très complet mais on peut aussi faire quelque chose de simple, voyez cette macro dans le fichier joint :
VB:
Private Sub Worksheet_Activate()
Dim wb As Workbook
Application.ScreenUpdating = False
Rows("2:" & Rows.Count).Delete 'RAZ
Sheets("Pilon").Visible = xlSheetVisible 'au cas où...
Sheets("Pilon").Copy 'document auxiliaire
Set wb = ActiveWorkbook
With wb.Sheets(1)
    wb.Names.Add "Crit", IIf(.[B3] = "", "*", Split(.[B3], ", ")) 'nom défini (matriciel)
    wb.Names.Add "Date1", CDbl(CDate(Mid(.[B4], 7, 10))) 'nom défini
    wb.Names.Add "Date2", CDbl(CDate(Right(.[B4], 10))) 'nom défini
    .Rows(11).Clear 'sécurité, pour bien isoler le tableau
    With .[A12].CurrentRegion.Resize(, 11)
        .Columns(2).UnMerge 'défusionne
        If Application.CountBlank(.Columns(2)) Then .Columns(2).SpecialCells(xlCellTypeBlanks) = "=R[-1]C" 'remplit les cellules vides
        .Columns(2) = .Columns(2).Value 'supprime les formules
        .Cells(2, 13) = "=SUMPRODUCT(COUNTIF(A13:K13,""*""&Crit&""*""))*(I13>=Date1)*(I13<=Date2)" 'formule de la zone de critère
        .AdvancedFilter xlFilterCopy, .Cells(1, 13).Resize(2), Me.[A1:K1] 'filtre avancé
    End With
End With
wb.Close False 'fermeture du document auxiliaire
End Sub
A+
 

Pièces jointes

  • ut1_exemplaire_pilonnes(1).xlsm
    346.1 KB · Affichages: 2
Dernière édition:

fifilamarmotte

XLDnaute Nouveau
Bonjour fifilamarmotte, JB,

Le travail de JB est très complet mais on peut aussi faire quelque chose de simple, voyez cette macro dans le fichier joint :
VB:
Private Sub Worksheet_Activate()
Dim wb As Workbook
Application.ScreenUpdating = False
Rows("2:" & Rows.Count).Delete 'RAZ
Sheets("Pilon").Visible = xlSheetVisible 'au cas où...
Sheets("Pilon").Copy 'document auxiliaire
Set wb = ActiveWorkbook
With wb.Sheets(1)
    wb.Names.Add "Crit", Split(.[B3], ", ") 'nom défini (matriciel)
    wb.Names.Add "Date1", CDbl(CDate(Mid(.[B4], 7, 10))) 'nom défini
    wb.Names.Add "Date2", CDbl(CDate(Right(.[B4], 10))) 'nom défini
    .Rows(11).Clear 'sécurité, pour bien isoler le tableau
    With .[A12].CurrentRegion.Resize(, 11)
        .Columns(2).UnMerge 'défusionne
        If Application.CountBlank(.Columns(2)) Then .Columns(2).SpecialCells(xlCellTypeBlanks) = "=R[-1]C" 'remplit les cellules vides
        .Columns(2) = .Columns(2).Value 'supprime les formules
        .Cells(2, 13) = "=SUMPRODUCT(COUNTIF(A13:K13,""*""&Crit&""*""))*(I13>=Date1)*(I13<=Date2)" 'formule de la zone de critère
        .AdvancedFilter xlFilterCopy, .Cells(1, 13).Resize(2), Me.[A1:K1] 'filtre avancé
    End With
End With
wb.Close False 'fermeture du document auxiliaire
End Sub
A+
Bonjour,
Merci de m'apporter une alternative. J'ai ouvert votre fichier mais sur les deux feuilles, il y a exactement la même chose. Alors peut-être que je fais mal les choses.
Car ce que je souhaite c'est scanner le code barre de mes ouvrages et que grace à la liste excel je puisse retrouver toutes les informations car je ne garde pas tous les ouvrages et je suis obligée de fournir une liste lors du don d'ouvrage.

Bonne journée.
 

job75

XLDnaute Barbatruc
Précision importante : pour pouvoir filtrer sur les codes barres il faut qu'ils soient sous forme de textes comme sur le fichier joint.

Par ailleurs je viens de modifier mon post #5 car il y avait un bug quand la cellule B3 était vide :
VB:
wb.Names.Add "Crit", IIf(.[B3] = "", "*", Split(.[B3], ", ")) 'nom défini (matriciel)
 

fifilamarmotte

XLDnaute Nouveau
Re, c'est trop compliqué je ne comprends pas.
Je veux juste, d'après le tableau de base créer une autre feuille et que lorsque je scanne mon code barre toutes les informations du tableau de base (Pilon) apparaissent dans l'autre feuille.
Même ce que JB, m'a fait est trop compliqué. Je ne suis vraiment pas experte, loin de là.
En tout cas merci d'avoir pris le temps.
Bonne journée.
 

job75

XLDnaute Barbatruc
Re, c'est trop compliqué je ne comprends pas.
Mais non ce n'est pas très compliqué, accrochez-vous.

Pour terminer, même s'il y a des nombres en colonne A (ou colonnes E ou K) on peut arriver à filtrer en modifiant la formule :
VB:
.Cells(2, 13) = "=SUMPRODUCT(COUNTIF(A13:K13,REPT(""*"",ISERR(-Crit))&Crit&REPT(""*"",ISERR(-Crit))))*(I13>=Date1)*(I13<=Date2)" 'formule de la zone de critère
Fichier (2).
 

Pièces jointes

  • ut1_exemplaire_pilonnes(2).xlsm
    345.9 KB · Affichages: 4

job75

XLDnaute Barbatruc
Pour ce qui est de la douchette qui scanne les codes barres.

Normalement la cellule B3 étant sélectionnée la douchette y entre chaque code scanné.

Il faut donc concaténer les entrées et cela se fera grâce à cette macro placée dans le code de la feuille "Pilon" de ce fichier (3) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B3]) Is Nothing Then Exit Sub
Dim mem$
mem = CStr([B3]) 'mémorise l'entrée
If mem = "" Then Exit Sub 'si l'on veut effacer le contenu de B3
With Application
    .EnableEvents = False 'désactive les évènements
    .Undo 'annule l'entrée
    [B3] = IIf([B3] = "", "", [B3] & ", ") & mem 'entre le nouveau texte concaténé
    .EnableEvents = True 'réactive les évènements
End With
End Sub
Ensuite activez la feuille "Filtre".
 

Pièces jointes

  • ut1_exemplaire_pilonnes(3).xlsm
    348.4 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 896
Membres
101 833
dernier inscrit
sandra25