[Résolu] Centraliser des données (Rapport) par macro

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour Le Forum,
Je me suis inspiré d’une discussion du 6 janvier sur Le Forum pour appliquer une macro dans le fichier ci-joint.
Elle réalise une centralisation de valeurs par catégories.

La macro agit correctement une première fois de la façon suivante :
La phase 1 s’affiche en colonne A et B mais fait le travail comme vous le verrez en affichage sur les colonnes C, D, E F pour, après , la 2ème phase)
- copie en feuille 3 ‘SYNTH ‘ de deux colonnes de la feuille 1,
- exécute un tri croissant,
- efface ces deux colonnes de travail
- n’affiche enfin que les deux colonnes de résultat des calculs (sous-totaux par catégories).

Je dois répéter une situation 2 et afficher sur la droite le résultat ; C’est là que la macro ne fonctionne pas bien.
Pour montrer mon problème, je vous laisse apparentes les colonnes collées pour le travail de centralisation.

LE PROBLÈME :
Appuyer sur le bouton rouge GO : insister et passer en débogage pour l'affichage.
Dans cette phase 2, la macro reporte inutilement une succession de valeurs au-delà de la cellule C170 en colonne F, alors que cette partie devrait être vide.

Je n’arrive pas à corriger la partie de macro qui permettrait de donner le résultat correct.
Je devrais en effet effectuer une phase 3 similaire avec d’autres colonnes collées et à trier.

Mon constat :
Dans Sub SOUSTb() serait-ce la ligne suivante qui n’est pas active dans la deuxième phase de la macro ?
K = K + Application.CountIf(Plage.Columns(1), Plage.Columns(1).Cells(I, 1))

Merci de vous penchez sur mon problème,
Webperegrino
 

Pièces jointes

  • CENTR.xls
    46.5 KB · Affichages: 55
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Centraliser des données (Rapport) par macro

Bonjour Le Forum,
Pour être plus simple (après la lecture du message précédent) :
Pourquoi et comment faire en sorte que la section F170 : F65536 ne se remplisse pas avec le dernier sous-total extrait ? Où se trouve donc ma mauvaise codification dans la macro ?

C'est à cause de cela que la macro tourne longtemps puis essaie d'afficher, en phase 2, le résultat des calculs.
(La phase 1 fonctionne parfaitement).
Webperegrino
 
Dernière édition:

néné06

XLDnaute Accro
Re : Centraliser des données (Rapport) par macro

Bonjour à tous,


Dr = Plage.Rows.Count

J = 1
For I = 1 To Dr
Set Plage = .Range(.Cells(2, 3), .Cells(Dr, 4).End(xlUp))
K = K + Application.CountIf(Plage.Columns(1), Plage.Columns(1).Cells(I, 1))
J = J + 1


'*************************************************************************************
' ********* La valeur J dépasse les capacités et copie indéfiniment la derniere valeur
'***** Possibilité de placer ceci If Cells(K, 5) = "" Then Exit Sub pour eviter que J prenne valeur > 65537.
' Essayes et expliques nous la suite si besoin
'*************************************************************************************

.Cells(J, 5) = Plage.Columns(1).Cells(I, 1)
.Cells(J, 6) = Application.Sum(.Range("D" & I + 1 & ":D" & K + 1))
I = K
Next I
End With
End Sub

A+

René
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Centraliser des données (Rapport) par macro

Bonsoir Le Forum,
Voici la solution que j'ai mise en place :

Sub SOUSTb()
With Worksheets("SYNTH")
...
K = K + Application.CountIf(Plage.Columns(1), Plage.Columns(1).Cells(I, 1))
If Cells(J, 5) = "" Then Exit Sub
J = J + 1
.Cells(J, 5) = Plage.Columns(1).Cells(I, 1)

puis dans

Sub Centalisateur()
...
SOUSTb
Range("A2").Select

...

Merci à toi Bebere pour ton intervention, mais ta proposition ne fonctionnait pas bien. Par contre je vais étudier le code car il est très intéressant.
Néné06, j'ai expérimenté ta solution ; ça bloquait.
Il a suffit que je déplace légèrement ta ligne complémentaire et cette fois-là ça fonctionne.
En supplément, une fois sorti avec Exit Sub de la macro 2, il faut toutefois forcer un placement, en A2 par exemple, dans la macro générale, et tout devient limpide dans ce cas.
Mission accomplie donc avec le remède de Néné06 : merci à vous deux.
Je suis ravi de vos propositions.
Cordialement,
Webperegrino
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260