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 :

Recuperer le nom des onglets pour les mettre dans une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Recuperer le nom des onglets pour les mettre dans une colonne
    Bonjour
    Je me prends pas mal la tête, car je suis nul en macro

    Voila mon problème.
    J'aimerais faire une macro via un bouton, pour qu'il puisse, recupere dans mon classeur, les noms des onglets pour les copier dans un nouvel onglet (on va l'appeler Synthèse)(positionné devant les autres) et les mettre dans un tableau ligne par ligne.
    Si je créé un nouvel onglet, celui ci se positionnera dans le tableau de l'onglet synthése.

    Je ne sais pas si je suis clair....

    Si quelqu'un peux m'aider
    Merci d'avance

  2. #2
    Membre actif
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Points : 275
    Points
    275
    Par défaut
    sisi

    mais je vois pas trop l'utilité... en gros tu veux que ce qui s'affiche en ligne s'affiche en colonne ... c'est un bizarre mais bon :

    Tu ajoutes ce code dans thisWorkbook en faisant alt+F11

    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
     
    Private Sub Workbook_NewSheet(ByVal Sh As Object)
    ' ce nom de fonction est une fonction systéme elle est appellé a chaque fois tu créer une nouvelle feuille
        Dim wsh, wshSynthese As Worksheet ' objet de type feuille
        Dim x As Integer ' il s'agit du compteur de ligne
     
        x = 0 'on se place sur la premiére ligne
     
        On Error GoTo Feuil_inexistante ' cette ligne permet de prévoir la non détection de la feuille
        Set wshSynthese = ActiveWorkbook.Worksheets("Synthése")
        GoTo Feuil_existante ' si pas d'erreur alors on va à la suite
    Feuil_inexistante: 'sinon on créer une nouvelle feuille
        Set wshSynthese = ActiveWorkbook.Worksheets.Add(Type:=xlWorksheet)
        wshSynthese.Name = "Synthése" ' on la nomme synthése
     
    Feuil_existante: 'lorsque l'on a bien crée la feuille
        For Each wsh In ActiveWorkbook.Worksheets ' pour chaque feuille du classeur
            If wsh.Name <> wshSynthese.Name Then 'on vérifie que le nom est différent de synthése
                wshSynthese.Range("A1").Offset(x, 0).Value = wsh.Name 'alors on entre dan la feuille synthése le nomde la feuille actuel
                x = x + 1 ' on incrémente la ligne
            End If ' fin de la boucle si
     
        Next 'on passe à la feuille suivante
    End Sub 'fin de la fonction
    A testé..
    J'suis loin d'être un expert, seulement un passionné.
    L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)

  3. #3
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,

    ou plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim ws As Worksheet, i As Integer
    i = 2
    Sheets("synthese").Columns(1).ClearContents
    For Each ws In Application.Worksheets
       If ws.Name <> "synthese" Then
          Sheets("synthese").Range("A" & i) = ws.Name
          i = i + 1
       End If
    Next ws
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos solutions mais ça ne marche pas.

    Mais je crois que je me suis mal expliqué. J'ai voulu posé le problème par petit bout.
    En fait, j'ai un classeur excel, composé de plusieurs feuilles avec des noms différents. Sur chaque feuille correspond un tableau identique. Les 4 premières lignes du tableau correspond les intitulés.
    Lorsque je fais des modifications sur une feuille, je modifie la premiere ligne du tableau (donc la ligne 5).
    Ce que j'aimerais, c'est de creer une feuille (qui soit au début des autres feuilles) appelé synthèse, avec un tableau.

    Dans ce tableau je veux - les intitulés sur 4 lignes (identiques que les autres tableaux).
    - en y, les noms des feuilles
    - et en x, je voudrais récupérer les modification que j'ai fait dans les feuilles ( a la ligne 5 des tableaux) et qu'il le mette a la ligne du nom de la feuille.

    Et si je créé une nouvelle feuille, que dans la feuille synthése il mette dans le tableau le nom de ma nouvelle feuille ainsi que les modifications.


    Voila j'espère que c'est un peu plus clair

    Par avance merci

  5. #5
    Membre actif
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Points : 275
    Points
    275
    Par défaut
    @ dom

    ça va planté si tu n'as pas de feuille nommé "synthése" donc plus simple peut être (vu que t'explique ps ton code ça aide) mais moins robuste ça c'est sûr.
    Faut rappelé que nico est nul en macro ( c'est pas moi qui le dit)
    donc faire du copier coller en disant c'est plus simple parce que tu supprimes des lignes à mon avis ça sert à rien surtout si ces lignes sont là pour rendre plus robuste son utilisation et la robustesse dans le contexte est importante car le lancement de la macro se déclenche sur un événement...

    @ nico


    Dans ce tableau je veux - les intitulés sur 4 lignes (identiques que les autres tableaux).
    - en y, les noms des feuilles
    - et en x, je voudrais récupérer les modification que j'ai fait dans les feuilles ( a la ligne 5 des tableaux) et qu'il le mette a la ligne du nom de la feuille.
    En gros, sur chaque ligne, tu as le nom des feuilles et en x les modifications apportés a chaque feuille.

    y a la partie "( a la ligne 5 des tableaux) " que je comprend pas

    Ce que je comprend :
    Automatiquement la ligne sur lequel le nom de la feuille s'affiche doit s'alimenter avec les modifs de la feuille en question.

    C'est bien ça ?

    si c'est ça, c'est pas trop le même niveau et c'est quand même plus compliqué...
    J'suis loin d'être un expert, seulement un passionné.
    L'humanité de l'homme ne reside que dans son intelligence. Certains l'on compris. D'autres ne le comprendront jamais... (Histrat)

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Salut ben_ghost
    Merci de me suivre dans mes problèmes !!!
    Je joins un fichier excel comme exemple
    Donc comme tu peux le voir dans le fichier.
    Dans synthèse je récupére la ligne 5 des tableaux et je la copie et le colle suivant le nom de la feuille.
    Je voudrais faire ça via un bouton.
    Lorsque je modifie la ligne 5 d'un tableau d'une feuille . Je clique sur le bouton et la feuille synthèse se met à jour.


    Merci de m'aider
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/10/2013, 13h43
  2. Scanner des images pour les mettre sur une feuille
    Par slyounet78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/04/2012, 18h22
  3. [applet]utilser des infos pour les traiter dans une servlet
    Par jeromejanson dans le forum Applets
    Réponses: 5
    Dernier message: 07/03/2010, 23h22
  4. scanner des dossiers et les mettre dans une liste
    Par niklos0 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 08/09/2008, 14h34
  5. Réponses: 4
    Dernier message: 03/01/2008, 12h37

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