Supprimer résultats d'un Userform
Mag55
-
Mag55 -
Mag55 -
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 concernant la manière dont je peux faire fonctionner une telle macro, je compte donc un peu (beaucoup) sur vos lumières.
A l'avance, merci merci merci.
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 concernant la manière dont je peux faire fonctionner une telle macro, je compte donc un peu (beaucoup) sur vos lumières.
A l'avance, merci merci merci.
A voir également:
- Supprimer résultats d'un Userform
- Supprimer rond bleu whatsapp - Guide
- Resultats foot - Télécharger - Vie quotidienne
- Supprimer page word - Guide
- Impossible de supprimer un fichier - Guide
- Supprimer pub youtube - Accueil - Streaming
10 réponses
Bonjour,
Si j'ai bien compris, lors de la sélection (Combobox ?) d'un centre de coût, exécution du code.
Ou vont les résultats ? (affichage ou autre)
Si vous voulez que je vous fournisse une solution, le plus simple est de m'envoyer par mail le code et la grille Userform.
Merci
Didier
Si j'ai bien compris, lors de la sélection (Combobox ?) d'un centre de coût, exécution du code.
Ou vont les résultats ? (affichage ou autre)
Si vous voulez que je vous fournisse une solution, le plus simple est de m'envoyer par mail le code et la grille Userform.
Merci
Didier
Bonjour Mr Chossette9,
Afin d'éviter des manipulations inutiles du style : Copier/coller, il est plus facile de loader l'application directement avec les sources.
La solution sera positionnée sur le site avec bien sur le source modifié.
Cordialement
Didier
Afin d'éviter des manipulations inutiles du style : Copier/coller, il est plus facile de loader l'application directement avec les sources.
La solution sera positionnée sur le site avec bien sur le source modifié.
Cordialement
Didier
Pouvez vous procéder comme l'a dit Chossette9 (voir ci-dessus).
Pour les fichiers même principe en copiant une dizaine d'enregistrements dans de nouveaux fichiers.
Ou si vous ne pouvez pas , donnez moi la structure des fichiers.
Merci
Didier
Pour les fichiers même principe en copiant une dizaine d'enregistrements dans de nouveaux fichiers.
Ou si vous ne pouvez pas , donnez moi la structure des fichiers.
Merci
Didier
Bonjour,
Commencez déjà par envoyer tous les codes contenus dans le userForm ainsi que les éventuelles Sub qu'il est susceptible d'appeler... On verra déjà plus clair... peut être!
Commencez déjà par envoyer tous les codes contenus dans le userForm ainsi que les éventuelles Sub qu'il est susceptible d'appeler... On verra déjà plus clair... peut être!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
Voila le code. Il peut paraître très long mais en fait pas du tout.
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.
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.
Alors si j'ai bien compris, et c'est loin d'être acquis...
Te permet de choisir la valeur du filtre.
C'est dans cette liste que tu veux, en cas de nouvelle sélection, effacer les données contenues dans ta feuille.
Question 1 : Nom de la feuille dont tu souhaites supprimer les données?
Ensuite, ta macro : Private Sub OK_Click() te permet de, systématiquement et complètement, remplir ta feuille (celle dont je t'ai demandé le nom?) avec formules etc...
Question 2 : Dans cette feuille, tu n'as pas d'autres données à conserver, tu veux bien tout effacer?
Si oui, il suffit, dans ta procédure Private Sub ListBox1_Change() d'ajouter :
!!!!!!!!! Teste cette procédure sur une copie de ton classeur!!!!!!!!! Je ne suis pas responsable de l'effacement de toutes tes données!!!!!!!!!!!!!!
Private Sub ListBox1_Change()
'Cellule liée à la sélection ds boîte de dialogue
Range("$A$2").Value = ListBox1.Value
End Sub
Te permet de choisir la valeur du filtre.
C'est dans cette liste que tu veux, en cas de nouvelle sélection, effacer les données contenues dans ta feuille.
Question 1 : Nom de la feuille dont tu souhaites supprimer les données?
Ensuite, ta macro : Private Sub OK_Click() te permet de, systématiquement et complètement, remplir ta feuille (celle dont je t'ai demandé le nom?) avec formules etc...
Question 2 : Dans cette feuille, tu n'as pas d'autres données à conserver, tu veux bien tout effacer?
Si oui, il suffit, dans ta procédure Private Sub ListBox1_Change() d'ajouter :
Private Sub ListBox1_Change()
Sheets(NomDeLaFeuilleDontOnVeuxEffacerLesDonnées).Cells.Clear
'Cellule liée à la sélection ds boîte de dialogue
Range("$A$2").Value = ListBox1.Value
End Sub
!!!!!!!!! Teste cette procédure sur une copie de ton classeur!!!!!!!!! Je ne suis pas responsable de l'effacement de toutes tes données!!!!!!!!!!!!!!
Question 1: Je n'ai pas du si mal expliquer car c'est exactement ca!
Question 2: Je souhaiterais juste garder les 12 premières lignes de la feuille qui n'ont rien à voir avec la macro car je les copie-colle pour l'instant d'un classeur à un autre.
En attendant, je vais m'empresser d'essayer cette macro !!!
Et surtout.. MERCI!!!
Question 2: Je souhaiterais juste garder les 12 premières lignes de la feuille qui n'ont rien à voir avec la macro car je les copie-colle pour l'instant d'un classeur à un autre.
En attendant, je vais m'empresser d'essayer cette macro !!!
Et surtout.. MERCI!!!
Ben non n'essaye pas!!! la macro supprime toutes les cellules de la feuille concernée:!!!!
Essaye plutôt celle ci :
Essaye plutôt celle ci :
Private Sub ListBox1_Change()
Dim DerLig As Long
With Sheets(NomDeLaFeuilleDontOnVeuxEffacerLesDonnées)
DerLig = .Range("A" & .Rows.Count).End(xlUp).Row 'remplace le "A" par la lettre de ta plus longue colonne
.Range("A13:H" & DerLig).Clear 'ici H représente ta dernière colonne remplie
End With
'Cellule liée à la sélection ds boîte de dialogue
Range("$A$2").Value = ListBox1.Value
End Sub
SUPER!!!!
Déjà, ca efface!!!
A présent, j'aimerais juste pouvoir épargner les 12 premières lignes de la feuille si possible :)
Déjà, ca efface!!!
A présent, j'aimerais juste pouvoir épargner les 12 premières lignes de la feuille si possible :)
Aie.. Ca ne fonctionne pas finalement. J'ai l'impression que la macro ne réitère pas les formules pour le centre de coûts sélectionné suivant.
J'ai essayé de bidouiller mais rien n'y fait.
J'ai essayé de bidouiller mais rien n'y fait.
Après plusieurs essais, je pense que si j'arrivais "simplement" à supprimer les lignes correspondant au code de mes sous-totaux (c'est-à-dire à partir du commentaire '1ere ligne total jusqu'à 'Total gal, ceci résoudrait mon problème et me permettrait d'exécuter correctement la macro que pikaju m'a donné plus haut.
on ne demande pas à l'utilisateur d'envoyer par mail le code, mais de le mettre à disposition ici, afin que cela puisse profiter à tout le monde sur le site.
Cordialement.
Je vous ai envoyé ci dessous le détail de mon code qui ne doit pas faire peur ! Beaucoup de lignes, mais très peu d'opérations au final comme je l'explique plus bas.
Merci