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 :

Insérer une somme dans une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut Insérer une somme dans une colonne
    Bonjour,
    Je travaille sur une macro EXCEL qui récupère le résultat d'une requête ACCESS pour l'afficher dans une feuille EXCEL.

    Voici grosso modo le code :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    ...
        Set ExcelApplication = CreateObject("Excel.Application")
     
        ' Rend Excel visible au travers de l'objet Application
        ExcelApplication.Application.Visible = False
        ExcelApplication.Workbooks.Open FileName:=sFichierXls
     
        With ExcelApplication
     
            ' Insertion d'une ligne vide au début
    '        .Rows("1:1").Select
    '        .Selection.Insert
            'Mise en forme des colonnes numériques
            .Columns("I:I").NumberFormat = "0.00%"
            .Columns("M:P").NumberFormat = "0.00"
     
            'Insertion des 3 colonnes calculées
            .Columns("Q:S").Select
            .Selection.Insert Shift:=-4161
            'Ajout des règles de calculs
            .Range("Q2").FormulaR1C1 = "=IF(RC[-9]=0,0,RC[-4]/RC[-9])"
            .Range("R2").FormulaR1C1 = "=IF((RC[-8]+RC[-6])=0,0,RC[-4]/(RC[-8]+RC[-6]))"
            .Range("S2").FormulaR1C1 = "=IF((RC[-8]+RC[-7])=0,0,RC[-4]/(RC[-8]+RC[-7]))"
     
            'Recherche de la dernière ligne
            .ActiveSheet.cells(1, 1).Select
            .Selection.End(-4121).Select
            iDernierLigne = .ActiveCell.Row
     
            'Recopie des formules de calcul sur toutes les lignes
            .Range("Q2:S2").Select
            .Selection.AutoFill Destination:=.Range(.cells(2, 17), .cells(iDernierLigne, 19))
     
            .Range("Q1").Select
            'Ajout des titres sur les colonnes calculées
            .ActiveSheet.cells(1, 17) = "Average Value per Subscriber (k€)"
            .ActiveSheet.cells(1, 18) = "Average Value per Subscriber (Classic) (k€)"
            .ActiveSheet.cells(1, 19) = "Average Value per Subscriber (Share+) (k€)"
     
            .ActiveSheet.cells(1, 1).Select
     
            '*****************************
            'Mise en page globale
            '*****************************
            .Rows("1:1").Select
            With .Selection
                .HorizontalAlignment = -4108
                .VerticalAlignment = -4108
                .WrapText = True
            End With
     
            .cells.Select
            .cells.EntireColumn.AutoFit
            .Columns("I:T").ColumnWidth = 11
     
            'Ajout des bordures
            .Rows("1:1").Select
            .Range(.Selection, .ActiveCell.SpecialCells(11)).Select
            For i = 7 To 12
                BordureTab ExcelApplication, i
            Next i
     
            With .ActiveSheet.PageSetup
                .LeftHeader = ""
                .CenterHeader = ""
                .RightHeader = ""
                .LeftFooter = ""
                .CenterFooter = "Page &P"
                .RightFooter = ""
                .LeftMargin = ExcelApplication.Application.InchesToPoints(0.2)
                .RightMargin = ExcelApplication.Application.InchesToPoints(0.2)
                .TopMargin = ExcelApplication.Application.InchesToPoints(0.2)
                .BottomMargin = ExcelApplication.Application.InchesToPoints(0.2)
                .HeaderMargin = ExcelApplication.Application.InchesToPoints(0)
                .FooterMargin = ExcelApplication.Application.InchesToPoints(0)
                .PrintHeadings = False
                .PrintGridlines = False
                .PrintQuality = 600
                .CenterHorizontally = False
                .CenterVertically = False
                .Orientation = 2
                .Draft = False
                .PaperSize = 9
                .Zoom = 50
            End With
            .ActiveSheet.cells(1, 1).Select
        End With
    ...
    Le problème : je voudrais insérer en bas de certaines colonnes en l'occurrence la colonne Q la somme de toutes les lignes de cette colonne.
    Comment faire ? Je ne connais pas bien VBA / Excel !

    Merci pour votre aide.

  2. #2
    Membre averti Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Points : 391
    Points
    391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
     
    Line = Cells(Rows.Count, "Q").End(xlUp).Row
    Cells(Rows.Count, "Q").End(xlUp).Select
    ActiveCell.Formula = "=SUM(" & Range("Q1:Q" & Line).Address & ")"
    End Sub

    je dirai quelque chose ds ce style la....

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    470
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 470
    Points : 493
    Points
    493
    Par défaut
    Bonjour
    Ce code insert juste en Bas des colonnes (Q ; R ; S) le total entière de ces dernière.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub SumCol()
    xl = Range("Q2:S2000").Find("*", , , , , xlPrevious).Row + 1
        For i = 17 To 19
                    Cells(xl, i) _
                    = Application.WorksheetFunction.Sum( _
                    Range(Cells(2, i), Cells(Rows.Count, i).End(xlUp).Address))
              Next
    End Sub
    Bonne journée

    Abed_H

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut
    Merci pour vos réponses, je n'ai pas encore testé.

    Ne peut-on pas également procéder ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Set ExcelApplication = CreateObject("Excel.Application")
     
        ' Rend Excel visible au travers de l'objet Application
        ExcelApplication.Application.Visible = True
        ExcelApplication.Workbooks.Open FileName:=sFichierXls
     
        With ExcelApplication
    ...
       .Range("G:" & iDernierLigne + 1).Select
            .ActiveCell.FormulaR1C1 = "=SUM(R[- " & iDernierLigne - 1 & " ]C:R[-1]C)"
    ...
        End With
    iDernierLigne a la valeur de la dernière ligne contenant des données.
    Dans mon cas 172.

    Dans ma macro EXCEL, j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range("G173").Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-171]C:R[-1]C)"
    Mais cela ne fonctionne pas, vous voyez pourquoi ?

    Merci.


    Cela correspond à du code généré par une macro EXCEL lorsque je fais la somme sur une colonne

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 560
    Points : 148
    Points
    148
    Par défaut
    Bon cela a l'air de marcher en changeant les indices.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [XL-2003] Insérer la valeur d'une cellule dans une phrase d'une autre
    Par DonaldTron dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2009, 19h50
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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