Microsoft 365 Regroupement de quantité et longueur VBA ou Power Query

  • Initiateur de la discussion Initiateur de la discussion netparty
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

netparty

XLDnaute Occasionnel
Bonjour à tous
Pourriez-vous m'aider pour mon fichier dans lequel j'aimerais avoir le rassemblement des données de l'onglet "Données" vers l'onglet "Recap", je ne sais pas ce qui est le mieux VBA ou Power Query pour faire cela.
Je vous explique en deux mots,
Dans l'onglet "Données" j'ai plusieurs tableaux T_DATA_1, T_DATA_2 qui reprennent des quantités et longueurs et j'aimerais regrouper tous cela dans un seul tableaux avec le détails de chaques tableaux et les totaux généraux.
Je joint mon fichier pour avoir un aperçu de ce que je souhaite avoir comme résultat dans l'onglet "Recap"
Merci d'avance pour votre aide.
 

Pièces jointes

Bonjour @job75

Est-il possible de modifier la mise en page ?

Exemple :
1748582631767.png


Merci et bonne journée
 
Bonjour netparty, le forum,

En remplaçant "Quantité" par "Qte" et "Longueur" par "Long." Columns.Autofit réduit la largeur des colonnes, l'effet n'est pas très bon.

Par ailleurs s'il y a un grand nombre de tableaux la fusion c.Resize(, 2).Merge prend beaucoup trop de temps.

J'ai donc modifié la fin de la macro :
VB:
'---restitution---
Application.ScreenUpdating = False
Cells.Delete 'RAZ
ub = UBound(resu)
With [C2] '1ère cellule de destination
    .Resize(UBound(resu), UBound(resu, 2)) = resu
    .Cells(3).Resize(ub - 2).Borders.Weight = xlThin 'bordures de la 1ère colonne
    .Cells(1).Resize(ub).Borders(xlEdgeRight).LineStyle = xlDouble 'bordure double à droite
    .Cells(1, 2 * n + 2).Resize(ub).Borders(xlEdgeRight).LineStyle = xlDouble 'colonne de séparation
    .Cells(1, 2).Resize(ub, UBound(resu, 2) - 1).HorizontalAlignment = xlCenter
    For Each c In .EntireRow.SpecialCells(xlCellTypeConstants)
        c.Resize(, 2).HorizontalAlignment = xlCenterAcrossSelection 'plus rapide que la fusion
        c.Resize(ub, 2).Borders.Weight = xlThin
        c.Resize(ub).Borders(xlEdgeRight).LineStyle = xlDot 'bordure en pointillés
        c.Resize(ub, 2).Borders(xlEdgeRight).LineStyle = xlDouble 'bordure double à droite
    Next c
    Union(.Cells(1), .Cells(1, 2 * n + 2)).EntireColumn.AutoFit 'largeurs de la 1ère colonne et de la colonne de séparation
End With
End Sub
Pour tester j'ai recopié le 1er tableau pour obtenir un total de 8189 tableaux structurés, c'est le maximum possible dans la feuille "Recap".

La macro s'exécute chez moi en 5,7 secondes, c'est très acceptable.

A+
 

Pièces jointes

Dernière édition:
Bonjour netparty, le forum,

En remplaçant "Quantité" par "Qte" et "Longueur" par "Long." Columns.Autofit réduit la largeur des colonnes, l'effet n'est pas très bon.

Par ailleurs s'il y a un grand nombre de tableaux la fusion c.Resize(, 2).Merge prend beaucoup trop de temps.

J'ai donc modifié la fin de la macro :
VB:
'---restitution---
Application.ScreenUpdating = False
Cells.Delete 'RAZ
With [C2] '1ère cellule de destination
    .Resize(UBound(resu), UBound(resu, 2)) = resu
    .Cells(3).Resize(UBound(resu) - 2).Borders.Weight = xlThin 'bordures de la 1ère colonne
    .Cells(1, 2).Resize(UBound(resu), UBound(resu, 2) - 1).HorizontalAlignment = xlCenter
    For Each c In .EntireRow.SpecialCells(xlCellTypeConstants)
        c.Resize(, 2).HorizontalAlignment = xlCenterAcrossSelection 'plus rapide que la fusion
        c.Resize(UBound(resu), 2).Borders.Weight = xlThin
    Next c
    Union(.Cells(1), .Cells(1, 2 * n + 2)).EntireColumn.AutoFit 'largeurs de la 1ère colonne et de la colonne de séparation
End With
End Sub
Pour tester j'ai recopié le 1er tableau pour obtenir un total de 8189 tableaux structurés, c'est le maximum possible dans la feuille "Recap".

La macro s'exécute chez moi en 5,8 secondes, c'est très acceptable.

A+
Merci @job75 pour les modifications

Est-il aussi possible de modifier les bordures comme l'exemple du post #19
Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour