Problème sous totaux VBA

Fermé
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008 - 28 mai 2008 à 16:49
 Obi35 - 10 juin 2008 à 17:58
Bonjour,
J'ai un problème qui est sûrement très simple à résoudre, mais je comprends pas pourquoi la macro réagit comme ça!!!
Je suis en train de rédiger une macro qui copie une feuille (feuille marge), effectue un trie puis reporte les données répondant à la sélection sur une autre feuille(feuille ramasse). Après Sur la feuille "planning", je fais des sous totaux et après je voudrais reporter les sous totaux sur la feuille "ramasse" avec une sorte de recherche V qui retrouverait le bon code voyage auquel le sous total doit être reporté....le p^roblème, c'est que ma macro me fait bien les sous totaux sur le feuille "planning", mais impossible de SELCTIONNER par exemple la cellule A1 à la fin du traitement qui me permettrai ensuite de continuer mon code pour faire la recherche V ensuite(parce qu'il faut bien que je remonte en haut de la feuille "planning"... Donc j'ai mis un msgbox "fin de traitement" pour voir si la lecture de la macro allait bien jusqu'au bout...et il affiche bin le message "fin de traitement" MAIS NE ME SELECTIONNE PAS LA CELLULE A1 juste avant...
:( C'est peut être une erreur toute bête...mais je ne trouve pas et ça me bloque!!!

Je vous met le code... en espérant que qq'1 vienne à mon aide!!!

Merci beaucoup par avance!!

Sub ANALYSE_RAMASSE()

' Annulation du filtrage éventuel sur la feuille RAMASSE
Sheets("MARGE").Select ' Sélection feuille MARGE
On Error Resume Next ' Pour éviter une erreur sur la ligne suivante (erreur si données non filtrées)
ActiveSheet.ShowAllData ' Annulation du filtrage

' Suppression du contenu éventuel de la feuille RAMASSE
Sheets("RAMASSE").Select ' Sélection feuille RAMASSE
Cells.Select ' Sélection de la feuille entière
Selection.Delete ' Suppression de la feuille entière
Range("A1").Select ' Sélection cellule A1
ActiveCell.Value = "Date" ' Stockage libellé Date en cellule active
Range("B1").Select ' Sélection cellule B1
ActiveCell.Value = "Code voyage" ' Stockage libellé Code voyage en cellule active
Range("C1").Select ' Sélection cellule C1
ActiveCell.Value = "Libellé voyage" ' Stockage libellé Libellé voyage en cellule active
Range("D1").Select ' Sélection cellule D1
ActiveCell.Value = "Cout ramasse" ' Stockage libellé Cout ramasse en cellule active
Range("E1").Select ' Sélection cellule E1
ActiveCell.Value = "Nb palette" ' Stockage libellé Nb palette en cellule active
Range("F1").Select ' Sélection cellule F1
ActiveCell.Value = "Coût / palette" ' Stockage libellé Nb palette en cellule active
Range("A1:F1").Select
Selection.Interior.ColorIndex = 37
Selection.Font.ColorIndex = 11
Selection.Font.Size = 12
Selection.Font.Bold = True
Selection.HorizontalAlignment = xlCenter

'Mise en forme de la ligne de titre
With Selection.Borders(xlInside)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With


With Selection.Borders(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With


Columns("A:A").ColumnWidth = 12
Columns("B:B").ColumnWidth = 15
Columns("C:C").ColumnWidth = 33
Columns("D:D").ColumnWidth = 16
Columns("E:E").ColumnWidth = 12
Columns("F:F").ColumnWidth = 15


Range("A2").Select ' Sélection cellule A2


Sheets("PLANNING").Select ' Sélection feuille RAMASSE
Selection.RemoveSubtotal
'Recherche de la première ligne vide
Range("A1").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Select
Loop

'Définition de la zone à trier
Set ZONE = Range(Cells(1, 1), ActiveCell.Offset(-1, 18))
ZONE.Select

'Tri sur la date puis sur le code voyage
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range _
("I2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal

'Mise en place de la totalisation par code voyage (Données/Sous totaux)
Selection.Subtotal GroupBy:=9, Function:=xlSum, TotalList:=Array(17), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True


Range("A1").Select

' Parcours séquentiel de la feuille MARGE et report sur la feuille RAMASSE
Sheets("MARGE").Select ' Sélection feuille MARGE

Range("A2").Select ' Sélection cellule A2
Do While ActiveCell.Value <> ""
' Récupération des informations concernant le MARGE
DATE_VOYAGE = Left(ActiveCell.Value, 10) ' Date voyage
ActiveCell.NumberFormat = "dd/mm/yyyy" ' Format date
ActiveCell.Offset(0, 1).Select ' Passage à la colonne suivante
CODE_VOYAGE = ActiveCell.Value ' Code voyage
ActiveCell.Offset(0, 1).Select ' Passage à la colonne suivante
LIBELLE_VOYAGE = ActiveCell.Value ' Libellé voyage
ActiveCell.Offset(0, 2).Select ' Passage à la colonne suivante
TYPE_VOYAGE = ActiveCell.Value ' Type voyage
ActiveCell.Offset(0, 4).Select ' Passage à la colonne suivante
COUT_RAMASSE = Right(ActiveCell.Value, 5) ' Cout ramasse
ActiveCell.NumberFormat = "00,00" ' Format du coût


'MsgBox ("2 gauche code voyage : " + Left(CODE_VOYAGE, 2))
'MsgBox ("2 droite code voyage : " + Right(CODE_VOYAGE, 2))

If Left(CODE_VOYAGE, 2) >= 0 And Left(CODE_VOYAGE, 2) <= 99 And Right(CODE_VOYAGE, 2) <> "RA" Then
' Passage à la feuille RAMASSE et report
Sheets("RAMASSE").Select ' Sélection feuille RAMASSE
ActiveCell.Value = DATE_VOYAGE
ActiveCell.Offset(0, 1).Select ' Décalage d'une cellule vers la droite
ActiveCell.Value = CODE_VOYAGE
ActiveCell.Offset(0, 1).Select ' Décalage d'une cellule vers la droite
ActiveCell.Value = LIBELLE_VOYAGE
ActiveCell.Offset(0, 1).Select ' Décalage d'une cellule vers la droite
ActiveCell.Value = COUT_RAMASSE
ActiveCell.Offset(0, 1).Select ' Décalage d'une cellule vers la droite
ActiveCell.Offset(1, -4).Select ' Passage à la ligne suivante (colonne A)

Sheets("MARGE").Select
ActiveCell.Offset(1, -8).Select

Else

ActiveCell.Offset(1, -8).Select

End If

ActiveCell.Offset(1, -8).Select
Sheets("MARGE").Select
Range("A1").Select

Loop



Sheets("PLANNING").Select
Range("A1").Select
MsgBox ("Fin de traitement ") 'Ce message s'affiche bien



End Sub

12 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
28 mai 2008 à 17:09
Bonjour,
zut.. du fait que tu a poster plusieur fois je doit recommencer la réponse, pas grave :D
Comme tu met un MsgBox tu quite la feuille mais je pense que c'est pas pour cela que la cellule A1 ne serait pas active.
Tu met après le MsgBox
e = ActiveCell.address
et un point d'arrèt sur le MSGBOX (F9) au cas ou..
Un point d'arrète sur le end Sub
Quand arrèter sur msgbox regarde si la cellule A1 est active.
Ensuite F8, le MsgBox va venir.
clic OK
à l'arrèt sur End sub controle ce qu'il y a dans E, il devrait y avoir "&A&1"
Tu dit..
A+
0
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
28 mai 2008 à 17:25
Merci pour cette rapidité,
Bon alors "point d'arrêt" jsuis pas sûre de savoir ce que c'est,
du coup j'ai mis ça à la fin du code


Sheets("PLANNING").Select
Range("A1").Select
e = ActiveCell.Address
MsgBox ("e:" + e)
MsgBox ("Fin de traitement ")
MsgBox ("e:" + e)



Et dans les deux msgbox j'ai $A$302=> et c'est bien sur cette cellule que je retrouve mon curseur sur la feuille "planning"....

Voili voilouuuu
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
28 mai 2008 à 18:03
Bon..
1°) point d'arrèt.. Tu met le curseur sur la ligne où tu veux que ca stope et tu tape F9, la ligne va paser au brun.
Et quand tu tape F5 la ligne va être jaune. pour avancer d'une instruction tu tape F8 et pour aller au point d'arrèt suivant tu tape F5.

2°) Bizzzzard...
Tu a pas des macro automatique dans les module de feuille ?
tu met avant Sheets.. select
Application.EnableEvents = False
et recommence
0
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
30 mai 2008 à 17:06
Bha non ça marche toujours pas....
:(
(Excuse moi je pensaisi avoir répondu depuis longtemps)
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
31 mai 2008 à 07:39
Ca marche toujours pas !!, mais tu dit pas comment ce sont passer les tests que je t'ai proposés ?
0
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
4 juin 2008 à 16:52
Salut!!
Bha j'ai mis le "application event false" (avec la bonne syntaxe que tu m'avais dit!!
Et là j'ai fais avec d'autres données!!
Et ça se bloque à la cellule 534: il ne veut pas sélectionner la cellule A2!! Il ne veut pas remonter en haut des sous totaux!!!
Comme si la fonction sous totaux l'empêchait de remonter!!
Je comprends pas!!
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 juin 2008 à 17:14
bon, puisque tu sait pas mettre un point d'arrèt ont va faire autrement...
audessus de ces ligne tu met Stop, comme le modèle..
Stop
Sheets("PLANNING").Select 
Range("A1").Select 
e = ActiveCell.Address 
MsgBox ("e:" + e) 
MsgBox ("Fin de traitement ") 
MsgBox ("e:" + e) 

La macro va s'arrèter sur ce stop, ensuite tu tape F8 pour le pas à pas, la ligne jaune va probablement changer de secteur ou de ligne, tu verras ainsi ce qui se passe quand tu active ta feuille..
Tu dit..
0
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
4 juin 2008 à 17:31
Bon alors je comprends rien....
Là ça me dit bien que c'est à la cellule A1 j'ai même fait lire le contenu de la cellule par un msgbox pour être sûre et il me le lit bien...
Je vais continuer mon code du coup pour voir si ça beug pas...
EN tous les cas je te retiens au courant!!
Merci l'ami
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
4 juin 2008 à 17:38
tu doit rien faire de plus que de taper F8... F8... etc..
et voir ou le pointeur (la ligne jaune) arrive, c'est là qu'est le problème, il va sûrement fillé ailleur !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
5 juin 2008 à 09:46
Et bha non, le "jaune" fait bien le chemin qu'il devrait faire, mais quand il lit Range "A1", il fait son ignorant si bien que la boucle fait bien son boulot au premier tour mais après le curseur reste en bas............

Y aurait-il moyen que je t'envoi ce fichier...
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 juin 2008 à 12:35
On peu peut-être essayer un nouveau site de transfert qui me parrais pas mal.
http://transfert.tuxfamily.org/index.php?title=Accueil
Tu télécharge ce logiciel (1 à 2 minutes)
Ensuite tu l'ouvre.
Mon nom sur ce site est Lermite (sans le 222)
et tu peu m'envoyer ton fichier.
0
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
5 juin 2008 à 10:49
Y aurait-il un rapport avec les propriétés de la feuille??
Dans l'onglet "EnableSelection=>j'ai mis norestriction...mais c'était déjà comme avant!!
0
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
5 juin 2008 à 14:31
Merci énormément...tu me sauves!!
Je t'envoie ça en fin d'après midi car où je suis je ne peux pas télécharger de logiciels...
0
Bon alors je crois que je t'ai transféré ce P..... de fichier... sais pas si faut être connecté pour que ça passe!! tiens moi au courant si tu ne l'as pas...et encore merci...
0
Obi35 Messages postés 11 Date d'inscription mardi 11 décembre 2007 Statut Membre Dernière intervention 9 juin 2008
9 juin 2008 à 14:16
Salut je vois que mon dernier message n'a pas passé... je ne te vois jamais connecté sur TRANSFERT!
Ce soir? 19h? Sinon, tant que t'es pas connecté...je ne peux pas tefiler le fichier... et comme la journée je ne peux pas aller dessus...
Merci
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 juin 2008 à 16:23
Désoler, c'est la 1ère fois que j'essaye le transfert mais gros inconvéniant ont doit êtres connécté tous les deux.
Met le plustôt sur https://www.cjoint.com/
et met le lien dans poste suivant.
0
Voili voilouuuuu !!!

https://www.cjoint.com/?gjtiuq2vcT

J'espère que c'est bien ça...
Merci encore!!

Tiens moi au courant
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
10 juin 2008 à 02:22
Bouuuuuuuuuhh, tu m'a fait souffrir :-DD
Quand j'ai ouvert l'IDE ta macro était ouverte et J'ai bien passer une heure avant que je me rende compte que tu l'avais mise dans un module de feuille,
J'ai laissé toute tes lignes erronées en commentaire pour que tu puisse voir où elles se situaient et les modifs que j'ai fait.
1°) Ont ne met JAMAIS une macro qui fait des appels à diverses feuilles dans un module de feuille, Faut les mettre dans un Module standard.
2°) Ont ne met JAMAIS de On Error Goto quand ont fait un debuguage, sauf si vraiment nécessaire, tu verras j'en ai laissé un mais je l'ai directement annulé après la commande qui peut ne pas fonctionné suivant les circonstances. une macro bien faite doit tourné sans On Error Goto
3°) Tu peu maintenant supprimé le feuille PLANNING2, elle sert plus et évidement toute la partie de la macro qui s'y rapporte.
En principe tout fonctionne.
Tu peu trouver le fichier...

https://www.cjoint.com/?gkciKvUqWA
Bonsoir
0
Merci énormément!!
C'est le problème du module qui m'a aidé!!!! Maintenant ça roule...je peux continuer sereinement... elle fait ce que je lui dit!!
Mais je ne savais pas du tout...c'est en faisant qu'on apprend!!
Merci beaucoup
0