Question sur la table pivot

Le
Andre
Bonjour,

J'essaie d'utiliser le tableau croisé dynamique afin de comparer des données.
Je n'y arrive pas.

Soit le tableau contenant les données:

numéro dossier nom valeur
1 ABC boite carton
2 ABC planche bois
3 DEF boite cartons
4 DEF clous métal
5 GHI planche compressé


Le résultat recherché

ABC DEF GHI
-
boite | carton | cartons |
planche | bois | | compressé
clous | | métal |


Dans la partie données, je ne veux pas compter, mais mettre la valeur.

Comment faire ?

Si cela est impossible avec le tableau croisé dynamique, comment pourrais-je,
facilement afficher les données comme cela?

Merci de votre aide

André
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #26349526
bonjour André,

ce n'est pas possible de laisser le champ de donné "Vide"
mais c'est possible de réaliser ta demande par vba.
si tu es intéressée par cette solution, dit le nous.

isabelle

Le 2015-04-15 05:05, Andre a écrit :
Bonjour,

J'essaie d'utiliser le tableau croisé dynamique afin de comparer des données.
Je n'y arrive pas.

Soit le tableau contenant les données:

numéro dossier nom valeur
1 ABC boite carton
2 ABC planche bois
3 DEF boite cartons
4 DEF clous métal
5 GHI planche compressé


Le résultat recherché

ABC DEF GHI
----------------------------------------------
boite | carton | cartons |
planche | bois | | compressé
clous | | métal |


Dans la partie données, je ne veux pas compter, mais mettre la valeur.

Comment faire ?

Si cela est impossible avec le tableau croisé dynamique, comment pourrais-je,
facilement afficher les données comme cela?

Merci de votre aide

André

Andre
Le #26349573
Bonjour,

Merci de répondre. Effectivement, je serais interessé car, vu la quantité de
données que je vais devoir comparer ... Le faire à la main, je ne le sens pas
vraiment.

Je connais le VBA donc, vous pouvez m'expliquer !
Merci
André


In article

bonjour André,

ce n'est pas possible de laisser le champ de donné "Vide"
mais c'est possible de réaliser ta demande par vba.
si tu es intéressée par cette solution, dit le nous.

isabelle

Le 2015-04-15 05:05, Andre a écrit :
Bonjour,

J'essaie d'utiliser le tableau croisé dynamique afin de comparer des données.
Je n'y arrive pas.

Soit le tableau contenant les données:

numéro dossier nom valeur
1 ABC boite carton
2 ABC planche bois
3 DEF boite cartons
4 DEF clous métal
5 GHI planche compressé


Le résultat recherché

ABC DEF GHI
----------------------------------------------
boite | carton | cartons |
planche | bois | | compressé
clous | | métal |


Dans la partie données, je ne veux pas compter, mais mettre la valeur.

Comment faire ?

Si cela est impossible avec le tableau croisé dynamique, comment pourrais-je,
facilement afficher les données comme cela?

Merci de votre aide

André

isabelle
Le #26349630
bonjour André,

je ne comprend pas le résultat attendu,
pour GHI le résultat ne devrait t'il pas être
GHI
planche
compressé

isabelle


Le 2015-04-17 08:26, Andre a écrit :
Bonjour,

Merci de répondre. Effectivement, je serais interessé car, vu la quantité de
données que je vais devoir comparer ... Le faire à la main, je ne le sens pas
vraiment.

Je connais le VBA donc, vous pouvez m'expliquer !
Merci
André


In article

bonjour André,

ce n'est pas possible de laisser le champ de donné "Vide"
mais c'est possible de réaliser ta demande par vba.
si tu es intéressée par cette solution, dit le nous.

isabelle

Le 2015-04-15 05:05, Andre a écrit :
Bonjour,

J'essaie d'utiliser le tableau croisé dynamique afin de comparer des données.
Je n'y arrive pas.

Soit le tableau contenant les données:

numéro dossier nom valeur
1 ABC boite carton
2 ABC planche bois
3 DEF boite cartons
4 DEF clous métal
5 GHI planche compressé


Le résultat recherché

ABC DEF GHI
----------------------------------------------
boite | carton | cartons |
planche | bois | | compressé
clous | | métal |


Dans la partie données, je ne veux pas compter, mais mettre la valeur.

Comment faire ?

Si cela est impossible avec le tableau croisé dynamique, comment pourrais-je,
facilement afficher les données comme cela?

Merci de votre aide

André






Andre
Le #26349872
Bonjour,

Dans la colonne GHI, vous aurez:
Première ligne : vide
Deuxième ligne : compressé
Troisième ligne: vide.

