Sélection de tableaux pour sous totaux automatiques

Ophé

XLDnaute Junior
Bonjour le forum,

Une macro me pose encore problème, je m'explique :

Je dois effectuer des sous totaux par 3 niveaux : name; nom du client; factures.
Lorsque j'effectue cette manip' par le biais de ma macro, elle ne fonctionne pas, le problème vient de ma sélection de tableau qui ne se modifie pas, je voudrais une macro qui sélectionne mon tableau (qui commence en cellule A5 avec les en tete de colonnes et qui varie selon le mois et les sous totaux) de la colonne A à la colonne AE jusqu'en bas du tableau, peut être en comptant le nombre de lignes je ne sais pas??

Quelqu'un peut-il m'aider??

La macro me donne ce code :

Range("A5").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Subtotal GroupBy:=8, Function:=xlSum, TotalList:=Array(18, 19, 20 _
, 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True

Selection.Subtotal GroupBy:=5, Function:=xlSum, TotalList:=Array(18, 19, 20 _
, 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True

Selection.Subtotal GroupBy:=30, Function:=xlSum, TotalList:=Array(18, 19, _
20, 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True


Je pense que le problème vient de la partie colorée qui ne fonctionne que pour le 1er sous total. Sachant que les sous totaux créent des cellules vides dans ma dernière colonne, le ctrl+maj+flèche ne fonctionne donc pas.


Merci d'avance.

Ophé
 

Ophé

XLDnaute Junior
Re : Sélection de tableaux pour sous totaux automatiques

Re,

Pour que ma demande soit plus claire je joins un fichier, les données sont triées par name, puis nom de client puis facture, je souhaite ensuite faire des sous totaux dans le même ordre automatiquement, avec un nombre de lignes qui varie. Merci d'avance

Cordialement

Ophé
 

Pièces jointes

  • extrai.xls
    33.5 KB · Affichages: 95
  • extrai.xls
    33.5 KB · Affichages: 93
  • extrai.xls
    33.5 KB · Affichages: 93
G

Guest

Guest
Re : Sélection de tableaux pour sous totaux automatiques

Bonjour le forum, Ophé,

Commence par vider la ligne contenant des ---------------
Pour avoir toujours une ligne vide au dessus du tableau

puis essaie ceci et vois si le resultat te convient:

Code:
Sub ssTotaux()
[COLOR=red]  'Selectionne la totalité du tableau[/COLOR]
[COLOR=red]  Range("A5").CurrentRegion.Select[/COLOR] 
Selection.Subtotal GroupBy:=8, Function:=xlSum, TotalList:=Array(18, 19, 20 _
, 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True
Selection.Subtotal GroupBy:=5, Function:=xlSum, TotalList:=Array(18, 19, 20 _
, 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True
Selection.Subtotal GroupBy:=30, Function:=xlSum, TotalList:=Array(18, 19, _
20, 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True
End Sub

A bientôt
 

Ophé

XLDnaute Junior
Re : Sélection de tableaux pour sous totaux automatiques

Bonjour Hasco, Excelo

Tout d'abord excelo, en effet le croisé dynamique fonctionne bien, je le soumettrai mais je fais ce qu'il m'a été demandé et le croisé dynamique n'en fesait pas parti, je dois rendre le tableaux avec les sous totaux, mais je soumettrai l'idée.

Ensuite, merci Hasco, j'ai testé en supprimant les pointillés tout en conservant la ligne 4 mais la macro ne fonctionne pas dans le sens où plusieurs "total général" s'inscrivent (voir dans le fichier joint). J'ai re testé en réinscrivant cette partie :
Range("A5").CurrentRegion.Select

avant chaque sous totaux et cela ne fonctionne pas non plus??

Avez-vous une solution??

Merci encore

Ophé
 

Pièces jointes

  • extrai.xls
    41 KB · Affichages: 78
  • extrai.xls
    41 KB · Affichages: 82
  • extrai.xls
    41 KB · Affichages: 77

Ophé

XLDnaute Junior
Re : Sélection de tableaux pour sous totaux automatiques

Re,

Je vous joins le tableau 1 qui est ce que j'ai au départ en réduis, et le tableau 2 qui est ce à quoi je veux arrivé par une macro, sachant que le nombre de colonne est fixe et que le nombre de lignes est variable.

Merci d'avance

Ophé
 

Pièces jointes

  • Tableau1.xlsm
    14.2 KB · Affichages: 56
  • Tableau2.xlsm
    17.7 KB · Affichages: 58
  • Tableau1.xlsm
    14.2 KB · Affichages: 63
  • Tableau2.xlsm
    17.7 KB · Affichages: 59
  • Tableau1.xlsm
    14.2 KB · Affichages: 60
  • Tableau2.xlsm
    17.7 KB · Affichages: 59
G

Guest

Guest
Re : Sélection de tableaux pour sous totaux automatiques

Re bonjour,

Voici une macro commentée qui fait les sous-totaux puis supprime les lignes qui contiennent "Total général". J'ai pas trouvé mieux.

A charge pour toi de sommer les colonnes en fin de tableau.

Code:
Sub ssTotaux()
Dim c As Range
Dim plage As Range
Dim adr1 As String
    'Copie de travail de la feuille extraction (pour tests)
    Worksheets("Extraction").Copy after:=Sheets(Sheets.Count)
    'Vider la ligne 4
    Range("A4").EntireRow.ClearContents
    'Selectionne la totalité du tableau
     Range("A5").CurrentRegion.Select
    'Création des sous-totaux
    Selection.Subtotal GroupBy:=8, Function:=xlSum, TotalList:=Array(18, 19, 20 _
    , 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True
    Selection.Subtotal GroupBy:=5, Function:=xlSum, TotalList:=Array(18, 19, 20 _
    , 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True
    Selection.Subtotal GroupBy:=30, Function:=xlSum, TotalList:=Array(18, 19, _
    20, 21, 22, 23), Replace:=False, PageBreaks:=False, SummaryBelowData:=True
    
    'Re sélectionner toutes le tableau
     Range("A5").CurrentRegion.Select
    
    'Rechercher dans la nouvelle plage de donnée la valeur "Total général"
    'Pour en supprimer les lignes
    With Selection
        'Cherche la première cellule contenant l'occurence
        Set c = .Find(what:="Total général", LookIn:=xlValues)
        'Si trouvée
       If Not c Is Nothing Then
           'Retenir son adresse
           adr1 = c.Address
           Do
               'Créer une plage de cellule
               If plage Is Nothing Then 'Pour la première cellule
                Set plage = c
               Else 'Pour les suivantes
                Set plage = Union(plage, c)
               End If
               'Chercher la prochaine occurence
               Set c = .FindNext(c)
           'Boucler tant qu'on est pas retourné à la première cellule trouvée
           Loop While Not c Is Nothing And c.Address <> adr1
       End If
    End With
 'Si une plage de cellule contenant "Total général" a été créee
 'supprimer les lignes correspondantes
 If Not plage Is Nothing Then plage.EntireRow.Delete
End Sub

A+
 

Ophé

XLDnaute Junior
Re : Sélection de tableaux pour sous totaux automatiques

Bonjour

j'ai testé cette macro mais le même problème est posé, les sous totaux 2 et 3 ne prennent pas tout le tableau, les sous totaux sont donc faux.

Merci vraiment d'avoir pris du temps pour moi, mais ce n'est pas la macro adaptée ici.

Ma demande est simplement de trouver une macro soit qui me sélectionne la totalité d'un tableau même s'il contient des cellules vides, en recherchant par exemple le nombre de lignes totales remplies et en indiquant ensuite la sélection de A5 à AE+le nombre de ligne.

Quelqu'un saurait-il faire ça?

Je ne trouve vraiment pas la solution.

Merci encore

Ophé
 

cibleo

XLDnaute Impliqué
Re : Sélection de tableaux pour sous totaux automatiques

Bonjour Ophé, Hasco, excelo

Vois ce fil et le travail de Charly2, est-ce que cela répond en partie à ta demande ?

https://www.excel-downloads.com/threads/inserer-un-libelle-dans-un-sous-total.56505/

Charly2 fait référence à une plage nommée avec la fonction "Decaler", la solution à ton problème passe peut-être par là.

Suggestion : vu que tu as 3 niveaux, procédes peut-être en 3 étapes en t'inspirant de ce travail.

Je laisse les experts en VBA poursuivre, je suis certain qu'il y une solution, patience Ophé.

Amicalement Cibleo
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote