IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Opérations sur matrice symétrique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut Opérations sur matrice symétrique
    Bonsoir à tout le monde,

    Tout d'abord je remercie vraiment ceux qui voudront bien prendre la peine de se pencher quelques instants sur mon problème.

    Voilà, j'ai une matrice symétrique, et j'ai besoin de "fusionner" des colonnes en les additionnant.

    Par exemple la première et la 3ème colonne.....mais TOUT EN GARDANT la symétrie.....Donc une fois les colonnes additionnées......je dois réaliser la même opération sur les lignes.

    Je ne sais pas si c très clair alors voici un petit exemple miniature:

    ......A1...B....A2....C
    A1....0....2.....3....4
    .B.....2....0.....4....5
    A2....3....4.....0....7
    .C....4.....5....7.....0

    Sur cette petit matrice il s'agirait de sommer les colonnes A1 et A2 pour en faire une seule colonne A......puis de faire de même sur les lignes.



    je joins le fichier excel de ce que j'ai pu faire jusque là avec mes maigres connaissances en VBA....il y a sur la feuille la matrice en question.

    J'ai réussi à stocker ma matrice dans un tableau de tableaux.....et je suis bloqué.....

    Je prends toutes les idées!!!
    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Pour terminer ton explication du problème, tu pourrais donner le résultat attendu dans l'exemple que tu as pris.

    Cordialement,

    PGZ

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Par défaut
    Oui bien sur, excuses moi Pgz.

    Donc la petite matrice que j'ai prise pour exemple est la suivante:
    ......A1...B....A2....C
    A1....0....2.....3....4
    .B.....2....0.....4....5
    A2....3....4.....0....7
    .C....4.....5....7.....0

    je veux "grouper" les données A1 et A2...

    Je commence par additionner les COLONNES A1 et A2, cela donne:
    ......A....B....C
    A1...3...2....4
    ..B...6...0....5
    A2...3...4....7
    .C...11..5....0

    Et ensuite.....pour garder le caractère "symétrique" de la matrice....j'additionne les lignes A1 et A2 pour former la ligne A, cela donne:

    ......A....B....C
    A....6....6....11
    B....6....0.....5
    C...11...5.....0

    Et voilà...de cette manière on peut lire par exemple sur la ligne A qu'il y a 6 liens avec B.....et c'est bien la somme des liens qu'avait A1 et A2 avec B (à savoir 2 et 4).


    Sur une petite matrice.....je suis sur de savoir coder en VBA les opérations successives que je viens de te décrire....
    Mais quand la matrice fera 100 colonnes et 100 lignes......Aie Aie Aie...

    salut!!

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Un exemple de départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Dim i As Integer, j As Integer, m As Integer, n As Integer, R As Integer
    Dim Tb, Res
     
    m = InputBox("Colonne 1"): n = InputBox("Colonne 2")
     
    Tb = Sheets("Feuil1").Range("B2:Y25").Value
    R = UBound(Tb)
    For i = 1 To R
        Tb(i, m) = Tb(i, m) + Tb(i, n)
        Tb(i, n) = Null
        Tb(m, i) = Tb(m, i) + Tb(n, i)
        Tb(n, i) = Null
    Next i
    ReDim Res(1 To R - 1, 1 To R - 1)
    m = 0: n = 0
    For i = 1 To R
        j = 1
        If Not IsNull(Tb(i, j)) Then
            m = m + 1: n = 0
            For j = 1 To R
                If Not IsNull(Tb(i, j)) Then
                    n = n + 1
                    Res(m, n) = Tb(i, j)
                End If
            Next j
        End If
    Next i
     
    With Sheets("Feuil2")
        .UsedRange.Clear
        .Range(.Cells(2, 2), .Cells(R, R)).Value = Res
    End With

Discussions similaires

  1. [Débutant] Opération sur matrices sans boucle
    Par SpacedCb dans le forum MATLAB
    Réponses: 1
    Dernier message: 02/05/2013, 10h11
  2. Opération sur matrices contenues dans des cells
    Par papi13 dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/06/2011, 20h15
  3. opération sur matrice
    Par shirya dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/03/2008, 17h27
  4. [débutant] opérations sur matrices
    Par bendamen dans le forum Langage
    Réponses: 8
    Dernier message: 10/05/2007, 07h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo