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 :

Insertion d'un point dans une courbe par rapport à un macro [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Insertion d'un point dans une courbe par rapport à un macro
    Bonsoir,

    Pour mon deuxième poste sur ce forum (qui est très réactif), j'ai un petit blocage au niveau de la modification d'un graphique en fonction d'une macro.

    Je m'explique:
    Je dispose d'un bouton sur une 1ère feuille excel qui me permet de calculer une somme de cellule par rapport à leur contenu grâce à une macro.
    Cette somme est insérée dans une 2ème feuille, dans une nouvelle colonne située entre la A et l'ancienne B (devenue C).
    De plus, la date du jour est inséré dans une cellule de la nouvelle colonne.
    Sur cette 2ème feuille, je dispose d'une courbe de type nuage de point utilisée pour avoir cette fameuse somme de cellule (ordonnée) en fonction de la date du jour (abscisse).

    Mon problème est le suivant:
    J'aimerai que ma courbe soit mise à jour automatiquement avec les nouveaux points lorsque j'appuie sur le bouton donc lorsque j'insère une nouvelle colonne avec la nouvelle donnée.

    Pour finir, je dispose d'un second graphique en colonne avec plus de données dont je tenterai d'effectuer la même chose en parallèle avec votre future réponse à mon problème. C:
    Si vous avez besoin du programme vba, je peux éventuellement vous le partager si ma description ci-dessus ne suffit pas.

    En vous remerciant de façon futuriste. ^^
    Salutations sans pareil.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Remoi,

    Toujours en attente d'aide de votre part, je vous donne un fichier excel représentatif de mon problème.

    Donc en partant du fichier:
    Dans ma feuille "Améliorations", je dispose d'un tableau avec une colonne priorité avec 3 choix de valeurs (1, 2 ou 3) & une colonne Statut avec 4 choix de caractères possibles (Fait, A faire, En cours, A tester) .
    Je dispose aussi d'un bouton "Fin d'intervention". Celui-ci permet de créer une colonne dans la feuille "Suivi Graph" entre la colonne A et la colonne B (ancienne colonne B).
    Dans cette nouvelle colonne, la date du jour s'affiche sur la première ligne puis ensuite la somme des caractères "A faire, En cours, A tester" & la somme des valeurs (priorités) de ces caractères.
    Enfin, nous avons le nombre de ligne classé dans le caractère "Fait" par rapport au nombre de ligne classe dans le caractère "Fait" de la date antérieure (ex: B15 = SOMME "Fait" dans Feuille "Amélioration" - C15). De même pour les valeurs (priorités) par la suite.

    Le problème se situe sur la courbe:
    car j'aimerai rajouter le point de la nouvelle cellule B15 (créée par le bouton "Fin d'intervention) dans cette courbe automatiquement et si possible au fil du temps supprimer les plus vieux points/modifier la selection des données de la courbe pour retirer les plus vieux points.

    Je ne sais pas du tout comment intéragir avec la courbe :/
    si il faut effectuer un macro avec une variable représentant la nouvelle colonne B
    ...

    J'ai essayé de faire quelques lignes avec l'enregistreur de macro sans succès.

    En espérant avoir de l'aide et être clair dans mon explication.
    Fichiers attachés Fichiers attachés

  3. #3
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu as 2 solutions

    Sans vba: Nommer les plages X et Y dynamiquement à l'aide de la fonction DECALER

    avec Vba, tu ajoute ces lignes en fin de ta macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Ws As Worksheet
    Dim Nb As Integer
     
    Set Ws = Worksheets("Suivi Graph")
    Nb = Ws.Cells(15, Ws.Columns.Count).End(xlToLeft).Column
    If Nb > 1 Then
        With Ws.ChartObjects("Graphique 2").Chart.SeriesCollection(1)
            .XValues = Ws.Range("B1").Resize(, Nb - 1)
            .Values = Ws.Range("B15").Resize(, Nb - 1)
        End With
    End If
    Set Ws=nothing
    Si tu veux te limiter aux dernières 10 valeurs (les 10 récentes)

    ajoute cette ligne juste après la ligne 6 du code ci-dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Nb > 10 Then Nb = 11    'Ligne à ajouter si on veux se limiter aux 10 récentes données
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Merci pour ta réponse (et désolé pour ma réponse tardive :/ )
    Ta solution marche parfaitement (j'utilise la façon vba).

    Si tu as encore du temps à m'accorder, peux-tu m'expliquer la ligne 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nb = Ws.Cells(15, Ws.Columns.Count).End(xlToLeft).Column
    pour éviter de recopier bêtement?

    Sinon merci encore et joyeux Noel.

  5. #5
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nb = Ws.Cells(15, Ws.Columns.Count).End(xlToLeft).Column
    Te donne la dernière cellule remplie de la colonne 15

    Comme si tu sélectionne la dernière cellule de la ligne 15 et tu fais au clavier FIN + Flèche gauche

    Regarde l'aide sur la propriété Range.End
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

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

Discussions similaires

  1. liaison entre les points dans une courbe
    Par benza dans le forum MATLAB
    Réponses: 3
    Dernier message: 28/12/2012, 14h58
  2. Réponses: 0
    Dernier message: 15/10/2009, 14h10
  3. Relier des points dans une paintbox par une courbe
    Par Benjikos dans le forum Débuter
    Réponses: 4
    Dernier message: 19/08/2007, 13h06
  4. Réponses: 7
    Dernier message: 08/03/2007, 16h42

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