sélectionner des données d'une autre feuille

beurklesharicots

XLDnaute Nouveau
Bonjour,
Je recherche à établir un bordereau de livraison dans "feuille 2". Ce bordereau irait chercher les informations dans une base de données logée dans "feuille 1". Les critères de sélection serait la date (de telle date à telle date) et le nom du client.
Je pourrais faire un filtre dans ma base et copier/coller vers la feuille bordereau, mais en automatisant le principe ça serait nettement plus gérable...
Ci-joint un tableau d'exemple, avec en "feuille 2" le résultat mis, mais sans formule...
Merci à vous pour ce que vous m'avez déjà apporté, et peut-être pour la suite...
Hervé
 

Pièces jointes

  • Classeur111.xlsx
    12.2 KB · Affichages: 39
  • Classeur111.xlsx
    12.2 KB · Affichages: 49
  • Classeur111.xlsx
    12.2 KB · Affichages: 46

Robert

XLDnaute Barbatruc
Repose en paix
Re : sélectionner des données d'une autre feuille

Bonjour beurklesharicots, bonjour le forum,

En pièce jointe ton fichier avec le code ci-dessous :
Code:
Sub Macro1()
Dim d1 As Date 'déclare la variable d1 (Date 1)
Dim d2 As Date 'déclare la variable d1 (Date 2)
Dim cl As String 'déclare la variable cl (CLient)
Dim ad As Range 'déclare la variable ad (plage Ancienne Données)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

With Sheets("bordereau") 'prend en compte l'onglet "bordereau"
    d1 = .Range("C3").Value 'définit la date d1
    d2 = .Range("C4").Value 'définit la date d1
    cl = .Range("D3").Value 'définit le client cl
    Set ad = .Range("A7").CurrentRegion 'définit la plage des anciennes données
    If ad.Rows.Count > 1 Then 'condition : si cette plage contient plus d'une seule ligne
        Set ad = ad.Offset(1, 0).Resize(ad.Rows.Count - 1, ad.Columns.Count) 'redéfinit la plage (sans la première ligne)
        ad.Clear 'efface les anciennes données
    End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "bordereau"
With Sheets("base") 'prend en compte l'onglet "Base"
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A
    Set pl = .Range("A2:A" & dl) 'définit la plage pl
    For Each cel In pl 'boucle sur toutes les cellules de la plage pl
        If cel.Value >= d1 And cel.Value <= d2 And cel.Offset(0, 4).Value = cl Then 'condition : si la date 1, al date 2 et le nom du client sont correspondants
            Set dest = Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
            .Range(cel, cel.Offset(0, 3)).Copy dest 'copie et colle les cellules correspondante des colonnes A, B, C et D dans dest
        End If 'fin de la condition
    Next cel 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "base"
End Sub
Le fichier :
 

Pièces jointes

  • jaimelesharicots_v01.xls
    55.5 KB · Affichages: 39

beurklesharicots

XLDnaute Nouveau
Re : sélectionner des données d'une autre feuille

Wouaou !
Ben je ne m'attendais pas à ça ! Pour autant cela fonctionne très bien, un grand MERCI Robert !!!

Vais quand même essayer de comprendre le "code", mais je ne voyais pas une formule aussi complexe rien qu'à regarder...

Encore merci à vous tous.
Hervé
 

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 403
Membres
103 201
dernier inscrit
centrale vet