Non mon tableau est correcte.

Merci pour votre aide.
André

In article

bonjour André,

je ne comprend pas le résultat attendu,
pour GHI le résultat ne devrait t'il pas être
GHI
planche
compressé

isabelle


Le 2015-04-17 08:26, Andre a écrit :
Bonjour,

Merci de répondre. Effectivement, je serais interessé car, vu la quantité de
données que je vais devoir comparer ... Le faire à la main, je ne le sens pas
vraiment.

Je connais le VBA donc, vous pouvez m'expliquer !
Merci
André


In article

bonjour André,

ce n'est pas possible de laisser le champ de donné "Vide"
mais c'est possible de réaliser ta demande par vba.
si tu es intéressée par cette solution, dit le nous.

isabelle

Le 2015-04-15 05:05, Andre a écrit :
Bonjour,

J'essaie d'utiliser le tableau croisé dynamique afin de comparer des données.
Je n'y arrive pas.

Soit le tableau contenant les données:

numéro dossier nom valeur
1 ABC boite carton
2 ABC planche bois
3 DEF boite cartons
4 DEF clous métal
5 GHI planche compressé


Le résultat recherché

ABC DEF GHI
----------------------------------------------
boite | carton | cartons |
planche | bois | | compressé
clous | | métal |


Dans la partie données, je ne veux pas compter, mais mettre la valeur.

Comment faire ?

Si cela est impossible avec le tableau croisé dynamique, comment pourrais-je,
facilement afficher les données comme cela?

Merci de votre aide

André






isabelle
Le #26349884
bonjour André,

j'ai supposé que les données sont sur la Feuil1 et j'ai mis le résultat en Feuil2

Sub Macro1()
Dim strFormula As String
Dim sh1 As Worksheet, sh2 As Worksheet, r As Range
Dim LastRow2 As Integer, LastClm As Integer, ad As String

Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("Feuil2")

Application.ScreenUpdating = False
LastRow1 = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
sh1.Range("B1:B" & LastRow1).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=sh2.Range("A1"), Unique:=True
sh1.Range("C1:C" & LastRow1).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=sh2.Range("B1"), Unique:=True

