Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question sur la table pivot

11 réponses
Avatar
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é

10 réponses

1 2
Avatar
isabelle
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é

Avatar
Andre
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 <mgqa9t$6bd$, isabelle says...

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é

Avatar
isabelle
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 <mgqa9t$6bd$, isabelle says...

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é






Avatar
Andre
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 <mgrk5l$ir2$, isabelle says...

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 <mgqa9t$6bd$, isabelle says...

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é






Avatar
isabelle
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
Avatar
isabelle
j'ai ajouté une petite modification,

http://cjoint.com/?EDutxHZxTPi

isabelle
Avatar
André
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 <mh3985$c0l$, isabelle says...

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

Avatar
isabelle
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
Avatar
Andre
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 <mh5hh6$gjt$, isabelle says...

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
Avatar
Patrick
Bonjour,

lecture et réponse tardive mais je trouve aussi

GHI
planche
compressé
"vide"
"vide"

Patrick

"isabelle" a écrit dans le message de news:
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 <mgqa9t$6bd$, isabelle says...

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
1 2