macro sous total

ngexcel

XLDnaute Occasionnel
Bonjour je suis sur un projet avec un fichier excel une base de donnée brute
je cherche une macro qui puisse me faire la même chose que la fonction sous total avec la somme des colonnes sélectionnés voir mon exemple cela sera plus claire
merci d avance
 

Pièces jointes

  • export.XLSX
    193.1 KB · Affichages: 57
  • resultat de l exportation.xlsx
    9 KB · Affichages: 48

ngexcel

XLDnaute Occasionnel
bonsoir
j ai mis le code
j ouvre le fichier synthèse.xlsm qui est bien dans c:\exportation
la fenêtre s ouvre et me demande de chercher l endroit ou est le fichier export donc je choisi c:\exportation\export.xlsm ca fonctionne
mais comment aller directement sans que je sois obligé de sélectionner export.xlsm peux être que j ai loupé une manip merci
 

JCGL

XLDnaute Barbatruc
Bonjour à tous,

La ligne est présente :
VB:
Application.DisplayAlerts = False
    Windows("Export.xlsx").Close False
    Application.DisplayAlerts = True

Plus ceci :

VB:
    With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
.......
VB:
    With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With

A+ à tous
 

ngexcel

XLDnaute Occasionnel
je suis sous excel 2007 je comprend pas
tu peux me renvoyer le fichier je t explique comment je teste
j ouvre le fichier export je saisie dans la colonne A2 une donnée afin vérifier si elle arrive bien dans synthèse je ferme le fichier export et j ouvre synthèse
et moi il me demande toujours l endroit
 

Dranreb

XLDnaute Barbatruc
Avec ceci dans ThisWorkbook qu'est-ce que ça donne ?
VB:
Option Explicit

Private Sub Workbook_Open()
Dim Cls As Workbook, Poste As SsGr, L As Long, T(1 To 1000, 1 To 4), Détail
Set Cls = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Export.xlsx")
For Each Poste In Gigogne(Cls.Worksheets("Sheet1").Rows(2), 1)
   L = L + 1
   T(L, 1) = Poste.ID
   For Each Détail In Poste.Co
      T(L, 2) = T(L, 2) + Détail(12)
      T(L, 3) = T(L, 3) + Détail(9)
      Next Détail
   T(L, 4) = Poste.Count
   Next Poste
Feuil1.[A2:D1002].Value = T
Cls.Close False
End Sub

Toujours en cochant la référence à GigIdx, bien sûr.
 

ngexcel

XLDnaute Occasionnel
bonsoir Dranreb si je mets ton code en sélectionnant dans les références Gigldx j ai un message d erreur sur la ligne
Workbooks.Open Filename:=ThisWorkbook.Path & "\Export.xlsx"

je suis avec JCGL a qui j ai renvoyé le fichier et lui ca fonctionne tu peux regarder moi je comprend pas pourquoi ca bug
 

Dranreb

XLDnaute Barbatruc
Quelle erreur ? Vérifiez si ThisWorkbook.Path vaut bien je chemin où se trouve le Export.xlsx

J'ai fait quelque changements dans la procédure:
VB:
Option Explicit

Private Sub Workbook_Open()
Dim Cls As Workbook, Données As Collection, Poste As SsGr, L As Long, T(), Détail
Set Cls = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Export.xlsx")
Set Données = Gigogne(Cls.Worksheets("Sheet1").Rows(2), 1)
Cls.Close False
ReDim T(1 To Données.Count, 1 To 4)
For Each Poste In Données
   L = L + 1
   T(L, 1) = Poste.ID
   For Each Détail In Poste.Co
      T(L, 2) = T(L, 2) + Détail(12)
      T(L, 3) = T(L, 3) + Détail(9)
      Next Détail
   T(L, 4) = Poste.Count
   Next Poste
Feuil1.[A2:D1000000].Value = Empty
Feuil1.[A2:D2].Resize(L).Value = T
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Vous pourriez aussi mettre ça dans le module Feuil1 :
VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ChNomF
If Target.Address <> "$H$1" Then Exit Sub
ChNomF = Application.GetOpenFilename("Fichier Export,*.xlsx")
If VarType(ChNomF) = vbString Then Target.Value = ChNomF
End Sub
Sélectionne la cellule H1 dz la dite feuille et choisir votre fichier une fois pour toutes, et dans la Workbook_Open faire :
VB:
 Set Cls = Workbooks.Open(Filename:=Feuil1.[H1].Value)
 

Discussions similaires

Réponses
6
Affichages
302
Réponses
12
Affichages
543
Réponses
3
Affichages
150
Réponses
6
Affichages
256