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 :

Création de graphique et modification


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut Création de graphique et modification
    Bonjour à toutes et à tous,

    Je mets actuellement en place un outil de gestion, cet outil récupère des données, les insère dans un nouveau document créé pour l'occasion, les traite puis propose à l'utilisateur de réaliser des graphiques d'évolutions. J'ai tout d'abord développé cet outil pour Office 2013 et il fonctionne comme je le désire. Le soucis vient du fait que les ordinateurs de mon entreprise tournent sous Office 2003 et que le code sous VBA n'est pas le même.

    J'ai réussi à corriger les points de la récolte de données et du traitement, en revanche pour la mise en place des graphiques, cela ne fonctionne plus. Je me suis inspiré de l'enregistreur de macro mais cela à généré des erreurs plus ou moins importantes.

    La méthode de création de graphique insère un nouvel onglet dans le fichier dans lequel j'ai mon code au lieu de le mettre dans le fichier "nouveau" où se trouvent les données.
    Les données si elles se trouvent dans le fichier "nouveau" font planter Excel (Erreur '-2147417848(80010108)' Erreur Automation. L'objet invoqué s'est déconnecté de ses clients.), j'ai contourné le problème en copiant les données nécessaires à la création de mon graph sur le document Excel où se trouve mon code.
    J'ai ensuite essayé de copier le graphique créé pour le coller dans mon document "nouveau" mais cela le créé dans un autre classeur.

    J'en suis là et ne voit pas de solutions malgré mes recherches précédentes.
    Je précise que je suis autodidacte sur VBA d'où les choses moches qui peuvent se glisser dans mon code.

    Je joins mon code qui traite de la partie en lien avec le(s) graphique(s) et suis à disposition sans limite de temps ni d'heure pour apporter les informations qui pourraient être manquantes.

    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
    'récupération des données pour graph
    Dim PosDonnees As String
    z = 1
    For i = 1 To CompteurUF2LB
        For j = 2 To DernLigne
            If ThisWorkbook.Sheets("Feuil5").Range("A" & i).Value = "" Then 'Test valeur vide
                Exit For
            ElseIf ThisWorkbook.Sheets("Feuil5").Range("A" & i) = xlBook.Sheets("Feuil1").Range("A" & j) Then 'Mise en place de la marge
                xlBook.Sheets("F4").Range("A" & z + 1) = ThisWorkbook.Sheets("Feuil5").Range("B" & i)
                xlBook.Sheets("F4").Range("B" & z + 1) = "CA"
                xlBook.Sheets("F4").Range("B" & z + 2) = "Marge %"
                xlBook.Sheets("F4").Range("B" & z + 3) = "Perte %"
                x = 11
                y = 3
                While y <= NbMois + 3 'Récupération des données en fonction des graphiques désirés par l'utilisateur
                    Lettr = Split(Cells(1, x).Address, "$")(1)
                    LettrBis = Split(Cells(1, x - 1).Address, "$")(1)
                    LettrTer = Split(Cells(1, x - 2).Address, "$")(1)
                    LettrF4 = Split(Cells(1, y).Address, "$")(1)
                    xlBook.Sheets("F4").Range(LettrF4 & z + 1) = xlBook.Sheets("Feuil1").Range(Lettr & j)
                    xlBook.Sheets("F4").Range(LettrF4 & z + 2) = xlBook.Sheets("Feuil1").Range(LettrBis & j)
                    xlBook.Sheets("F4").Range(LettrF4 & z + 3) = xlBook.Sheets("Feuil1").Range(LettrTer & j)
                    y = y + 1
                    x = x + 9
                Wend
                LettrGph = Split(Cells(1, NbMois + 3).Address, "$")(1)
                PosDonnees = "B" & z + 1 & ":" & LettrGph & z + 3
                xlBook.Sheets("F4").Cells.Copy
                ThisWorkbook.Sheets("Feuil7").Paste 'Copie des données du document initial
                Set sourcRange = ThisWorkbook.Sheets("Feuil7").Range(PosDonnees)
                xlBook.Sheets("Graphs").Activate
                Charts.Add
                ActiveChart.ChartType = xlLine
                ActiveChart.SetSourceData Source:=sourcRange, PlotBy:= _
            xlRows
                'ActiveChart.SeriesCollection(1).XValues = "='F4'!R1C3:R1C6"
                'ActiveChart.SeriesCollection(2).XValues = "='F4'!R1C3:R1C6"
                'ActiveChart.SeriesCollection(3).XValues = "='F4'!R1C3:R1C6"
                'ActiveChart.Location Where:=xlLocationAsObject, Name:="Graphs"
                With Charts(i)
                    .HasTitle = True
                    .ChartTitle.Characters.Text = xlBook.Sheets("F4").Range("A" & z + 1)
                    .Axes(xlCategory, xlPrimary).HasTitle = False
                    .Axes(xlValue, xlPrimary).HasTitle = False
                End With
                ActiveChart.SeriesCollection(3).Select
                ActiveChart.SeriesCollection(3).AxisGroup = 2
                ActiveChart.SeriesCollection(2).Select
                ActiveChart.SeriesCollection(2).AxisGroup = 2
                Sheets("Graph" & i).Copy
                xlBook.Sheets.Add
                ActiveSheet.Name = xlBook.Sheets("F4").Range("A" & z + 1)
                ActiveSheet.Paste
                z = z + 3
            End If
        Next
    Next
    Merci d'avance à ceux qui prendront le temps de se pencher sur mes problèmes.
    Cordialement,
    Nyectod

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Sans la disposition des données, il est difficile de deviner sur la partie de code que tu montre. On peut certes deviner

    Par contre, tu recrée la roue en essayant d'extraire la lettre correspondant à une cellule alors qu'on peut avec le n° de ligne et le n° de colonne travailler directement sans connaitre la lettre correspondante

    Exemple vite fait, sans passer par la lettre correspondant à la colonne NbMois+3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Set SourcRange = ThisWorkbook.Worksheets("Feuil7").Cells(z + 1, 2).Resize(3, NbMois + 2)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut
    Bonjour,

    Soucis de net hier soir, pas pu répondre plus tôt. Désolé.

    Pour mes données, j'ai 7 onglets sur mon "nouveau" document (xlBook dans le code)
    Les onglets qui m'intéressent, Graphs (censé héberger les graphiques) et F4 (données nécessaires aux graphiques)
    Dans mon onglet F4, les données sont présentées de cette manière
    Mois 1 Mois 2 Mois 3 Mois 4 Etc
    Titre graph1 CA ici
    Marge des
    Perte données
    Titre graph 2 CA
    Marge
    Perte
    Est ce que c'est plus clair comme ça ou pas du tout ?


    Pour la réinvention de la roue, en effet... Je suis resté sur Excel = lettre + chiffre pour identifier une case. Je mets ça en tête de liste des mises à jours à faire une fois que ce sera fini.

    Merci à toi de te pencher sur mon (qui à dit mes ?) soucis.

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/04/2007, 20h17
  2. [VBA-E] Création de graphique
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 06/03/2006, 11h10
  3. VBA Excel - Création de graphique
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/01/2006, 16h11
  4. [Graphique] Création de graphiques
    Par missnouvelle dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 22/11/2005, 19h12
  5. Création de graphique
    Par boxerbara dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 27/07/2005, 09h39

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