Supprimer résultats d'une macro

  • Initiateur de la discussion Initiateur de la discussion Laya04
  • 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 !

L

Laya04

Guest
Bonjour,

Je mets actuallement à jour des fichiers de masse salariale en vue de les automatiser au maximum. En gros, la masse salariale est répartie par centre de coût. J'ai donc créé un bouton via Userform sur VBA qui permette de sélectionner le centre de coût souhaité.

Entre le sub et end sub de ce userform, j'ai enregistré un tas d'actions que je souhaitais être exécutées dès la sélection du centre de coût.

Mon problème: Lorsque je change de sélection en passant par la boîte de dialogue créée, mes résultats du nouveau centre de coûts se superposent aux anciens qui ne s'effacent pas automatiquement.

Du coup, comme la masse salariale n'est pas figée d'un centre de coûts à l'autre, j'ai des lignes d'employés qui restent et qui n'ont rien à faire dans ma nouvelle sélection.

Je me disais qu'en essayant de créer une fonction à la fin du userform qui permette de supprimer les résultats précédents dès lors qu'un centre de coûts différent est sélectionné résoudrait mon problème.

Seulement, je n'ai aucune idée dont je peux faire fonctionner une telle macro, je compte donc un peu (beaucoup) sur vos lumières.

A l'avance, merci merci merci.
 
Re : Supprimer résultats d'une macro

Bonjour,

Je vous joints avec ce message le code de mon UserForm. N'ayez surtout pas peur du nombre de lignes car au final il y a très peu d'opérations !

Je pense que les commentaires insérés avant les opérations pourront vous aider à comprendre mon cheminement. Sinon, je reste bien évidemment à votre disposition pour répondre à d'éventuelles questions.

En gros, pour que la macro s'exécute, je vais chercher les données dans 2 fichiers Excel différents. J'ai d'abord nommé de façon automatique ma ligne d'en-têtes: Matricule, Nom, Prénom, CS,.. Prov.

Ensuite, via un filtre élaboré, je suis allée chercher la liste des matricules en fonction du centre de coût sélectionné. Pour remplir toutes les colonnes qui suivent, j'ai utilisé la fonction Recherchev que j'automatise grâce à la macro.

Une fois l'ensemble des données récupérées dans le fichier, j'ai créé une ligne de sous-totaux (CDI, CDD, Interim, MO) puis Total.

C'est à la suite de ces opérations que j'aimerais pouvoir insérer une macro permettant d'effacer TOUUUUTES ces données si la sélection venait à changer.

Merci d'avance pour le temps que vous consacrerez à mon problème.
 
Re : Supprimer résultats d'une macro

Private Sub Label1_Click()

End Sub

Private Sub ListBox1_Change()

'Cellule liée à la sélection ds boîte de dialogue
Range("$A$2").Value = ListBox1.Value

End Sub

Private Sub OK_Click()

Unload Me

Dim i As Integer, j As Integer

i = [B65536].End(xlUp).Row
j = [IV5].End(xlToLeft).Column

'Filtre élaboré pour obtenir matricules selon centre de coût sélectionné
Workbooks("Ctrl Gestion -SG- analyse par postes -0611.xls").Sheets("RUB2"). _
Columns("A:S").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"A1:A2"), CopyToRange:=Range(Cells(12, 2), Cells(i, 2)), Unique:=False

Range(Cells(12, 2), Cells(i, 2)).Select

Rows("13:13").Select
Selection.Insert Shift:=xlDown

Range("B14:B1000").Select
With Selection.Interior
.ColorIndex = 2
.Pattern = xlSolid
End With


