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 :

Changer les constantes


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
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 39
    Par défaut Changer les constantes
    Bonjour,

    Merci pour vos réponses à ma dernières question,

    Maintenant, j'ai un fichier excel et j'exporte (j'essaie) plusieurs graphiques vers un docword, pour cela j'utilise ce code inspiré d'une page msn.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
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub Bouton1_Cliquer_exportun()
     
        'Name of an existing Word document, and the name the chart will have when exported.
        Const stWordDocument As String = "Rapport de graphique.docx"
        Const stChartName As String = "ChartReport1.gif"    
        'Word objects.
        Dim wdApp As Word.Application
        Dim wdDoc As Word.Document
        Dim wdbmRange As Word.Range    
        'Excel objects.
        Dim wbBook As Workbook
        Dim wsSheet As Worksheet
        Dim ChartObj As ChartObject    
        'Initialize the Excel objets.
        Set wbBook = ThisWorkbook
        Set wsSheet = wbBook.Worksheets("Résumé nuit")
        Set ChartObj = wsSheet.ChartObjects("Graphique 1")    
        'Turn off screen updating.
        Application.ScreenUpdating = False    
        'Export the chart to the current directory, using the specified name, and save the chart as a .gif
        ChartObj.Chart.Export _
                       Filename:=wbBook.Path & "\" & stChartName, _
                       FilterName:="GIF"    
        'Initialize the Word objets to the existing Word document and bookmark.
        Set wdApp = New Word.Application
        Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\" & stWordDocument)
        Set wdbmRange = wdDoc.Bookmarks("ChartReport1").Range    
        'If there is already an inline shape, that means the macro has been run before - clean up any artifacts.
        On Error Resume Next
        With wdDoc.InlineShapes(1)
            .Select
            .Delete
        End With
        On Error GoTo 0    
        'Add the .gif file to the document at the bookmarked location,
        'and ensure that it is saved inside the Word doc.
        With wdbmRange
            .Select
            .InlineShapes.AddPicture _
            Filename:=wbBook.Path & "\" & stChartName, _
            LinkToFile:=False, _
            savewithdocument:=True
        End With    
        'Save and close the Word document.
        With wdDoc
            .Save
            .Close
        End With    
        'Quit Word.
        wdApp.Quit    
        'Clear the variables.
        Set wdbmRange = Nothing
        Set wdDoc = Nothing
        Set wdApp = Nothing    
        'Delete the temporary .gif file.
        On Error Resume Next
        Kill wbBook.Path & "\" & stChartName
        On Error GoTo 0    
        MsgBox "Graphique exporté avec succès " & stWordDocument   
     
    End Sub
    Ainsi je lance cette macro avec un bouton de commande, et je fais de même pour chaque graphique, ce qui est très long...
    Est-ce qu'il est possbile Soit d'affecter deux macros à un bouton ? ou Soit de changer: Const stChartName As String = "ChartReport1.gif" en 2 et les dim As, Set =, qui suivent aussi ?

    Merci si vous pouvez me répondre.
    Cordialement

    ps: et dans ce code je ne parviens à changer le chemin du document word, si vous avez une idée, vous êtes le bienvenu

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    par définition, une constante est immuable ... sinon elle n'est plus "constante"

    Il faut remplacer tes constantes par des variables String ... là tu pourras les modifier à volonté

    Et au niveau du changement de tes variables objet (les "Set...") il semblerait que le changement se fait sur la chaine de caractère ?
    Si tel est le cas : utiliser un tableau contenant chaque valeur ... faire une boucle sur chaque élément du tableau et utiliser ce dernier pour avoir la bonne chaine de caractère

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je te fais ça un peu à l'arrache sans trop regarder ce que contient ta macro.


    Tu passes 90% de ta macro dans une sous-routine que tu appelles avec les noms de tes graphiques comme paramètre et tu ne changes rien à ton bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Bouton1_Cliquer_exportun()
        Call Sous_exportun("ChartReport1.gif")
        Call Sous_exportun("ChartReport2.gif")
        Call Sous_exportun("ChartReport3.gif")
    End Sub
     
    Sub Sous_exportun(stChartName As String)
     
        'Name of an existing Word document, and the name the chart will have when exported.
        Dim stWordDocument As String = "Rapport de graphique.docx"
        'Word objects.
    ... etc...

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

Discussions similaires

  1. Changer les points de montages des partitions
    Par Thrystan dans le forum Administration système
    Réponses: 6
    Dernier message: 13/08/2004, 16h46
  2. [C#] Changer les Autorisations d'un dossier
    Par dips dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/06/2004, 13h29
  3. [Forms] changer les couleurs
    Par Nounoursonne dans le forum Forms
    Réponses: 11
    Dernier message: 02/04/2004, 09h40
  4. changer les caracteres decouleurs
    Par jeclake dans le forum C
    Réponses: 5
    Dernier message: 16/04/2003, 17h31
  5. Changer les couleurs de la palette avec du RGB
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 11
    Dernier message: 13/01/2003, 08h55

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