With sh2
LastRow2 = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A2:A" & LastRow2).Copy
.Range("C1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
.Range("A:A").Delete
LastClm = .Cells(1, .Columns.Count).End(xlToLeft).Column
ad = .Range(Cells(2, 3), Cells(LastRow2, LastClm)).Address
.Range("B2").FormulaArray =
"=IFERROR(INDEX(Feuil1!$D:$D,MATCH(B$1&$A2,Feuil1!$B:$B&Feuil1!$C:$C,0)),"""")"
.Range("B2").Copy .Range("B3:B" & LastRow2)
.Range("B2:B" & LastRow2).Copy .Range(ad)
.Range(Cells(2, 2), Cells(LastRow2, LastClm)).Value = .Range(Cells(2, 2),
Cells(LastRow2, LastClm)).Value
Application.CutCopyMode = False
Application.ScreenUpdating = True
End With
End Sub

isabelle
isabelle
Le #26349894
j'ai ajouté une petite modification,

http://cjoint.com/?EDutxHZxTPi

isabelle
André
Le #26349940
Bonjour,

Vous êtes mon héroïne !... MERCI MERCI MERCI !
J'ai regardé le code et j'essaie de comprendre le fonctionnement.

Je comprends tout à l’exception de la fonction MATCH

.Range("B2").FormulaArray "=IFERROR(INDEX(Feuil1!$D:$D,MATCH(B$1&$A2,Feuil1!$B:$B&Feuil1!$C:$C,0)),"""")"

Pourriez-vous, gentillement, m'expliquer la formule ?
Car, ce que je comprends pas c'est : 'MATCH(B$1&$A2, ....'
B1 & A2 (en absolu) ... Le sens est-il correct?

Encore merci

Si je peux faire quelque chose, n'hésitez pas

André



In article

bonjour André,

j'ai supposé que les données sont sur la Feuil1 et j'ai mis le résultat en
Feuil2

Sub Macro1()
Dim strFormula As String
Dim sh1 As Worksheet, sh2 As Worksheet, r As Range
Dim LastRow2 As Integer, LastClm As Integer, ad As String

Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("Feuil2")

Application.ScreenUpdating = False
LastRow1 = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
sh1.Range("B1:B" & LastRow1).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=sh2.Range("A1"), Unique:=True
sh1.Range("C1:C" & LastRow1).AdvancedFilter Action:=xlFilterCopy,
CopyToRange:=sh2.Range("B1"), Unique:=True

With sh2
LastRow2 = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A2:A" & LastRow2).Copy
.Range("C1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
.Range("A:A").Delete
LastClm = .Cells(1, .Columns.Count).End(xlToLeft).Column
ad = .Range(Cells(2, 3), Cells(LastRow2, LastClm)).Address
.Range("B2").FormulaArray =
"=IFERROR(INDEX(Feuil1!$D:$D,MATCH(B$1&$A2,Feuil1!$B:$B&Feuil1!$C:$C,0)),"""")"
.Range("B2").Copy .Range("B3:B" & LastRow2)
.Range("B2:B" & LastRow2).Copy .Range(ad)
.Range(Cells(2, 2), Cells(LastRow2, LastClm)).Value = .Range(Cells(2, 2),
Cells(LastRow2, LastClm)).Value
Application.CutCopyMode = False
Application.ScreenUpdating = True
End With
End Sub

isabelle

isabelle
Le #26349972
bonjour André,

merci! à toi, ça fait toujours plaisir de savoir que cela fonctionne.
j'ai bloqué la ligne 1 et la colonne A (B$1&$A2) en vue de la recopie de la
cellule B2
vers le bas puis vers la droite
donc après la recopie la formule en cellule B3 est MATCH(B$1&$A3
et la formule en cellule C4 est MATCH(C$1&$A4 etc...
le traitement en matricielle de la formule permet de doubler
les arguments "valeur_cherchée" et "matrice_recherche" de la fonction EQUIV
j'ai mis la formule en cellule B2 de la Feuil2 sur ce fichier:
http://cjoint.com/?EDvpjwH8R8H
tu pourras l'examiner de plus près.

isabelle
Andre
Le #26350506
Bonjour,
Pardonnez-moi de réagir que maintenant, mais, j'ai été absent le reste de la
semaine dernière.

Merci encore pour toutes ces explications et votre aide.
J'ai apprécié.


André

In article

bonjour André,

merci! à toi, ça fait toujours plaisir de savoir que cela fonctionne.
j'ai bloqué la ligne 1 et la colonne A (B$1&$A2) en vue de la recopie de la
cellule B2
vers le bas puis vers la droite
donc après la recopie la formule en cellule B3 est MATCH(B$1&$A3
et la formule en cellule C4 est MATCH(C$1&$A4 etc...
le traitement en matricielle de la formule permet de doubler
les arguments "valeur_cherchée" et "matrice_recherche" de la fonction EQUIV
j'ai mis la formule en cellule B2 de la Feuil2 sur ce fichier:
http://cjoint.com/?EDvpjwH8R8H
tu pourras l'examiner de plus près.

isabelle
Patrick
Le #26350931
Bonjour,

lecture et réponse tardive mais je trouve aussi

GHI
planche
compressé
"vide"
"vide"

Patrick

"isabelle" mgrk5l$ir2$
bonjour André,

je ne comprend pas le résultat attendu, pour GHI le résultat ne devrait
t'il pas être
GHI
planche
compressé

isabelle


Le 2015-04-17 08:26, Andre a écrit :
Bonjour,

Merci de répondre. Effectivement, je serais interessé car, vu la quantité
de
données que je vais devoir comparer ... Le faire à la main, je ne le sens
pas
vraiment.

Je connais le VBA donc, vous pouvez m'expliquer !
Merci
André


In article

bonjour André,

ce n'est pas possible de laisser le champ de donné "Vide"
mais c'est possible de réaliser ta demande par vba.
si tu es intéressée par cette solution, dit le nous.

isabelle

Le 2015-04-15 05:05, Andre a écrit :
Bonjour,

J'essaie d'utiliser le tableau croisé dynamique afin de comparer des
données.
Je n'y arrive pas.

Soit le tableau contenant les données:

numéro dossier nom valeur
1 ABC boite carton
2 ABC planche bois
3 DEF boite cartons
4 DEF clous métal
5 GHI planche compressé


Le résultat recherché

ABC DEF GHI
----------------------------------------------
boite | carton | cartons |
planche | bois | | compressé
clous | | métal |


Dans la partie données, je ne veux pas compter, mais mettre la valeur.

Comment faire ?

Si cela est impossible avec le tableau croisé dynamique, comment
pourrais-je,
facilement afficher les données comme cela?

Merci de votre aide

André













---
L'absence de virus dans ce courrier electronique a ete verifiee par le logiciel antivirus Avast.
http://www.avast.com
Publicité
Poster une réponse
Anonyme