Rechercher : dans
Par :

Pb tableau croisé dynamique - Données texte

Dernière réponse le 25 fév 2008 à 21:33:48 stephanie.msalem, le 22 fév 2008 à 09:43:35 
 Signaler ce message aux modérateurs

Bonjour,

Je souhaite réaliser un tableau croisé dynamique à partir de ces données :

ech du val
8.1 A <1
8.1 B <2
8.1 C <5
8.1 D 14
8.1 E a
9.1 A <5
9.1 C f
9.1 D a
9.1 E <78
9.1 F S2+


- > tableau souhaité :

A B C D E F
8.1 <1 <2 <5 14 a
9.1 <5 f a <78 S2+

Je ne cherche pas à faire des calculs mais a réalisé un bilan ou mes colonnes sont dynamique

Merci pour votre aide

Configuration: Windows XP
Internet Explorer 6.0

1

xkristi, le 22 fév 2008 à 12:54:39

--Salut
tu as combien de colonnes ?

et il faut une étiquette pour chaque colonne

peux-tu mettre ton fichier sur cjoint.com
et me donner le lien




xkristi
Je ne détiens point la vérité , je te la laisse  volontiers ­...

Répondre à xkristi

2

xkristi, le 22 fév 2008 à 13:12:15

Tu peux voir le résultat ici

http://cjoint.com/?cwnkEoZ0EH

mais c'est un TCD mais pas tout à fait comme tu veux ...


xkristi
Je ne détiens point la vérité , je te la laisse  volontiers ­...

Répondre à xkristi

3

stephanie.msalem, le 22 fév 2008 à 13:48:20

En fait c'est pas ce que je veux faire. Je pense que je ne vais pas y arriver avec un tableau croisé dynamique

voici le fichier

http://cjoint.com/?cwnUBedv13

il me faut les dossiers en ligne les analyses en colonnes et les résultats au milieu (je veux une ligne par dossier)

vous connaissez une fonction EXCEL qui fait ceci ?

Répondre à stephanie.msalem

4

eriiic, le 22 fév 2008 à 18:24:09

Bonjour stephanie,
coucou xkristi :-)

Il n'y a pas de fonction excel qui fasse cela..
Je t'ai fait une macro à coller dans un module.
Il faut activer ta feuille avec les données avant de lancer la macro. Cette feuille de données peut-être dans un autre classeur, mais le classeur avec la macro doit être également ouvert pour pouvoir la lancer (logique...).
Attention j'utilise temporairement les colonnes AA et AB de la feuille de données. Si elles sont utilisées il faut modifier la macro pour repousser ces colonnes.
J'espère que j'ai bien compris dans quel sens tu le voulais car je crois qu'on n'a pas la même définition de ligne et colonne... ;-)
il me faut les dossiers en ligne les analyses en colonnes et les résultats au milieu (je veux une ligne par dossier)
Si tu veux une ligne par dossier c'est qu'ils sont présentés en colonne pour moi...
Sinon tu inverses tes 2 1ères colonnes...

http://cjoint.com/?cwsrIJBRUW

Bonne soirée tout le monde
eric

PS: Voici le code des fois que ça interesse qcq'un lorsque le lien cijoint ne sera plus actif

Option Explicit

Sub Tableau()
    ' réorganise sous forme de tableau dans une nouvelle feuille des données fournies sur 3 colonnes :
    ' colonne A : nom de ligne
    ' Colonne B : nom de colonne
    ' Colonne C : data
    ' la feuille contenant les données doit etre active avant de lancer la macro
    Dim data()
    Dim col()
    Dim lig()
    Dim nblig As Long, i As Long, j As Long, k As Long
    Dim sh As Worksheet
    Set sh = ActiveSheet
    ' créer feuille Tableau (la supprimer avant si existante)
    Application.DisplayAlerts = False
    On Error GoTo creer
    Sheets("Tableau").Activate
    Sheets("Tableau").Delete
    Application.DisplayAlerts = True
creer:
    Sheets.Add.Name = "Tableau"
    '
    sh.Activate
    ' préparer tableau
    Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("AA1"), Unique:=True
    col = Range("AA2:AA" & [AA65536].End(xlUp).Row)
    Columns("B:B").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("AB1"), Unique:=True
    lig = Range("AB2:AB" & [AB65536].End(xlUp).Row)
    'coller noms col
    Range([AA2], [AA2].End(xlDown)).Copy
    Sheets("Tableau").Range("A2").PasteSpecial Paste:=xlPasteValues, Transpose:=False
    'colle noms lig
    Range([AB2], [AB2].End(xlDown)).Copy
    Sheets("Tableau").Range("B1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
    ' supprimer colonnes temporaires
    Columns("AA:AB").Delete Shift:=xlToLeft
    ' remplir tableau
    data = Range("A2:C" & [A65536].End(xlUp).Row)
    For i = 1 To UBound(data)
        j = 1
        While data(i, 1) <> col(j, 1)
            j = j + 1
        Wend
        k = 1
        While data(i, 2) <> lig(k, 1)
            k = k + 1
        Wend
        Worksheets("Tableau").Cells(j + 1, k + 1).Value = data(i, 3)
    Next i
End Sub

Répondre à eriiic

5

xkristi, le 25 fév 2008 à 16:02:10

Juste pour te dire bonjour Eriic en passant LOL xkristi
Je ne détiens point la vérité , je te la laisse  volontiers ­...

Répondre à xkristi

6

 eriiic, le 25 fév 2008 à 21:33:48

C'est gentil :-)
J'ai l'impression que j'ai bossé pour rien moi... ;-)
Bonne soirée à toi
eric

Répondre à eriiic
Collection CommentÇaMarche.net