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 :

Positionnement de feuilles lors de la création de plusieurs feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut Positionnement de feuilles lors de la création de plusieurs feuilles
    Bonjour,

    J'ai comme l'impression que je ne cherche pas correctement mais j'ai beau parcourir le forum, la FAQ en faisant des recherches avec des mots clés différents, je ne trouve pas la réponse à ma question pourtant sans doute assez banale. Désolé !

    Je pars d'un classeur ne contenant qu'une seule feuille.
    Dans un premier temps, je crée une feuille (après la première) dans laquelle je fais des calculs à partir desquels je veux tracer un graphique.
    Je crée ensuite une feuille de graphique dans lequel je crée mon graphique.

    Tout se passe bien. Sauf que je n'arrive pas à positionner la seconde feuille là où je veux, à savoir après la feuille de calcul. Elle se crée toujours après la feuille initiale et avant la feuille de calcul. J'ai essayé de forcer en demandant de la déplacer à la position 3 mais évidemment il ne compte pas 3 feuilles. J'ai aussi essayé d'enregistrer le classeur avant de créer la feuille de graphique mais ça ne change rien.

    Bref, je ne vois pas comment réinitialiser le nombre de feuilles du classeur après la création de la 1ère.

    Pouvez-vous m'aider ? Merci d'avance !

    Bonne fin de journée !

  2. #2
    Membre habitué Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    Pour répondre à ce genre de question, tu peux déjà te servir de l'enregistreur de macro, il est parfois très utile pour avoir un début de code.

    Voilà ce que j'ai trouver (à l'aide de l'enregistreur) pour créer un onglet tout à la fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets.Add After:=Sheets(Sheets.Count)
    En espérant t'avoir aidé.

    Bonne fin de journée

  3. #3
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Merci de la proposition.

    Mais c'est bien ce que je fais. Sauf que j'ai l'impression que le Sheets.Count n'est pas remis à jour après la création de la 1ère feuille. Il reste à 1. Donc il me met la 2nde feuille après la 1ère. Alors que je voudrais qu'il me la mette après la 2nde, en 3ième position.

    Voilà pourquoi je parlais de réinitialisation du nombre de feuilles du classeur.

    Bonne soirée

  4. #4
    Membre habitué Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par laurent_42 Voir le message
    Merci de la proposition.

    Mais c'est bien ce que je fais. Sauf que j'ai l'impression que le Sheets.Count n'est pas remis à jour après la création de la 1ère feuille. Il reste à 1. Donc il me met la 2nde feuille après la 1ère. Alors que je voudrais qu'il me la mette après la 2nde, en 3ième position.

    Voilà pourquoi je parlais de réinitialisation du nombre de feuilles du classeur.

    Bonne soirée
    C'est étrange car, pour moi, ça rajoute toujours à la fin.

    Es-tu sur que tu change pas la position ailleurs ?

    Envoie peut-être ton code afin qu'on puisse voir ce qu'il ne va pas

  5. #5
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Ah !!! Intéressant !

    Je n'ai pas l'impression de déplacer les feuilles non.

    Voici mon code :
    (je passe les étapes d'ouverture du classeur source que j'affecte au workbook Classeur, les étapes de calcul dans la 1ère feuille ajoutée, et les détails de la création du graphique ; promis, je n'ai pas effacé d'instructions Move ou Delete !!! )

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Test()
    '
        ' Déclaration des variables
     
        ' Fichier à ouvrir
        Dim objFichier As FileDialogSelectedItems
        ' Classeur accueillant le fichier à ouvrir
        Dim Classeur As Workbook
        ' Graphique des inclusions par centre
        Dim Graph As Chart
     
    ' **************************************************************************************
    ' 1. Ouverture du fichier
    ' **************************************************************************************
     
       ' Etape d'ouverture supprimée
     
        ' Blocage de l'affichage (pour éviter le clignotement)
        Application.ScreenUpdating = False
     
        ' Ouverture du fichier
        Set Classeur = Workbooks.Open(objFichier(1))
     
        ' Renommage de la feuille existante
        Classeur.Sheets(1).Name = "Données"
     
    ' **************************************************************************************
    ' 2. Création de la nouvelle feuille de calcul et de la feuille graphique
    ' **************************************************************************************
     
        ' Ajout et renommage d'une feuille
        Classeur.Sheets.Add After:=Sheets(Sheets.Count)
        Classeur.Sheets(2).Name = "TDC inclusion"
     
        ' Création du graphique
        Set Graph = Classeur.Charts.Add(, Sheets(Sheets.Count))
        With Graph
            ' Type d'histogramme
            .ChartType = xlColumnClustered
            ' Je vous fais grâce des autres arguments de création du graphique
        End With
     
    ' **************************************************************************************
    ' 3. Enregistrement du classeur
    ' **************************************************************************************
        ' Rafraichissement de l'écran
        Application.ScreenUpdating = True
     
        ' Enregistrement du classeur
        Classeur.Save
     
    End Sub
    Le pire c'est que j'ai exécuté pas à pas pour voir ce qu'il en était. Avant le 1er ajour, Sheets.Count = 1, après le 1er ajout Sheets.Count = 2 et après le 2nd ajout Sheets.Count = 3. Donc ça devrait coller. Je ne comprends pas vraiment ce qu'il se passe...

    Merci pour l'aide !

    Bonne soirée

  6. #6
    Membre habitué Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    J'ai tester ton programme et effectivement ton graphe est capricieux.

    Au final pour le mettre où tu souhaitais j'ai dû le move après la création (dernière ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ' Ajout et renommage d'une feuille
        Classeur.Sheets.Add After:=Sheets(Sheets.Count)
        Classeur.Sheets(2).Name = "TDC inclusion"
     
        ' Création du graphique
        Set Graph = Classeur.Charts.Add
        With Graph
            ' Type d'histogramme
            .ChartType = xlColumnClustered
            ' Je vous fais grâce des autres arguments de création du graphique
        End With
     
        Graph.Move After:=Sheets(Sheets.Count)
    C'est une solution qui fonctionne, je suppose qu'il doit y en avoir d'autre

    Bonne journée

  7. #7
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Bonsoir,

    Voilà qui me rassure !!! J'ai comme l'impression que c'est le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Graph = Classeur.Charts.Add(, Sheets(Sheets.Count))
    qui pose problème. C'est comme s'il ne tenait pas comtes des arguments. J'ai beau chercher des infos à ce sujet, je ne trouve pas.

    Je m'en suis tiré moi aussi avec le move. La 1ère fois que j'avais essayé, j'avais fait une erreur puisque ça ne marchait pas : j'avais en retour le message "l'indice n'appartient pas à la sélection". Et quand j'ai re-essayé ça a marché. J'aurais bien aimé réussir à faire marcher l'instruction initiale ou comprendre pourquoi je ne peux pas faire ça. Mais tant pis.

    Merci du temps consacré !

    Bonne soirée et bon week-end,

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/10/2017, 22h23
  2. Réponses: 7
    Dernier message: 04/06/2015, 11h23
  3. Création de plusieurs feuilles à partir d'une plage
    Par sylvestre09 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 22/03/2012, 15h04
  4. [XL-2003] création de plusieurs feuilles et remplissage automatique
    Par tonitto85 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/11/2009, 17h11

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