IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fixer ordre et noms des feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Par défaut Fixer ordre et noms des feuilles
    Bonjour,

    J'ai actuellement un problème et j'espère que vous pourrez m'aider à trouver la solution. Je travaille sur un unique classeur qui possède plusieurs feuilles (une vingtaine, seul 16 d'entre elles m'intéressent) et je souhaiterais empêcher l'utilisateur de modifier le nom de ces feuilles ainsi que leurs positions.

    Par ex, je souhaiterais qu'à tout instant :
    Feuil1 s'appelle Nuevos informaciones et soit en position une
    Feuil2 s'appelle Error et soit en position 2
    Feuil3 s'appelle BASE TOTAL et soit en position 3
    etc... jusqu'à Feuil16 à aussi prendre en compte et les feuilles suivantes je m'en fiche totalement

    Je n'ai pas trouvé de solution sur internet et j'ai donc essayé de le faire à ma sauce.

    Je pense que la meilleur solution est tout d'abord de fixer l'ordre des feuilles (forcer Feuil1 en position 1, Feuil2 en position 2 etc... lors de l'ouverture du classeur) puis de fixer leur noms (forcer le nom de Feuil1 à Nuevos informaciones etc... lors de l'ouverture du classeur). Puis d'itérer cette procédure à chaque tentative de changement de nom ou de position si c'est possible (est ce possible ?), sinon à chaque changement de page.

    Voici une ébauche de code qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub Workbook_Open()
     
    Dim ws As Worksheet
     
    Application.ScreenUpdating = False
     
    For Each ws In Worksheets
        Select Case ws.CodeName
            Case Is = "Feuil1"
                Sheets("" & ws.Index).Move before:=Sheets(1)
    'etc pour les 15 autres feuilles
           Case Else
        End Select
    Next ws
     
    For Each ws In Worksheets
        Select Case ws.Index
            Case Is = 1
                Worksheets(1).Activate
                ActiveSheet.Name = "Nuevos informaciones"
    ' etc pour les 15 autres feuilles
           Case Else
        End Select
    Next ws
     
    End Sub
    J'espère que vous pourrez m'aider à résoudre ce problème

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    J'utilise un code semblable à ceci pour replacer mes feuilles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub ReplacerFeuilles()
        Dim I As Long
        Dim arrSheets
     
        arrSheets = Array("", "Feuil1", "Feuil2", "Feuil3", "Feuil4", _
                            "Feuil5", "Feuil6", "Feuil7", "Feuil8")
     
        Sheets("Feuil1").Move before:=Sheets(1)
     
        For I = 1 To Worksheets.Count
            If Sheets(I).CodeName <> arrSheets(I) Then
                Sheets(arrSheets(I)).Move after:=Sheets(arrSheets(I - 1))
            End If
        Next
    End Sub
    Pour ce qui est du nom des feuilles changé par les utilisateurs, tu pourrais peut-être utiliser Worksheet_Deactivate et remettre systématiquement le nom de l'onglet comme tu le veux

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Par défaut
    Merci parmi pour ta réponse qui résout une partie du problème.

    Voici la situation. Sur la 1ere feuille se trouve différents boutons qui lancent différents processus. Ces processus agissent chacun sur certaines pages et les identifient grace à leurs noms. Je souhaite donc empecher absolument l'utilisateur de changer ces noms (sinon les processus feront n'importe quoi).

    Avec ta solution, la correction suite à une modification n'a lieu que lors d'une désactivation donc en gros lors d'un changement de page. Donc si l'utilisateur est sur une page donnée qui n'est pas la 1ere page, il ne pourra pas modifier un nom de page puis lancer ensuite un processus donnée grace à l'un des boutons présent sur la feuille 1 car il devra alors retourner sur la feuille 1 pour lancer ce processus ce qui lancera auparavant le programme de correction des noms.

    Mais si l'utilisateur est sur la feuille 1, il peut modifier le nom de la feuille 1 puis lancer l'un des processus sans activer le programme de correction des noms puisqu'il n'aura pas changé de pages.

    Cette solution est donc bonne à 95% mais elle ne répond pas entièrement au problème ! Il reste à bloquer le nom de la première page !

    Une idée ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    CodeName devrait demeurer fixe même si l'utilisateur change le nom de la feuille dans Excel.
    Pour changer le codename, il faudrait qu'il le change dans l'IDE...
    Tu peux peut-être te servir de ça pour te positionner sur les bonnes feuilles, peu importe le nom qu'elles portent... (?)

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Une simple protection de la structure du classeur (Révision, protection du classeur) empêche :
    • l'ajout
    • la suppression
    • le renommage
    • le masquage ou démasquage
    • le déplacement


    des onglets...

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2014
    Messages : 58
    Par défaut
    Oui je connais cela mais je souhaite permettre à l'utilisateur de faire ce qu'il souhaite avec les feuilles autres que les 16 premières (et donc suppression, ajout etc...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupérer nom des feuilles excel
    Par hector2 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/04/2020, 12h19
  2. Réponses: 8
    Dernier message: 04/08/2015, 00h06
  3. [iReport] Export XL : personnaliser le nom des feuilles
    Par jtouille dans le forum iReport
    Réponses: 5
    Dernier message: 13/06/2007, 10h37
  4. Geler le nom des Feuilles Excel
    Par shadockgreg dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/11/2006, 18h41
  5. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo