Comparaison valeurs de deux tableaux et extraction valeurs manquantes Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
f
flodino
Membre habitué
Membre habitué
Messages : 67
Inscrit le : 7 juin 2015
Version d'Excel : 2013

Message par flodino » 8 juillet 2019, 11:05

Bonjour !

J'ai un petit soucis concernant les formules excel, je pensais que c'était simple avec recherchev() mais ou match() mais ça ne me permet que de faire l'effet inverse.

En fait j'ai une base de données qui contient pour chaque entrée, une date de demande et un nom de client.
Et j'aimerais sortir une liste des clients qu'on a enregistré le mois dernier et dont il n'y a pas de ligne ce mois ci.

Je pensais donc faire deux tableaux avec deux filtres différents ( un avec filtre chronologique = mois dernier et l'autre avec filtre chronologique = ce mois )

Et puis faire la comparaison des deux colonnes avec recherchev ou MATCH mais je me rends compte que c'est l'effet inverse que je cherche. J'aimerais sortir les données qui ne sont pas communes ( les clients qui sont dans le tableau du mois dernier et non dans le tableau de ce mois ) Et puis après, utiliser l'outil "supprimer les doublons d'excel "

Est ce quelqu'un a une piste ? une formule ?

En vous remerciant d'avoir lu

Je mets en pièce jointe mon idée actuelle, même si elle pose des petits soucis car filtrer des tableaux, ça supprimer des lignes donc on peut pas avoir deux tableaux côte à côté mais c'est pas grave je pense.
datetableau.xlsx
(11.84 Kio) Téléchargé 15 fois
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'685
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 8 juillet 2019, 13:15

Bonjour

Un essai à tester. Te convient-il ?
Bye !
datetableau v1.xlsm
(24.84 Kio) Téléchargé 27 fois
f
flodino
Membre habitué
Membre habitué
Messages : 67
Inscrit le : 7 juin 2015
Version d'Excel : 2013

Message par flodino » 8 juillet 2019, 14:11

merci pour l'essai !

En plus c'est du VBA c'est parfait car ça serait super si ça pouvait se faire assez facilement toutes les semaines ^^

Mais en fait ce que j'aimerais bien c'est que dans le tableau qui est crée, il n'y est que inscrit
" D "

Car c'est le seul client qui est inscrit dans le premier tableau " mois dernier " *

Mais qui n'est pas dans le deuxième tableau " mois actuel "

L'objectif c'est que ça sorte une petite liste de clients, sans dates, juste une liste de noms ^^
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'685
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 8 juillet 2019, 18:11

Nouvelle version

Bye !
datetableau v2.xlsm
(24.95 Kio) Téléchargé 21 fois
f
flodino
Membre habitué
Membre habitué
Messages : 67
Inscrit le : 7 juin 2015
Version d'Excel : 2013

Message par flodino » 9 juillet 2019, 10:01

Merci beaucoup ça marche parfaitement !

Je vais utiliser cette solution, et je me demande, est ce que tu crois que ça serait possible avec des tableaux croisés dynamique ?

ça m'arrangerait encore plus car les tableaux se mettraient à jour automatiquement ( avec les filtres )

je veux dire que à la place d'avoir des tableaux avec des filtres, j'ai mis deux tableaux croisés dynamiques, est ce que tu crois que ce serait possible d'avoir le même résultat ?

juste en affichant donc une liste des clients qui sont dans le tableau du mois dernier et pas dans le tableau de ce mois ?

Si c'est possible ça serait plus que parfait ^^

J'ai fait les tableaux croisés dynamiques pour le test,

merci encore d'avoir lu !
datetableau v2.xlsm
(29.84 Kio) Téléchargé 10 fois
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'685
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 9 juillet 2019, 10:20

Bonjour

Pour une version en TCD, je passe la main : il y a beaucoup plus compétent que moi en la matière, comme Jean-Eric, par exemple...
Bye !
f
flodino
Membre habitué
Membre habitué
Messages : 67
Inscrit le : 7 juin 2015
Version d'Excel : 2013

Message par flodino » 9 juillet 2019, 11:24

ça marche !

Merci beaucoup pour la solution avec les tableaux !

SI c'est pas possible une solution avec les TCD, j'utiliserai celle là et elle est dèja très utile !

Au cas où je mets pas encore le sujet en résolu, mais je le mettrai à un moment
f
flodino
Membre habitué
Membre habitué
Messages : 67
Inscrit le : 7 juin 2015
Version d'Excel : 2013

Message par flodino » 9 juillet 2019, 16:08

gmb a écrit :
9 juillet 2019, 10:20
Bonjour

Pour une version en TCD, je passe la main : il y a beaucoup plus compétent que moi en la matière, comme Jean-Eric, par exemple...
Bye !
Juste au cas où, est ce que tu penses qu'une solution juste avec un tableau serait possible, ?

Par exemple avec un tableau

Client              Date dossier 
A                      01/06/2019
B                      02/06/2019
A                      04/06/2019
C                      07/06/2019
C                      02/07/2019
D                      08/07/2019      
et avec un code VBA ça sort une liste des clients qui ont été enregistrés le mois dernier mais pas ce mois ci ?

Par exemple dans ce cas

"
A
B
"
Car ils ont pas été enregistrés ce mois ci

ou c'est pas possible, et je reste sur la solution des deux tableaux ^^
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'685
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 9 juillet 2019, 20:04

Nouvelle version.
Bye !
Classeur v2.xlsm
(24.77 Kio) Téléchargé 16 fois
1 membre du forum aime ce message.
f
flodino
Membre habitué
Membre habitué
Messages : 67
Inscrit le : 7 juin 2015
Version d'Excel : 2013

Message par flodino » 10 juillet 2019, 10:55

ça marche parfaitement !
merci beaucoup !

c'est vraiment parfait avec un seul tableau !

par contre j'ai essayé de l'adapter au fichier que j'utilise et j'ai un peu de mal, car idéalement, le bouton serait serait une feuille, le tableau serait sur une autre et la liste de clients serait encore sur une autre ( et le tableau contient 29 colonnes, les nom des client sont à la colonne 13 et les dates à la 17 ). Et le code que j'ai adapté ne me sort que un "1 "dans la liste des clients ^^

Est ce que tu pourrais me dire ce que j'ai oublié pour finaliser ^^ ?

Je mets en pièce jointe le fichier sur lequel je travaille :

Et le code qui marchait parfaitement que j'ai essayé d'adapter et que j'ai tout cassé :oops:



Option Explicit

Dim dico As Object, tablo, k, kP
Dim i&, j&, ln&

Sub LeMoisDernier()
    
    Set dico = CreateObject("Scripting.Dictionary")
    tablo = Sheets(2).Range("A2:AC" & Range("A" & Rows.Count).End(xlUp).Row)
    For i = 2 To UBound(tablo, 1)
        If tablo(i, 17) < DateSerial(Year(Date), Month(Date), 1) _
                And tablo(i, 17) >= DateSerial(Year(Date), Month(Date) - 1, 1) Then
            dico(tablo(i, 1)) = ""
        Else
            If dico.exists(tablo(i, 1)) Then
                dico.Remove (tablo(i, 1))
            End If
        End If
        
        
    Next i
    
   Sheets(3).Range("C7").CurrentRegion.ClearContents
    On Error GoTo fin
    Sheets(3).Range("C7").Resize(dico.Count, 1) = Application.Transpose(dico.keys)
    Sheets(3).Range("C7:C" & Application.Max(7, Sheets(3).Range("C" & Rows.Count).End(xlUp).Row)).Sort _
            key1:=Sheets(3).Range("C7"), order1:=xlAscending, Header:=xlNo
    
fin:
End Sub


Classeur test.xlsm
(282.99 Kio) Téléchargé 11 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message