Effacer résultats sélection précédente vba

Fermé
Améliie - 16 août 2011 à 10:42
 Améliie - 17 août 2011 à 01:12
Bonjour,

J'ai un petit problème sur une macro que je suis en train de réaliser.
J'ai créé un bouton qui permet d'afficher le détail de la masse salariale en fonction du centre de coûts sélectionné.

En dessous de ce détail, je cherche à effectuer plusieurs lignes de sous totaux. J'en suis là. La ligne ci dessous a donc pour objectif de faire apparaître "Total CDI 2011" dans une cellule bien précise. Jusque là tout va bien.

Cells(activecell.Row, 5).FormulaLocal = "=SI(E12 = ""C Nature contrat"" ; ""Total CDI 2011""; ""Erreur"")"

Mon problème réside dans le fait que lorsque je lance une nouvelle sélection, la cellule nommée "Total CDI 2011" de l'ancienne sélection reste en place. Je me retrouve donc avec plusieurs cellules nommées de cette manière à mesure que je change de centre de coût.

J'espère que vous pourrez m'éclairer, car en attendant, je suis bloquée..

Merci d'avance,
Très bonne journée


A voir également:

11 réponses

melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
16 août 2011 à 14:33
bonjour,

essaie ce petit bout de code :

Dim Plage As Range, Cellule As Range

Set Plage = Range("E1", "E60000")

For Each Cellule In Plage
If Cellule.Value = "Total CDI 2011" Then
Cellule.Value = ""
End If
Next Cellule
Cells(activecell.Row, 5).FormulaLocal = "=SI(E12 = ""C Nature contrat"" ; ""Total CDI 2011""; ""Erreur"")"
0
Melanie, je n'arrive pas à lire ta réponse!

J'ai une poisse phénoménale aujourd'hui...
0
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
16 août 2011 à 15:29
bonjour,

essaie ce petit bout de code :

Dim Plage As Range, Cellule As Range

Set Plage = Range("E1", "E60000")

For Each Cellule In Plage
If Cellule.Value = "Total CDI 2011" Then
Cellule.Value = ""
End If
Next Cellule
Cells(activecell.Row, 5).FormulaLocal = "=SI(E12 = ""C Nature contrat"" ; ""Total CDI 2011""; ""Erreur"")"
0
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
16 août 2011 à 15:31
et en plus, pas fait attention, mets :
If Cellule.Value = "Total CDI 2011" or Cellule.Value = "Erreur" Then
0

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

Posez votre question
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
16 août 2011 à 15:31
attention
et en plus, pas fait attention, mets :
If Cellule.Value = "Total CDI 2011" or Cellule.Value = "Erreur" Then
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
16 août 2011 à 15:31
Bonjour,

C'est une formule que tu mets, et qui fait toujours référence à E12.
Toutes tes formules ramènent donc la même valeur, c'est normal.
Il faudrait peut-être changer la formule selon la ligne non ?

eric
0
En bidouillant, j'ai trouvé une façon alternative de réaliser mes lignes de sous-totaux sans faire appel à d'autres cellules:

activecell.Offset(1, -9).Select
Selection = "Total CDD 2011"

activecell.Offset(0, 1).Select
Selection.Value = Application.SumIf(Range("(E14)").EntireColumn, "CDD", Range("(F14)").EntireColumn)

activecell.Offset(0, 1).Select
Selection.Value = Application.SumIf(Range("(E14)").EntireColumn, "CDD", Range("(G14)").EntireColumn)

activecell.Offset(0, 1).Select
Selection.Value = Application.SumIf(Range("(E14)").EntireColumn, "CDD", Range("(H14)").EntireColumn)

etc etc sur la même ligne.

En français, cette ligne doit permettre de faire apparaître un sous total en fonction du type de contrat (CDD, CDI, Interim,..). Chaque ligne correspond à un employé et la colonne E donne le type de contrat pour chaque employé.

Mais ceci ne règle toujours pas mon problème. Lorsque je change de centre de coûts, mes précédents sous totaux restent et faussent donc mes nouveaux calculs..
0
Après relecture, même moi je m'y perds. C'est beaucoup trop compliqué sans le fichier sous les yeux.

Je peux vous le mettre en ligne ce soir si vous voulez. Seul bémol, la macro comporte des fichiers liés qui doivent être nécessairement ouverts pour qu'elle s'exécute correctement que je ne pourrai vous joindre...
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
16 août 2011 à 17:03
Pas de pb
Mais comme je suis transparent sur tes 2 posts (mag55 c'est toi aussi non ?) je me retire avec plaisir...
eric
0
Comment ca transparent?
Oui pardon, je vous ai écrit de 2 postes différents d'où le pseudo différent oups.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 16/08/2011 à 17:45
Comment ca transparent?
Quand on répond à un demandeur on s'attend à un commentaire de sa part (il y en a même qui disent merci parfois... si si...)
J'ai horreur de parler dans vent, l'impression de déranger...
eric
0
Excusez moi si c'est l'impression que j'ai donné. La n'était pas le but. Quand on est au travail, il faut que ca aille vite.. Du coup, j'ai pu oublier d'y mettre la forme, désolée.

Par contre, ayant un langage plutôt basique pour le moment sur vba, j'avoue ne pas avoir compris tous vos conseils avisés.
0
Je ne me suis pas envoyée la bonne version sur le pc perso ce soir.

Toutefois, j'aimerais savoir s'il existerait une macro (imbriquée dans ma macro) permettant d'expliquer que :

A chaque changement de sélection (c'est à dire dès qu'on sélectionne un centre de coûts différent via la boîte de dialogue parmi la liste déroulante), on puisse supprimer tout ce qu'a engendré la sélection précédente, et recommencer de zéro ou presque.

Ce que je n'ai peut-être pas précisé au départ, c'est que j'ai entré toutes les fonctions entre le Sub et End Sub du Userform. Du coup, quand je change de centre de coûts, les résultats se superposent au lieu de se remplacer. Il est là mon problème.

Merci d'avance pour votre aide
0