Recherche complexe de plusieurs données en fonction de critères

osiris150

XLDnaute Occasionnel
Bonjour,

Etant complètement dépassé par ce que je dois faire, je viens solliciter votre aide.

Voilà, j’ai un fichier qui comporte 3 feuilles : « Chargement », « Chargement Temp » et « Agences »
Dans la feuille « Chargement Temp » il y a des informations qui vont de la colonne A à N.
Dans la feuille « Chargement » j’ai un tableau qui se décompose en 2 parties :
1 partie qui s’appelle « Agences » et l’autre partie qui s’appelle « Livraisons directes »

Ce que je souhaiterais :

1 ) C’est de rechercher les codes postaux qui sont dans la colonne A de la feuille « Agences » dans la feuille « chargement Temp ». Si on le trouve alors on fait apparaître le nom de l’agence (Colonne B de la feuille Agences) dans le tableau (feuille Chargement » dans la partie nommée Agences. Par contre il faut que le nom de l’agence n’apparaisse qu’une fois dans le tableau. Il y a aussi une condition c’est qu’il ne faut prendre en compte que les lignes de la colonne H (feuille « Chargement temp » où il est marqué « PE », les autres ne m’intéressent pas.

2) Faire la même chose que dans le 1) mais pour tous les autres noms qui ne sont pas dans la feuille « Agences » c'est-à-dire que l’on recherche les noms qui sont dans la colonne N de la feuille « Chargement Temp » et on les fait apparaître dans le tableau dans la partie « Livraisons directes », toujours en ne mettant le nom qu’une seule fois.

3) Faire apparaître le poids total dans la colonne D du tableau.

Exemple : Si on a trouvé l’agence de « Guérande » avec le situation « PE » et que celle-ci apparaît en A5 alors on affiche le poids total de toutes les lignes PE pour l’agence de « Guérande » présente dans la feuille « Chargement Temp » dans la cellule D5 du tableau.

Ce n’est pas évident à expliquer comme cela, alors j’espère quand même que je me fais comprendre. Je sais aussi que ce ne doit pas être simple. J’espère néanmoins que les professionnels que vous êtes sauront m’aider. C’est pour travail et surtout très important pour que je gagne beaucoup de temps. Je vous mets mon fichier en pièce jointe.
En vous remerciant par avance
Nicolas
 
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Recherche complexe de plusieurs données en fonction de critères

Bonjour,
Je ne vois pas de départements mais des codes postaux, faut-il faire une recherche sur les 2 premiers caractères
Se peut-il qu'il n'y ait pas suffisamment de lignes dans la feuille "Chargement", dans la partie agence
Où faut-il rechercher le département dans la feuille "Chargement Temp"
Il n'y a pas de feuille "Résultat Temp"
.....
Un exemple concret dans le fichier faciliterait la compréhension
A+
kjin
 

osiris150

XLDnaute Occasionnel
Re : Recherche complexe de plusieurs données en fonction de critères

Bonjour Kjin,

Tu as tout as fait raison, j'ai fait des erreurs dans mon explication. Ce sont bien des codes postaux. Il faudrait faire la recherche sur la totalité du code postal et pas sur 2 chiffres. Oui il se pourrait qu'il n'y ait pas assez de lignes dans la feuille "Chargement" effectivement. Comme on a au maximum 13 agences possibles, c'est vrai il faut mettre 13 lignes possibles dans le tableau. Idem pour la partie Livraisons directes, je pense qu'on peut rajouter des lignes environ 20 ça devrait suffire.
Il faut rechercher le code postal dans la colonne M de la feuille "Chargement temp".
Il n'y a pas de feuille "Résultat Temp" c'est "Chargement temp" que je voulais dire. J'ai modifié dans mon premier message.

J'ai remis en pièce jointe le fichier dans lequel j'ai rajouté une feuille exemple. Elle montre ce que j'aimerai.
Merci d'avance.
Cordialement
Nicolas
 

Victor21

XLDnaute Barbatruc
Re : Recherche complexe de plusieurs données en fonction de critères

Bonjour, osiris150, kjin ;)

Il semble, d'après l'exemple fourni, que pour récupérer le poids un simple sommeprod suffit :
Code:
=SOMMEPROD(('Chargement Temp'!$N$2:$N$201=A5)*('Chargement Temp'!$I$2:$I$201))
Attention au remplissage de la colonne A, dont l'orthographe doit être strictement identique à celui de la colonne N de "chargement Temp (Un espace avant la première lettre).
 

Bebere

XLDnaute Barbatruc
Re : Recherche complexe de plusieurs données en fonction de critères

bonjour Osiris,Kjin,Victor
cliquer bouton update dans exemple
à bientôt
 

Pièces jointes

  • ListedesBP.xls
    86 KB · Affichages: 108
  • ListedesBP.xls
    86 KB · Affichages: 111
  • ListedesBP.xls
    86 KB · Affichages: 114

osiris150

XLDnaute Occasionnel
Re : Recherche complexe de plusieurs données en fonction de critères

