Transformer tableau en matrice

Bonjour!

J'ai un tableau de données tiré de cartographie avec la distance entre des points sur une carte, deux par deux. J'ai énormément de points, du coup le tableau est immense! Et j'aurais besoin de le convertir en matrice, avec en horizontal et vertical, tous les points, et au milieu la distance.

J'ai tenté de le faire manuellement, mais j'ai près d'un millier de points... alors c'est pas de la tarte...

Quelqu'un saurait-il comment procéder facilement?

J'ai donc une colonne avec un point, une colonne avec l'autre point, et une colonne de distance.

Merci d'avance!

bonjour,

Ils sont comment tes points ?

C'est des points GPS, des points noms de ville...

Mettre un fichier avec quelques points en pièce jointe.

A+

Bonjour,

Un fichier avec l'attendu ?

Les points sont justes nommés maintenant, la distance ayant déjà été calculée autrement.

Il me faut au final une matrice avec tous les points (horizontal et vertical) et les distances au milieu.

Bon,

Ben ça ne nous donnes pas ce que tu souhaites faire.

Si tu veux une matrice, tu sélectionnes tes données et tu peux nommer ta place.

Cette zone nommée est une matrice.

Bien à toi

Il faut que j'aie un format matrice, c'est-à-dire reprendre les noms des points (AR12, AR13, etc.) pour mes titres de colonnes et titres de lignes, et retrouver au milieu la distance qui correspond à AR12vsAR12 (=0), AR12vsAR13 (=26), et ainsi de suite

Bonjour,

Sauf que d'un coté 535 points et de l'autre 2, si j'ai bien vu.

Tableau de 536 lignes et 3 colonnes (y compris en-têtes) ?

C'est parce que c'est un extrait... j'ai les données de tous les points, deux par deux

Bonjour,

Ce que tu t'apprêtes à faire ne me semble pas très judicieux.

Voici une autre suggestion (Pour l'instant c'est tout sur la même feuille, mais en fait tout peut être déporté sur des feuilles différentes

Les données dans une feuille masquée, la grille déjà masqués dans une autre feuille et celle de résultat sur une troisième feuille...

Tu nous dis, sinon on essaiera de se motiver pour un tableau croisé...

A+

86prop-alt.xlsx (79.96 Ko)

Je ne sais pas si j'ai bien compris, mais ce que tu proposes implique que je n'aurais pas au final un tableau avec les points en horizontal et en vertical en titres de colonnes et lignes.

J'ai besoin d'un tableau pour lancer des analyses stat et autres, et pour cela, il me faut un tableau avec les distances entre chaque couple de points.

Je ne comprends pas la formule que tu as utilisée pour ressortie la distance entre VG04 et AR13, ne peut-on pas en avoir une même qu'on tirerait dans le tableau et qui dirait "si dans le tableau de base, tu as VG04 dans cette colonne et AR13 dans cette colonne, alors sors-moi la valeur dans la colonne distance"?

Mais cela me paraît tout à fait judicieux !

Salut Galopin !

Les fonctions BD... sont sous-utilisées, il faut que je me fasse un noeud quelque part pour y penser...

Bonsoir à tous.

Données: le tableau initial avec les valeurs et les points

Matrice finale: le format que je dois avoir

Merci à tous de votre aide!

NARIES :

Tu as juste à modifier i3 et J3 pour avoir les distances entre n'importe quel point.

Ferrand : Nous sommes bien d'accord !

Non, c'est pas possible, le but est d'avoir une manière plus facile que de faire la manipulation à la main pour ne plus avoir ces valeurs dans ce tableau de données, mais les avoir dans le tableau format matrice. Or, si je remplace i3 et j3, je ne peux dans tous les cas pas tirer cette formule dans un tableau pour lui demander "trouve-moi dans la base de données la distance qui correspond à ma tête de colonne X pour ma tête de ligne Y".

J'ai un prog pour ça, pas très optimisé : 10 minutes pour l'instant (excusez du peu ! ) mais certaines valeurs (32) ne sont pas reconnues sans que j'arrive à déterminer pourquoi... C'est une extraction SAP, ERP ?

On va attendre si quelqu'un a mieux...

[EDIT] Je donne ici une version optimisée (5 à 6 minutes selon les taches sous jacentes) mais toujours les mêmes "trous" inexplicables...

26prop-alt.xlsm (92.29 Ko)

Bonsoir le fil,

Vois ceci :

Restitution en Feuil1

Option Explicit

Sub test()
Dim a, b(), i As Long, n As Long, t As Long, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    a = Sheets("Données").Range("a1").CurrentRegion.Value
    ReDim b(1 To UBound(a, 1), 1 To UBound(a, 1))
    n = 1: t = 1
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For i = 2 To UBound(a, 1)
            If Not dico.exists(a(i, 7)) Then
                n = n + 1: dico(a(i, 7)) = n
                b(n, 1) = a(i, 7)
            End If
            If Not .exists(a(i, 6)) Then
                t = t + 1: .Item(a(i, 6)) = t
                b(1, t) = a(i, 6)
            End If
            b(dico(a(i, 7)), .Item(a(i, 6))) = a(i, 5)
        Next
    End With
    Application.ScreenUpdating = False
    'restitution et mise en forme
    With Sheets("Feuil1")
        .Cells.Clear
        With .Cells(1).Resize(n, t)
            .Value = b
            .Font.Name = "calibri"
            .Font.Size = 10
            .VerticalAlignment = xlCenter
            .BorderAround Weight:=xlThin
            .Borders(xlInsideVertical).Weight = xlThin
            With .Rows(1)
                .BorderAround Weight:=xlThin
                .HorizontalAlignment = xlCenter
                With .Offset(, 1).Resize(, .Columns.Count - 1)
                    .Interior.ColorIndex = 36
                    .Font.Bold = True
                End With
            End With
            With .Columns(1)
                .HorizontalAlignment = xlCenter
                With .Offset(1).Resize(.Rows.Count - 1)
                    .Interior.ColorIndex = 38
                End With
            End With
            .Columns.ColumnWidth = 12
        End With
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub

klin89

bonjour,

Désolé du retard, mais ce n'était pas vraiment simple...

Temps d'exécution (une vingtaine de secondes) mais ça ne prendra pas plus longtemps si tu rajoutes des lignes...

Voir en pièce jointe.

36distance-vg.xlsm (82.54 Ko)

Ton enthousiasme me va droit au cœur :

Wow... pardon, je n'avais pas vu que vous aviez répondu autant!!!

Merci beaucoup! C'est un peu en dehors de mes compétences par contre...!!

Mais devinez quoi... il y avait tout simple... utiliser un tableau croisé dynamique...

Merci en tout cas!

Bonjour,

Merci pour ce retour !

A+

Rechercher des sujets similaires à "transformer tableau matrice"