Ouvrir plusieurs onglets Excel

bonjour à tous,

est il possible en via de:

-ouvrir plusieurs onglets d'un même fichier excel les uns dernier les autres:

feuille "janvier"

feuille " février"

jusqu'à "décembre"

puis feuille "personnelle"

le but est de réactualiser le trie de chaque onglets le code vba dépend d'une macro:

Application.Calculation = xlCalculationManual

Range("A10:CA10").Select

Selection.AutoFilter

ActiveWindow.SmallScroll ToRight:=-7

ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Clear

'trie section

ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range( _

"A11:A205"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _

"SK,S1,S2,SCAOS,S4,SF", DataOption:=xlSortNormal

'trie grade

ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range( _

"B11:B205"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _

"CNE,LTN,ADC,ADJ,SCH,SGT,CC1,CCH,CPL,1CL,SDT", DataOption:=xlSortNormal

'trie nom alphabetique

ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range( _

"C11:C205"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _

xlSortNormal

With ActiveWorkbook.ActiveSheet.AutoFilter.Sort

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

merci d'avance pour tout

respectueusement

jérôme

Bonjour

Il serait plus facile de se faire une idée si tu joignais ton fichier....

Bye !

re,

je voudrais bien mais le fichier est trop gros,

je vais essayer de supprimer des données pour le transférer,

néanmoins si quelqu'un a eu idée je suis preneur

merci d'avance

jerome

Essaie en passant par http://www.cjoint.com

Bye !

j'ai réussi merci

j'espere que tu pourras trouver une solution,

je suis vraiment un débutante en via donc je pense qu'il y des codes qui peuvent être simplifié

merci d'avance

jérome

La macro ‘’TrieCie’’ se déclenche dès que tu actives l’une des feuille de mois, de ‘’Janvier’’ à ‘’Décembre’’

Donc, en ouvrant successivement ces 12 feuilles, les mises à jour de trie vont se faire, comme tu le souhaites.

Reste à savoir comment tu veux déclencher cette opération : à l’ouverture du fichier ? en cliquant sur un bouton ? Si ce bouton existe quelque part, où est-il ? S’il faut le créer, où le veux-tu ?

Et quand tu auras cette fonction, veux-tu conserver le déclenchement du tri lors de l’activation d’une feuille de mois ?

Une remarque : le langage macro est le ‘’VBA’’ et non pas ‘’via’’

Pour finir, une curiosité de ton fichier : j’ai trouvé parmi les modules un ‘’Module1’’ qui contient une macro ‘’ Private Sub Worksheet_SelectionChange(ByVal Target As Range)’’

Il s’agit d’une macro attachée à une feuille. Elle n’a, à mon avis, rien à faire là mais doit être rattachée à la feuille à laquelle elle s’applique.

A te relire.

Bye !

re,

voici les réponses a tes différentes questions :

  • en effet le module1 peut être supprimer
  • la correction automatique a transformer VBA en VIA (désolé )
  • je souhaiterai que la macro s'active lorsqu'on appui sur les boutons " valider données" ou" modifier données" dans le formulaire "mise à jour personnel" dans l'onglet " personnel". Ce formulaire s'ouvre lorsque appui sur "MAJ PERSONNEL".

j'espere que j'ai répondu a tes questions

un grand merci d'avance

cordialement

jérôme

jeromeB a écrit :

j'espere que j'ai répondu a tes questions

Non, pas à toutes :

gmb a écrit :

veux-tu conserver le déclenchement du tri lors de l’activation d’une feuille de mois ?

Sans réponse, je n’y ai pas touché.

C’est peut-être dommage car le tri d’une feuille n’est pas instantané et la navigation entre les onglets y perd en fluidité.

Pour ce qui est de la modification apportée, le temps du tri de toutes les feuilles est 12 fois plus long.

Pour faire patienter l’opérateur, la macro indique en bas et à gauche de la feuille, sur fond vert, le nom du mois qu’elle est en train de trier…

Cela te convient-il ?

Bye !

bonjour,

je n'arrive pas à récupérer le fichier

merci d'avance

jérôme

Bonjour

C’est curieux… Je viens de télécharger le fichier que je t’ai transmis et tout se passe bien. C’est peut-être un peu long à venir car ton document est effectivement gros, mais ça vient !

Si vraiment ça ne marche pas, reprend le document initial que tu as joint avec cjoint.com et essaie de remplacer toutes les macros de ta feuille userform ‘’MajPers’’ par celles-ci :

Private Sub MAJ_Click()
' recuperation d'un nom de personnel
    Modifier.Visible = True
    Modifier.Enabled = True
    Valider.Visible = False
    Valider.Enabled = False

    no_ligne = ListePersCIE.ListIndex + 6
    SectionPersonnels.Value = Cells(no_ligne, 2).Value
    GradePersonnels.Value = Cells(no_ligne, 3).Value
    NomPersonnels.Value = Cells(no_ligne, 4).Value
    PrenomPersonnels.Value = Cells(no_ligne, 5).Value
    FonctionPersonnels.Value = Cells(no_ligne, 6).Value
    Call preTri
    MajPers.Hide
    MsgBox "Travail terminé."
    Application.StatusBar = ""
End Sub

Private Sub Modifier_Click()
'desactive la MAJ de l'écran
    Application.ScreenUpdating = False
'modifier le tableau
Dim no_ligne As Integer
'pour dé-protéger
   ActiveSheet.Unprotect Password:="toto"
Sheets("PERSONNELS").Select
      no_ligne = ListePersCIE.ListIndex + 6
        If NomPersonnels.Value = "" Then
            MsgBox ("Veuillez remplir le champs de recherche, puis réessayer!")
            Else
            Cells(no_ligne, 2) = SectionPersonnels.Value
            Cells(no_ligne, 3) = GradePersonnels.Value
            Cells(no_ligne, 4) = NomPersonnels.Value
            Cells(no_ligne, 5) = PrenomPersonnels.Value
            Cells(no_ligne, 6) = FonctionPersonnels.Value
        End If
'pour protéger
     ActiveSheet.Protect Password:="toto"
     'active la MAJ de l'ecran
Application.ScreenUpdating = True
End Sub

Private Sub NomPersonnels_Change()
'METS LE NOM EN MAJUSCULE
NomPersonnels.Text = UCase(NomPersonnels.Text)

End Sub

Private Sub PrenomPersonnels_Change()
'permier lettre en majuscule
PrenomPersonnels.Value = WorksheetFunction.Proper(PrenomPersonnels.Value)
End Sub

Private Sub Retour_Click()
'fermeture formulaire
  Unload MajPers

End Sub

Private Sub SectionPersonnels_Change()

End Sub

Private Sub UserForm_click()
'cache le bouton modifier
    Modifier.Visible = False
    Modifier.Enabled = False
    Valider.Visible = True
    Valider.Enabled = True
End Sub

Private Sub valider_Click()
'desactive la MAJ de l'écran
    Application.ScreenUpdating = False
'mise a jour du tableau
Dim derligne As Integer
'pour dé-protéger
    ActiveSheet.Unprotect Password:="toto"

    If MsgBox("confirmez-vous l'ajout d'un personnel?", vbYesNo, "confirmation") = vbYes Then
    derligne = Sheets("PERSONNELS").Range("B300").End(xlUp).Row + 1
    Cells(derligne, 2) = SectionPersonnels.Value
    Cells(derligne, 3) = GradePersonnels.Value
    Cells(derligne, 4) = NomPersonnels.Value
    Cells(derligne, 5) = PrenomPersonnels.Value
    Cells(derligne, 6) = FonctionPersonnels.Value
    End If

    'pour protéger
    ActiveSheet.Protect Password:="toto"
    'active la MAJ de l'ecran
    Call preTri
    MajPers.Hide
    MsgBox "Travail terminé."
    Application.StatusBar = ""
    Application.ScreenUpdating = True
End Sub

Sub preTri()

    For i = 1 To 12
        ms = Choose(i, "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre")
        Set f = Sheets(ms)

        Application.StatusBar = ms
        f.Activate
        'Sub TrieCie()
        'Deproteger la feuille active
        f.Unprotect Password:="toto"
        'desactive la MAJ de l'écran
        Application.ScreenUpdating = False
        'calcul manuel
        Application.Calculation = xlCalculationManual
        Range("A10:CA10").AutoFilter
        ActiveWindow.SmallScroll ToRight:=-7
        On Error Resume Next
        ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Clear
        'trie section
        ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range( _
        "A11:A205"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "SK,S1,S2,SCAOS,S4,SF", DataOption:=xlSortNormal
        'trie grade
        ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range( _
        "B11:B205"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "CNE,LTN,ADC,ADJ,SCH,SGT,CC1,CCH,CPL,1CL,SDT", DataOption:=xlSortNormal
        'trie nom alphabetique
        ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields.Add Key:=Range( _
        "C11:C205"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
        With ActiveWorkbook.ActiveSheet.AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

        'zoom sur la tête de page

        ActiveWindow.Zoom = 110
        ActiveWindow.ScrollRow = 1
        ActiveWindow.ScrollColumn = 1

        'pour protéger la feuille active
        ActiveSheet.Protect Password:="toto"
        'calcul auto
        Application.Calculation = xlCalculationAutomatic
        'active la MAJ de l'ecran
        Application.ScreenUpdating = True
    Next i
End Sub

Résultat ?

Bye !

bonjour a toi gmb

tout d'abord MERCI j'arrive à voir ou il faut arriver encore merci.

désolé pour le retard dans la réponse j'étais en déplacement.

une petite question, en espérant ne pas trop insister :

lorsque le code ce lance il termine sur la feuille décembre une fois qu'on valide "travail termine"

est il possible d'imposer l'ouverture de la feuille" personnel" une fois la MAJ effectuée?

je te remercie d'avance

jérôme

Bonjour

jeromeB a écrit :

est il possible d'imposer l'ouverture de la feuille" personnel" une fois la MAJ effectuée?

En fin de macro ''PreTri", ajoute l'instruction surlignée :

Sub preTri()
   ......
    For i = 1 To 12
        Application.Calculation = xlCalculationAutomatic
        'active la MAJ de l'ecran
        Application.ScreenUpdating = True
    Next i
    Sheets("PERSONNELS").Activate
End Sub

Bye !

bonsoir,

merci pour ta réponse,

je vais m'inspirer des éléments que tu m'as mis précédemment,

afin de voir l'avancer du travail mettre une barre de progression

jasper que cela va fonctionner

encore merci

jérôme

Rechercher des sujets similaires à "ouvrir onglets"