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.
 

Fichiers joints

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+
 

Fichiers joints

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
Oui avec tous les critères indiqués en B3 le filtre prend tout le tableau source sauf une ligne.

Modifiez la liste en B3 et voyez.

On peut mettre sans inconvénient une liste de codes barres en B3.
 

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).
 

Fichiers joints

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".
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas