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 :

VBA Excel aditionner les colonnes d un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    gem
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : gem
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut VBA Excel aditionner les colonnes d un tableau
    Bonjour,

    Sous VBA je cherche à créer un code me permettant d’additionner les colonnes d’un tableau entre elle.
    Si j’ai un tableau avec trois colonne (A,B,C)
    J’ai besoin d’obtenir dans un nouveau tableau
    Les résultats de la colonne A+B en 1ere colonne
    Les résultats de la colonne A+C en deuxième colonne
    et ainsi de suite B+C ….

    J’ai essayé comme cela mais ca ne fonctionne pas :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    Sub record() 
     
    Dim table As Variant 
    Dim output As Variant 
     
    nbl = Worksheets("(3)data").Cells(1, 2)me donne le nombre de ligne de mon tableau 
    nbc = Worksheets("(3)data").Cells(2, 2)me donne le nombre de colonne de mon tableau 
     
    ReDim table(1 To nbl, 1 To nbc) 
     
    nbp = nbc * (nbc - 1) / 2me donne le nombre de pair possibles 
     
    ReDim output(1 To nbl, 1 To nbp) 
     
    For i = 1 To nbc 
    For j = 1 To nbl 
     
    table(j, i) = Worksheets("(3)data").Cells(j, i) ‘rempli mon tableau table avec les données 
     
    Next j 
    Next i 
     
    c = 1 
     
    For k = 1 To nbc – 1 
    For g = 2 To nbc 
    For h = 1 To nbl 
     
     
    output(h, c) = table(h, k) + table(h, g) ‘ici ca bloque. 
     
    Next h 
     
    c = 1 + c 
     
    Next g 
     
    Next k 
     
    End Sub
    une idee? merci pour votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Points : 319
    Points
    319
    Par défaut
    Bonjour,

    Un truc vite fait du genre.

    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
     
     
    Sub faire_addition()
     
    Dim nb_col As Integer, nb_ligne As Integer
    Dim cpt_l As Integer, cpt_c As Integer, cpt_add As Integer
    Dim col_copie As Integer
     
     
    nb_col = ActiveWorkbook.Sheets("Feuil1").Range("a1").End(xlToRight).Column
    nb_ligne = ActiveWorkbook.Sheets("Feuil1").Range("a65536").End(xlUp).Row
     
    For cpt_l = 1 To nb_ligne
        col_copie = 0
        For cpt_c = 1 To nb_col
            For cpt_add = cpt_c To nb_col
                If cpt_add <> nb_col Then
                    col_copie = col_copie + 1
                    ActiveWorkbook.Sheets("Feuil2").Cells(cpt_l, col_copie).Value = ActiveWorkbook.Sheets("Feuil1").Cells(cpt_l, cpt_c).Value + ActiveWorkbook.Sheets("Feuil1").Cells(cpt_l, cpt_add + 1).Value
                End If
            Next cpt_add
        Next cpt_c
    Next cpt_l
     
    End Sub
    Cordialement

  3. #3
    Candidat au Club
    Homme Profil pro
    gem
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : gem
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Merci + Min de chaque colonne
    Merci je vais regarder cela, sinon j ai a la fin de mon code ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For i = 1 To tot 'nombre de colonne
     
    With Application.WorksheetFunction
     
    Worksheets("test").Cells(1, i) = Round(.Min(.Index(ratio, 0, i)), 2)
     
    End With
    Next i
    Je cherche a avoir le min de chaque colonne mais le code bug pendant l execution soit pour i= 5 ou i=9 ou i=10 cela varie.

    Comment puis-je eviter cela?

    Merci

  4. #4
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Je suppose que tes données initiales sont dans la feuille (3)data de A4:XXnn (avec XX la dernière colonne et nn le nombre de lignes). La ligne 3 est celle des titres des colonnes.

    Le résultat final est inscrit dans la feuille Feuil2

    Code à adapter éventuellement à ton fichier
    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
    Sub Record()
    Dim NbC As Integer, NbP As Integer, j As Integer, m As Integer, n As Integer
    Dim NbL As Long, i As Long
    Dim Table, Output
     
    Application.ScreenUpdating = False
    With Worksheets("(3)data")
        NbL = .Cells(.Rows.Count, "A").End(xlUp).Row            'Donne la ligne de la dernière cellule remplie de la colonne A
        NbC = .Cells(3, .Columns.Count).End(xlToLeft).Column    'Donne la colonne de la dernière cellule remplie de la ligne 3
        Table = .Range(.Cells(4, 1), .Cells(NbL, NbC))
        NbL = NbL - 3
        NbP = NbC * (NbC - 1) / 2                               'Donne le nombre de pair possibles
        ReDim Output(1 To NbL, 1 To NbP)
        For m = 1 To NbC - 1
            For n = m + 1 To NbC
                j = j + 1
                For i = 1 To NbL
                    Output(i, j) = Table(i, m) + Table(i, n)
                Next i
            Next n
        Next m
    End With
    Worksheets("Feuil2").Range("A1").Resize(NbL, NbP) = Output
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    gem
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : gem
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Suite code
    bonjour,

    merci pour vos réponses, qui m’ont permis d’arriver à sommer mes colonnes, seulement maintenant je n’arrive pas a sortir la valeur min de chaque colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For w = 1 To tot ‘nombre de colonne
     
    With Application.WorksheetFunction
    Worksheets("test").Cells(1, w) = Round(.Min(.Index(ratio, 0, w)), 2)
    End With
    Next w
    Merci pour votre aide

Discussions similaires

  1. Mettre automatiquement à jour les colonnes d'un tableau Excel
    Par saninx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2015, 17h51
  2. Réponses: 0
    Dernier message: 02/06/2014, 15h18
  3. [Excel] Export : récupérer les colonnes du tableau jqgrid affichés seulement
    Par ginger4957 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 03/09/2010, 12h14
  4. Réponses: 5
    Dernier message: 15/05/2008, 12h52
  5. [VBA|EXcel]Moduler les colonnes d'un tableau
    Par quario dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/03/2007, 17h09

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