Bonjour Bebere et Kjin,

Vos 2 solutions sont nickels !! ça marche comme je le souhaitais.
Merci à tous les deux pour votre super travail, vous allez me faciliter grandement la vie pour mon travail.
Cordialement
Nicolas
 

osiris150

XLDnaute Occasionnel
Re : Recherche complexe de plusieurs données en fonction de critères

Oups désolé de m'être emballé si vite ! Sur le fichier de Kjin, les poids sont faux.
Exemple avec "Lannion" qui apparaît en A23 dans la feuille "Chargement" il est indiqué 100 Kgs dans la colonne "Poids" en D23 alors que l'on devrait avoir 65,42 Kgs (correspond aux 3 lignes avec situation PE dans le tableau "chargement temp" pour "Lannion"

Pour le fichier de Bebere c'est pareil les poids sont faux car en fait il ne faut additionner que ceux qui sont marqués PE dans la colonne H de la feuille "Chargement Temp". et les lignes "livraisons directes" n'apparaissent pas dans la deuxième partie du tableau.

Mais je pense que la modification pour les deux fichiers ne doit pas être trop grande. On est pas loin du but !
J'espère que ça va le faire !
Merci d'avance
Nicolas
 

kjin

XLDnaute Barbatruc
Re : Recherche complexe de plusieurs données en fonction de critères

Bonsoir,
Essaies comme ceci
Code:
Sub MAJ()
Dim ws As Worksheet, rng1 As Range, pt, rng2 as Range
a = 5
b = 21
Application.ScreenUpdating = False
Sheets("Chargement").Range("A5:F17, A21:F40").ClearContents
Set ws = Sheets.Add
With Sheets("Chargement Temp")
    Set rng1 = .Range("H1:N" & .Range("A65000").End(xlUp).Row)
End With
Set pvt = ws.PivotTableWizard(xlDatabase, rng1, Range("A3"), "KK", 0, 0)
With pvt
    .AddFields RowFields:=Array("Ville", "Code Postal"), ColumnFields:="Sit."
    .PivotFields("Poids").Orientation = xlDataField
    For Each pt In .PivotFields("Sit.").PivotItems
        If pt <> "PE" Then pt.Visible = False
    Next
    On Error Resume Next
    For Each pt In .RowFields
        pt.Subtotals(1) = False
    Next
    On Error GoTo 0
    Set rng2 = .TableRange1.Offset(2).Resize(.TableRange1.Rows.Count - 2, 3)
    For i = 1 To rng2.Rows.Count
        v = rng2.Cells(i, 1)
        cp = rng2.Cells(i, 2)
        p = rng2.Cells(i, 3)
        With Sheets("Chargement")
            If cp <> "" And Application.CountIf(Sheets("Agences").Range("A1:A13"), cp) > 0 Then
                .Cells(a, 1) = v
                .Cells(a, 4) = p
                a = a + 1
            Else
                .Cells(b, 1) = v
                .Cells(b, 4) = p
                b = b + 1
            End If
        End With
    Next
End With
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
A+
kjin
 
Dernière édition:

osiris150

XLDnaute Occasionnel
Re : Recherche complexe de plusieurs données en fonction de critères

Bonjour Kjin,

Ta macro fonctionne impec, mais je voulais savoir si tu pouvais juste m'expliquer son fonctionnement car j'ai beau essayer de la comprendre je n'y arrive pas. C'est vrai que mes notions en VB sont très limitées. Si c'était possible, juste de mettre pas à pas ce qu'elle fait exactement cela m'aiderait beaucoup pour progresser.
En te remerciant par avance.
Nicolas
 

kjin

XLDnaute Barbatruc
Re : Recherche complexe de plusieurs données en fonction de critères

Bonjour,
Comme l'a fait Bébere :) (mais qui n'est pas allé jusqu'au bout...:p), pour répondre à ta question, il aurait fallu...
- créer un tableau tab1 --> liste sans doublon des CP et "PE" de la feuille "Chargement Temp"
- créer un tableau tab2 --> liste des CP de la feuille "Agences"
- créer un tableau tab3 --> chargement agence
- créer un tableau tab4 --> chargement livraison directe
- parcourir chaque item du tab1 et vérifier qu'il existe dans tab2
--- s'il existe, vérifier qu'il existe dans tab3
------ s'il existe, sommer l'item existant
------ s'il n'existe pas, ajouter un item à tab3
--- s'il n'existe pas, vérifier qu'il existe dans tab4
------ s'il existe, sommer l'item existant
------ s'il n'existe pas, ajouter un item à tab4
- transférer les données de tab3 et tab4 dans la feuille "Agences"
...bon, c'est faisable, mais c'est un peu lourd
La solution que j'ai retenue, consiste à récupérer les données d'un tableau croisé dynamique que je crée dans une feuille provisoire et qui est supprimée à la fin de la procédure
A+
kjin
 

Discussions similaires

Réponses
3
Affichages
198
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 196
Messages
2 086 094
Membres
103 116
dernier inscrit
kutobi87