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 :

Code macro pour updater formule basée sur le nom de nouvelle feuille [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Voice service manager
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Voice service manager
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Par défaut Code macro pour updater formule basée sur le nom de nouvelle feuille
    Bonjour,

    Je cherche a updater une formule sur ayant la base suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUM('sheet1'!B46+'Sheet2'!B46+'Sheet3'!B46+'Sheet4'!B46+'Sheet5'!B46+'Sheet6'!B46+'Sheet7'!B46+'Sheet8'!B46+'Sheet9'!B46+'Sheet10'!B46+'Sheet11'!B46+'Sheet12'!B46)
    J'ai créer un code vba qui me permet de créer de nouvel feuille basé sur un templates et pour lequel je définis le nom de la feuille. C'est à la creation de la feuille que je bloque pour faire un update de ma formule en rajoutant la nouvelle feuille. Si je donne à ma feuille le nom "test ajout", je voudrais que ma formule soit updater de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUM('sheet1'!B46+'Sheet2'!B46+'Sheet3'!B46+'Sheet4'!B46+'Sheet5'!B46+'Sheet6'!B46+'Sheet7'!B46+'Sheet8'!B46+'Sheet9'!B46+'Sheet10'!B46+'Sheet11'!B46+'Sheet12'!B46+test ajout!B46)
    Merci de votre aide par avance
    Cordialement
    Thibaut

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Tout d'abords, ta formule, si les feuilles se suivent, peut être simplifiée de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SUM(sheet1:Sheet12!B46)
    Ensuite, si tu ajoute une autre feuille, la formule devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SUM(sheet1:Sheet12!B46:'Test Ajout'!B46)
    Les apostrophes sont utilisées car le nom de la feuille est composé de deux mots. Donc, par VBA :
    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
     
    Sub Test()
     
        Dim Fe As Worksheet
        Dim Formule As String
     
        Set Fe = Worksheets.Add
     
        Fe.Name = "Test Ajout"
     
        'supprime la parenthèse de fin
        Formule = Left(Range("C1").Formula, Len(Range("C1").Formula) - 1)
     
        'ajoute la feuille et sa cellule
        Formule = Formule & ":'" & Fe.Name & "'!B46)"
     
        'change la formule
        Range("C1").Formula = Formule
     
    End Sub
    Hervé.

  3. #3
    Membre averti
    Homme Profil pro
    Voice service manager
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Voice service manager
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Par défaut
    Merci Hervé,

    Je pense que celà est l'élément manquant qui me faisait buté.

    J'avais essayé une solution de ce style avec le code ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'recup formule de cell C4 form server capacity
    'Range("'Physical Server capacity'!C4").Formula = "=" 'Initialisation de la formule de C4
    'CellFormule = Range("'Physical Server capacity'!C4").Formula 'Récupération de "l'ancienne" formule
    'CellFormule = CellFormule & "+" & "'Param'!B23" 'Ajout d'une cellule dans la formule
    'Range("'Physical Server capacity'!C4").Formula = CellFormule 'Ajout de la nouvelle formule dans la cellule A1
     'supprime la parenthèse de fin
    ou param est un string contenant le nom de la nouvelle sheet. En regardant ta formule, le problème ce trouverai sur la mienne a ce niveau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'CellFormule = CellFormule & "+" & "'Param'!B23" 'Ajout d'une cellule dans la formule et si j'applique ta solution, cela deviendrais:
    'CellFormule = CellFormule ":" & '" & Param & "'!B23)"
    Je test ta proposition ce weekend et reviendrais pour donner le résultat du test.
    Cordialement
    Thibaut

  4. #4
    Membre averti
    Homme Profil pro
    Voice service manager
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Voice service manager
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Par défaut
    Bonsoir Hervé,

    J'ai pu faire mon test, et basé sur l'élément manquant que tu a pointé dans ta proposition, j'ai réussi à obtenir le résultat que je cherché
    Il m'as juste fallu metter mon code à un autre endroit qui est l'ajout de ma nouvelle sheet basé sur un templates prédéfinis ce qui me donne le code suivant:

    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
     
    Public Param As String
     
     
    Private Sub UserForm_Initialize()
        Dim Title As String
        Dim Message As String
        Dim defaultRef As String
        Dim Sht As Worksheet
        Dim MyPath As String
        Dim SaveDriveDir As String
        Dim FileToOpen As Variant
        Dim Formule As String
     
        Title = "New Virtual Machine Name"
        Message = "New Virtual Machine Name"
        defaultRef = "Provide name of the new VM templates to add"
        SaveDriveDir = CurDir
        MyPath = Application.TemplatesPath
        ChDrive MyPath
        ChDir MyPath
     
        Param = InputBox(Message, Title, defaultRef)
        FileToOpen = Application.GetOpenFilename("Excel Templates (*.xlt*),*.xlt*")
        If FileToOpen <> False Then
            Sheets.Add before:=Worksheets(Worksheets.Count), Type:=FileToOpen
            Sheets("Sheet Templates").Name = Param
        End If
     
        ChDrive SaveDriveDir
        ChDir SaveDriveDir
        VM_Name.Value = Param
        Server_Appli_Type.Value = Param
        cmb_vcpu.List = Array("1", "2", "3", "4")
        cmb_vnic.List = Array("1", "2", "3", "4")
        'Range("'Physical Server capacity'!C4").Formula = Formule
        Formule = Left(Range("'Physical Server capacity'!C4").Formula, Len(Range("'Physical Server capacity'!C4").Formula) - 1)
        'ajoute la feuille et sa cellule
        Formule = Formule & "+'" & Param & "'!B46)"
        'change la formule
        Range("'Physical Server capacity'!C4").Formula = Formule
     
    End Sub
    Merci beaucoup de ton aide.
    Cordialement
    Thibaut

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/07/2009, 04h50
  2. Problème pour créer une base sur Solaris
    Par snach dans le forum Installation
    Réponses: 3
    Dernier message: 29/08/2008, 11h07
  3. Réponses: 5
    Dernier message: 10/05/2007, 19h04
  4. [VBA-E] Macro Pour Faire un Tri sur plage variable
    Par tabarly35 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/09/2006, 19h02
  5. comment forcer l'exécution des macros pour une seule base ?
    Par tristan_sauvage dans le forum Access
    Réponses: 4
    Dernier message: 21/08/2006, 11h59

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