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 :

[VBA-E] Construction d'un tableau EXCEL avec VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut [VBA-E] Construction d'un tableau EXCEL avec VBA
    Bonjour,

    Je dois construire un tableau excel qui doit reprendre tous les jours des indicateurs de risques pour plusieurs clients. Ce tableau sera alimenté plus tard par des données provenants d'autres tableaux excels.

    Apparememt VBA me permettra de réaliser cela. Je suis débutant dans le domaine c'est pourquoi je suis ici.

    je vous propose d'exposer mon pb 'step by step'
    Avant donc d'aller chercher les données pour alimenter ce tableau qui se trouvent dans d'autres fichiers excel, je pense qu'il faille construire déjà les collonnes du tableau.

    j'ai donc tenté de construire mes colonnes de la façon suivante :


    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
    Function construct_en_tete(ptr As Worksheet)
     
        ptr.Cells(1, 1) = "LIBELLE OPCVM"
        ptr.Cells(1, 2) = "CLASSE"
        ptr.Cells(1, 3) = "TOLERANCE"
        ptr.Cells(1, 4) = "VALORISATION J-1"
        ptr.Cells(1, 5) = "VALORISATION J"
        ptr.Cells(1, 6) = "VARIATION DE VL"
        ptr.Cells(1, 7) = "VARIATION DE L'INDICE"
        ptr.Cells(1, 8) = "ECART"
        ptr.Cells(1, 9) = "CORRELATION MOYENNE"
        ptr.Cells(1, 10) = "INDICATEUR DE CORRELATION SUR 3 JOURS"
        ptr.Cells(1, 11) = "SOUS / RACHAT EN % de l'actif net"
        ptr.Cells(1, 12) = "RISQUE EN EUROS"
        ptr.Cells(1, 13) = "ANALYSE"
        ptr.Cells(1, 14) = "COMMENTAIRE"
    End Function
    Lorsque je lance cette macro, rien de ne créer....Est ce que j'ai oublié de faire quelquechose.

    Par avance merci à tous pour votre aide.

    Olivier

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Il faut que tu définisse ton ptr. C'est quoi ptr ? le nom de ta feuille ?

    Utilise Sub plutot que Function


    Pour initialiser ta feuille dans ta procédure faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set ptr = worksheets("ptr")

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    J'ai cela qui fonctionne chez moi sur excel 2003 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub construction_entete()
    Dim Menu, I
     
    Menu = Array("LIBELLE OPCVM", "CLASSE", "TOLERANCE", "VALORISATION J-1", "VALORISATION J", "VARIATION DE VL", _
        "VARIATION DE L'INDICE", "ECART", "CORRELATION MOYENNE", "INDICATEUR DE CORRELATION SUR 3 JOURS", _
        "SOUS / RACHAT EN % de l'actif net", "RISQUE EN EUROS", "ANALYSE", "COMMENTAIRE")
        I = 1
        For Each Value In Menu
            If Value <= 0 Then Exit Sub
            Cells(1, I).FormulaR1C1 = Menu(I - 1)
            I = I + 1
        Next
     
    End Sub
    Bonne chance

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    tu peux même supprimer le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Value <= 0 Then Exit Sub
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub construction_entete()
    Dim Menu, I
     
    Menu = Array("LIBELLE OPCVM", "CLASSE", "TOLERANCE", "VALORISATION J-1", "VALORISATION J", "VARIATION DE VL", _
        "VARIATION DE L'INDICE", "ECART", "CORRELATION MOYENNE", "INDICATEUR DE CORRELATION SUR 3 JOURS", _
        "SOUS / RACHAT EN % de l'actif net", "RISQUE EN EUROS", "ANALYSE", "COMMENTAIRE")
        I = 1
        For Each Value In Menu
            Cells(1, I).FormulaR1C1 = Menu(I - 1)
            I = I + 1
        Next
     
    End Sub

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    merci beaucoup srame.


    Maintenant il faut que dans la colonne libellé opcvm, je renseigne au niveau des lignes qui suivent le nom des portefeuilles. le tableau doit doit donc se struturer de la façon suivante :


    Libelles OPCVM
    portefeuille 1
    portefeuille 2
    portefeuille 3
    portefeuille 4

    quel code dois-je utiliser pour réaliser ce tableau?

    Par avance merci de votre aide.

    Oliver

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Tu peux reprendre le même principe du style (a vérifier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub construction_1erecol()
    Dim Col, J
     
    Col = Array("portefeuille 1", "portefeuille 2", "portefeuille 3", "portefeuille 4")
        J = 2
        For Each Value In Col
            Cells(J, 1).FormulaR1C1 = Col(J - 2)
            J = J + 1
        Next
     
    End Sub

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut Construction d'un tableau EXCEL avec VBA
    Merci Sram. Mon tableau Excel commence à prendre forme

    Maintenant il faut que je passe à la phase suivante.


    Mon tableau est bien sous forme :

    Pour les lignes :
    ("LIBELLE OPCVM", "CLASSE", "TOLERANCE", "VALORISATION J-1", "VALORISATION J", "VARIATION DE VL", _
    "VARIATION DE L'INDICE", "ECART", "CORRELATION MOYENNE", "INDICATEUR DE CORRELATION SUR 3 JOURS", _
    "SOUS / RACHAT EN % de l'actif net", "RISQUE EN EUROS", "ANALYSE", "COMMENTAIRE


    Pour les colonnes :


    Maintenant il faut que je puisse alimenter pour chaque portefeuille la colonne "valorisartion J" à partir d'un autre fichier excel qui sera quotidien.

    Ma problèmatique est donc :

    Comment affecter correctement dans mon tableau final, la 'valorisation J' pour le bon portefeuille.
    Le fichier source aura toujours la meme struturation pour les colonnes

    La struturation du fichier source (fichier en pièce jointe EVLSAV) est la suivante :
    Code portefeuille;Libelle portefeuille;Code ISIN de la part;Devise portefeuille;Nombre de titres;AN / part;Valeur liquidative;Var VL / prec;Date VL;Frais de gestion entre 2 VL / part;Total frais de gestion / part;Date VL Précédente;VL Précédente;Montant du coupon net;Date de detachement de coupon

    il faut que je récupère la valeur liquidative en fonction du code portefeuille

    Si qqu'un a une idée pour faire cela je suis preneur. De mon coté je regarde déja comment il est possible de rapatrier des données d'un fichier excel à l'autre. Ensuite viendra la selection de zones spécifiques.


    Olivier

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Hello,

    J'ai pas trop le temps de regarder tout ça ces jours, je te laisse avancer tout seul ou si quelqu'un d'autres veux se pencher là dessus, plus on est de .... plus on ...

    Ce qui est sur, la façon la plus éfficace d'apprendre, c'est de faire ses tests soi-même. Et après, ici sur ce forum, il y a vraiment des génies. Donc, tu ne devrait pas mettre long à avoir les solutions.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/03/2011, 10h37
  2. [VBA-E]Sauvegarde feuille Excel avec VBA
    Par jojo2303 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/03/2006, 20h06
  3. [VBA] Dissocier des feuilles Excel avec VBA
    Par lezinve dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2006, 17h30
  4. [VBA-E]créer un tableau Excel en vba
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/01/2006, 17h06
  5. Comment recupérer la version d'Excel avec VBA ?
    Par ikoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2005, 19h51

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