Combinaison de plusieurs macro
Bonjour,
J'ai un problème avec un de mes fichiers. Ce fichier sert à ce que chacun de mes collègues (5) puisse aller saisir des chiffres (nb d'heures mensuelles travaillées de leurs équipes réparties par client) dans la feuille qui porte leur prénom. Puis un simple total en bout de tableau. Sur la dernière feuille "Total Mensuel") c'est un simple récap du mois pour toute les équipes confondues et 2 graphiques qui s'alimenteront au fur au et à mesure. Rien de difficile.
Par contre, ma liste de client n'est pas fixe. Il peut y avoir qq mouvements. De nouvelles arrivée en cour de mois par exemple. J'ai donc crée une macro qui classe par ordre alpha les clients sur la feuille "Total Mensuel". Cette liste de client se retrouve aussi dans chaque feuille par une simple formule ='Total Mensuel'!A16. La liste des clients est toujours classée par ordre alpha mais s'il y a des saisies en cours, elles ne suivent pas l'ordre alpha. ça crée donc un décalage.
J'ai essayé de créer plusieurs macros (1 tri par feuille) et de regrouper ces macros dans une seule en utilisant la fonction call.
Macro2 ordre alpha de la feuille 1
Macro3 ordre alpha de la feuille 2
etc...
Et Macro 1 = sub macro2 call macro3 sub macro 3 call macro 4 etc...
Mais ça ne fonctionne pas, je pense que c'est parce que les listes de chaque feuilles sont reliées par une formule à l a feuille total. donc les macro se gênent... (peut être).
A noter que je sais enregistrer une macro en manuel mais je ne connais pas du tout le VBA. Mes collègues ne connaissent pas du tout Excel. Je veux que ce tableau soit le plus autonome possible.
Je ne sais si j'ai été très claire. Ce n'est pas facile de décrire toute la situation.
Je joins le fichier.
Merci beaucoup pour votre aide.
Bonjour
Tes nouveaux clients tu les notes sur le feuille "Total Mensuel" et ils doivent se mettre automatiquement
dans les autres feuilles?
Bonjour,
Oui c'est l'idée. Mais ça peut être autrement. Il faut surtout que quand on intègre un nouveau client celui ci vienne s'insérer dans l'ordre alphabétique dans toutes les autres feuilles des moniteurs. Idem quand on en supprime un.
Aujourd'hui ça se fait avec la macro ordre alpha mais évidemment ça ne concerne que les colonne A et il faudrait que les autres colonnes s'adaptent pour ne pas que les saisies soient décalées
Re bonjour
Désolé je ne trouve pas d’où vient le problème.
Je pense que quelqu'un du forum pourra te venir en aide
Cordialement
Merci en tout cas de ton aide.
Salut Mélanie,
Le problème vient effectivement des formules en colonne [A:A] identifiant les clients dans les feuilles de tes collègues.
- J'ai renommé les contrôles appelant la feuille "Total Mensuel" et les feuilles-collègues par leur (pré)nom ce qui facilite leur appel
Public Sub AccesSheet()
'
Worksheets(Application.Caller).Activate
'
End Sub- J'ai supprimé les formules identifiant les clients dans les feuilles-collègues
- Chacun d'entre eux peut ajouter/modifier/supprimer un nom de client : la répercussion et le tri sont immédiats dans toutes les feuilles concernées.
La macro se trouve dans le module 'ThisWorkbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
Dim iRow%, iTRow%, sCol$, sItem$
'
If Sh.Name <> "ACCUEIL" Then
Application.EnableEvents = False
Application.ScreenUpdating = False
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Target, Range("A16:A" & iRow)) Is Nothing Then
Target = UCase(Target)
iTRow = Target.Row
sItem = Target
For x = 2 To Sheets.Count
With Sheets(x)
.Range("A" & iTRow).Value = sItem
sCol = IIf(Sheets(x).Name = "Total Mensuel", "A", "BY")
.Range("A16:" & sCol & iRow).Sort _
key1:=.Range("A16"), _
order1:=xlAscending, _
Orientation:=IIf(sCol = "A", xlByRows, xlTopToBottom), _
Header:=xlNo
End With
Next
End If
'
Application.ScreenUpdating = True
Application.EnableEvents = True
End If
'
End SubÀ tester...
A+
Bonjour Curulis,
Je viens de le tester, c'est exactement ça !! C'est génial. Merci beaucoup. Par contre, je n'ai absolument rien compris !! Je dois me mettre à la VBA de toute urgence.
Mille merci
Bonne journée