'Entre les formules de la 1ère ligne qui sera ensuite recopiée
Cells(14, 3).FormulaLocal = "=SI($B14<>"""";SI(C$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(C$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(C$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 4).FormulaLocal = "=SI($B14<>"""";SI(D$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(D$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(D$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 5).FormulaLocal = "=SI($B14<>"""";SI(E$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(E$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(E$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 6).FormulaLocal = "=SI($B14<>"""";SI(F$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(F$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(F$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 7).FormulaLocal = "=SI($B14<>"""";SI(G$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(G$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(G$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 8).FormulaLocal = "=SI($B14<>"""";SI(H$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(H$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(H$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 9).FormulaLocal = "=SI($B14<>"""";SI(I$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(I$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(I$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 10).FormulaLocal = "=SI($B14<>"""";SI(J$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(J$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(J$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 11).FormulaLocal = "=SI($B14<>"""";SI(K$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(K$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(K$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 12).FormulaLocal = "=SI($B14<>"""";SI(L$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(L$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(L$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 13).FormulaLocal = "=SI($B14<>"""";SI(M$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(M$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(M$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"
Cells(14, 14).FormulaLocal = "=SI($B14<>"""";SI(N$12=""Eff"";SOMME.SI('[ETP 2011-06.xls]TB-EFFMO'!$A:$A;$B14;'[ETP 2011-06.xls]TB-EFFMO'!$Q:$Q);SI(N$12=""R ""&$P$1&"" "";SOMME($G14:$H14;$J14:$M14);RECHERCHEV($B14;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$A:$S;EQUIV(N$12;'[Ctrl Gestion -SG- analyse par postes -0611.xls]RUB2'!$1:$1;0);""faux"")));"""")"

'Etire la ligne de formules définie plus haut

Set SourceRange = Worksheets("Essai juin").Range("C14:N14")
Set fillRange = Worksheets("Essai juin").Range(Cells(14, 3), Cells(i, 14))
SourceRange.AutoFill Destination:=fillRange


' Selectionne la première cellule du tableau
Range("B14").Select

' Boucle tant que pas vide
Do While Not (IsEmpty(activecell))
Nbligne = Nbligne + 1
Selection.Offset(1, 0).Select
Loop

'1ere ligne total
activecell.Offset(1, 3).Select
Selection = "Total CDI 2011"

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

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

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

activecell.Offset(0, 1).Select
Selection.Value = (activecell.Offset(0, -1)) / (activecell.Offset(0, -2))

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

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

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

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

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

'2eme ligne total
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)

activecell.Offset(0, 1).Select
Selection.NumberFormat = "0.0%"
If (activecell.Offset(0, -1)) = "" Then activecell = "0" Else activecell.Formula = (activecell.Offset(0, -1)) / (activecell.Offset(0, -2))

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

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

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

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

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

'3eme ligne
activecell.Offset(1, -9).Select
Selection = "Total INT 2011"

activecell.Offset(0, 1).Select
If Q5 = "" Then activecell = "0" Else activecell.Formula = activecell.Offset(0, 8) / Q5

'4eme ligne
activecell.Offset(1, -1).Select
Selection = "Total MO 2011"

activecell.Offset(0, 1).Select
If Q6 = "" Then activecell = "0" Else activecell.Formula = activecell.Offset(0, 8) / Q6

'Prov
activecell.Offset(1, 6).Select
Selection = "+ Prov manuelles SAP"

'Total gal
activecell.Offset(2, -7).Select
Selection = "R 2011 SAP"

activecell.Offset(0, 1).Select
Selection.Value = Application.Sum(Range(activecell.Offset(-6, 0), activecell.Offset(-3, 0)))

activecell.Offset(0, 1).Select
Selection.Value = Application.Sum(Range(activecell.Offset(-6, 0), activecell.Offset(-3, 0)))

activecell.Offset(0, 1).Select
Selection.Value = Application.Sum(Range(activecell.Offset(-6, 0), activecell.Offset(-3, 0)))

activecell.Offset(0, 1).Select
Selection.NumberFormat = "0.0%"
activecell.Formula = (activecell.Offset(0, -1)) / (activecell.Offset(0, -2))

activecell.Offset(0, 1).Select
Selection.Value = Application.Sum(Range(activecell.Offset(-6, 0), activecell.Offset(-3, 0)))

activecell.Offset(0, 1).Select
Selection.Value = Application.Sum(Range(activecell.Offset(-6, 0), activecell.Offset(-3, 0)))

activecell.Offset(0, 1).Select
Selection.Value = Application.Sum(Range(activecell.Offset(-6, 0), activecell.Offset(-3, 0)))

activecell.Offset(0, 1).Select
Selection.Value = Application.Sum(Range(activecell.Offset(-6, 0), activecell.Offset(-3, 0)))

activecell.Offset(0, 1).Select
Selection.Value = Application.Sum(Range(activecell.Offset(-6, 0), activecell.Offset(-3, 0)))

End Sub

Private Sub UserForm_Initialize()

ListBox1.ColumnCount = 1

'Load data into ListBox

ListBox1.List() = Array("184000", "185900", "183200", "185100", "181900", "184300", "183800", "183400", "185400", "184200", "183900")


End Sub

Sub gocombobox()

frmcomb.Show

End Sub
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour