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]Problème Variable/Graphique


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut [VBA-E]Problème Variable/Graphique
    Bonjour tout le monde,

    comme je le dis dans le titre, j'ai un problème avec une variable au niveau d'un graphique... pour faire simple, voici ce que je souhaiterais faire:

    j'ai un tableau contenant des clients et un nombre de commande sur le mois, mais vu le nombre de client qui peut être exhorbitant, c'est pas l'idéal sur un graphique en secteur pour s'y repérer... alors je souhaiterais y afficher que les 5 plus grandes valeurs, par exemple (en pourcent, par les étiquettes...)

    puisque le graphique en secteur fonctionne utilise les numéros de ligne de la plage pour créer les quartiers, j'ai relevé les numéros de lignes des plus grandes valeurs, qui se situe dans une variable...

    en gros, pour finir ma macro, il ne me reste plus qu'à placer cette variable dans les données de l'affichage des étiquettes, mais là, ca coince...

    au début, j'avais une variable "Variant/Sting" que j'ai réussi à modifier en "Variant/Double"... mais l'un ou l'autre ne change rien...

    Connaissant très mal le VB, je suis donc un peu coincé... si vous pouviez donc m'aider à résoudre ce problème... je vous en saurais gré !

    EDIT:

    Si cela peut vous aider, voici une copie du fichier: http://cjoint.com/?crp6wBjHAM

    Elle me sera peut-être également utile pour le week-end... lol

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Bonjour 47-47,

    essaye cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).Points(6).DataLabel.Characters.Text = a
    Est-ce bien cela que tu veux ?
    @+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Salut bouley,

    je l'ai essayée... et... fonctionne pas... j'ai essayé de la modifer en regardant l'aide d'office, mais je n'y arrive pas... d'ailleurs, je comprends pas les erreurs qu'il me renvoie... lol

    mais si je comprends bien ton code, tu affecte la valeur de "a" à l'étiquette du quartier, c'est ca???

    Si oui... ben... non... ce n'est pas ca...

    Ce que je souhaiterais, c'est trouvé quel quartier représente quel client afin de lui attribuer une étiquette en pourcent... et le a, représenterais donc le numéro de client/quartier...

    en gros, ce que j'avais essayé de faire, c'était:

    avec ce qui va autour... mais là, il me reconnait la variable "a" comme une lettre et non pas comme variable, si je comprends bien l'erreur... lol

    concernant ce que tu as fait, c'est vrai que mon classeur n'aidait pas très bien à comprendre ce point, car j'ai remis les nombres à la place des variables pour éviter les erreurs...

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Je viens de tester ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).Points(a).Select
    c'est bien cela que tu veux ?
    Si oui, il fonctionne tres bien sauf avec a car a=7 dans ton exemple et tu n'as que 6 quartiers.
    @+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    pt1... là j'y comprends plus rien... j'avais essayé avec les autres variables, et ca ne fonctionnait pas non plus...

    enfin bref... y a du avoir une couille à quelque part, soit le code, soit moi... chais pas... mais... l'important c'est que maintenant ce soit bon !

    Merci de m'avoir éclairé... lol même si les 3/4 étaient fait...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    je reviens à la charge, mais avec d'autres questions... lol

    est-il possible faire un processus comme suit:

    - déprotéger la page
    - selectionner un graphique
    - faire un apercu avant impression (jusque là, OK !)
    > laisser ouvert l'aperçu et une fois le bouton fermer comme suit
    - selectionner la page
    - protéger la page

    Comme vous pouvez le voir, la première partie, no-soucis... mais une fois dans l'apercu, en réalité, la macro ne sait pas trop quoi faire car normalement elle devrait être dans la feuille excel... et donc... arret de la macro...

    Y a-t-il moyen de relancer la macro quand on appuie sur le bouton fermer de l'apercu??

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Bonjour 47-47

    cette macro à été générée par l'enregistreur de macro et elle fonctionne !
    donc elle continue aprés le clic sur le bouton fermer de l'aperçu avant impression.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macro1()
        ActiveSheet.Unprotect
        ActiveSheet.ChartObjects("Graphique 1").Activate
        ActiveChart.ChartArea.Select
        ActiveWindow.SelectedSheets.PrintPreview
        ActiveWindow.Visible = False
        Windows("Classeur47.xls").Activate
        Range("D3").Select
        ActiveCell.FormulaR1C1 = "27"
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub
    tu vois et tu dis ?
    @+

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Nom de diou va !

    j'ai fait exactement ca hier, sauf la formule du 27, et ca ne reprennait pas !!!

    Je n'y comprends plus rien ! lool

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    encore un truc que je ne comprends pas... mais j'espère que cette fois ce n'est pas moi ou que ca n'y ressemble pas... lool

    j'essaie de concatener 2 éléments par une macro... donc je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(r,c).formular1c1 = "=CONCATENER(r[-1]c,r[-2]c)"
    mais il me marque dans la cellule de destination: "#NOM?"

    le plus étonnant, c'est qu'il me suffit de rentrer dans la formule et lui faire "ENTER" pour que tout fonctionne !

    Alors, grande question... que peut-il y avoir comme erreur??? Ou comment pourrais-je procéder autrement pour concatener ces valeurs (contenue en partie dans des variables)

  10. #10
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    en VBA avec FomulaR1C1 il faut utiliser le nom US des fonctions
    Concatener = Concatenate
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Cells(r, c).FormulaR1C1 = "=CONCATENATE(r[-1]c,r[-2]c)"
    cela devrai fonctionner
    As-tu testé ce que je t'ai envoyé en mp (worksheetFunction.match)?
    tu nous dis?
    @+

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    je n'ai rien en MP...

    Sinon, merci beaucoup pour l'info de l'anglais... ca, je ne le savais po ! lol Ce qui explique sans aucun doute mon problème !

  12. #12
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    testes ceci c'est + court et plus rapide

    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
    Range("A1:B10").Select
        Selection.Sort Key1:=Range("B7"), Order1:=xlDescending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
    a = Range("B6").Value
    b = Range("B5").Value
    c = Range("B4").Value
    d = Range("B3").Value
    e = Range("B2").Value
     
    Range("A1:B10").Select
        Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
     
    a = Application.WorksheetFunction.Match(a, Range("B:B"), 0)
    b = Application.WorksheetFunction.Match(b, Range("B:B"), 0)
    c = Application.WorksheetFunction.Match(c, Range("B:B"), 0)
    d = Application.WorksheetFunction.Match(d, Range("B:B"), 0)
    e = Application.WorksheetFunction.Match(e, Range("B:B"), 0)
     
     
     
    ActiveSheet.ChartObjects("Graphique 1").Activate
    Apres tu continues ton code

    Qu'en pense-tu ?
    @+

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    ca à l'air de fonctionner, en effet... tu pourrais juste m'expliquer le fonctionnement de "Match"??

    Les 2 premiers éléments, pas de problème, par contre, le 0...

  14. #14
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Consulte l'aide sur la fonction EQUIV dans les fonctions Recherches & Matrices EQUIV = MATCH
    @+

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par 47-47
    ca à l'air de fonctionner, en effet... tu pourrais juste m'expliquer le fonctionnement de "Match"??
    voir aide en ligne excel ... "Match" = "EQUIV"

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Oki ! merci pour l'info... c'est juste difficile de savoir ou chercher... savoir comment a été traduit le mot...

    par contre, en ce moment, j'ai un autre problème... vous me direz peut-etre que je saute du coq à l'ane... mais... c'est assez clair pour moi... lol car je suis dans un projet... et... je sais ce que je dois faire... mais pas forcément comment... lol

    bref, j'essaie d'insérer une ligne, dans une feuille, à une ligne donnée... j'ai repris le code de l'aide en ligne, mais je n'arrive pas à le faire fonctionner...

  17. #17
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    utilise l(enregistreur de macro et tu te poseras moins de questions
    sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Rows(8).Insert Shift:=xlDown
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Rows(8).Insert Shift:=xlUp
    @+

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Merci bcp ! C'est vrai que généralement avec la macro automatique, on peut voir comment procéder... et là... j'ignore pourquoi, je n'y ai plus pensé... En tout cas, merci mille fois de t'occuper un peu de moi et mes macros...

    Maintenant que j'arrive gentillement vers la fin de mes macros, j'ai juste une question... lol

    j'ai une formule qui me fait la somme sur une colonne... avec la macro, j'insère une ligne juste au dessus, et retrie le tout pour trier sur les clients (après 4-5 filtres j'arrives à avoir quelques choses de correcte qui me garde les commandes et CA par clients... lol )

    par contre, petit problème, la fonction de la somme ne se met pas à jour, si je peux dire, j'entends par là qu'elle garde la même plage qu'au début...

    Y a-t-il un moyen, hormis de refaire la formule, de la mettre à jour (la refaire ne pose pas un vériable problème à vrai dire... )

    Après ca, je crois que j'arrive au bout de mon cauchemard... j'aurais fait une macro assez compliquée (enfin, plusieurs), pas très catholique comme codage... mais... qui fonctionne...

    PS: pendant que j'y suis, une question qui n'a pas trop à voir avec les macros, mais les échelles logarythmiques des graphiques en histogramme... j'obtiens par une formule les valeurs à y afficher, mais dès que j'ai des 0 (obtenu par les formules), il me dit que c'est impossible d'avoir des 0 avec ces échelles... alors que si je rentre manuellement le 0, ca passe... y a-t-il un remède???

    PS2: maintenant, tout d'un coup, il me fait un truc bizarre... il me marque ceci comme message:
    La méthode "Cells" de l'objet "_Global" a échoué
    avec l'erreur d'exécution 1004... et d'une fois à l'autre, ca fonctionne... ca fonctionne pas... ca fonctionne pas, mais sur un autre truc... (dont un rows)

  19. #19
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Pour ta première question ben refais ta formule !
    pour la deuxième fais voir ton code et là ou cela "plante".
    tous les endroit !!
    @+

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Bonsoir Bouley,

    Oki, merci pour la première, suivant comment, c'est le plus simple...

    Pour la 2ème, voici les portions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets(2).Select
     
    **Cells(1, 5).Value = r**
    Cells(2, 5).Value = "A"
    Cells(3, 5).FormulaR1C1 = "=CONCATENATE(r[-1]c,r[-2]c)"
    (défaut trouvé sur la ligne avec les **)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sheets(2).Select
     
    a1 = "A1"
     
    r = 1
    c = 1
     
    **While Cells(r, c) <> ""**
     
        r = r + 1
     
    Wend
    Voilà, cette fois, c'est les 2 seuls ou il me dit l'erreur, avant il me disait encore sur un row...

    le premier morceau se situe à la troisième étape de la macro, quand je reviens sur la page des graphiques pour y faire un tri des entreprises (comme tu peux le voir, juste après la sélection), et avant cette étape, je trie la liste des clients (liste à part) par nom...

    le 2ème, également juste après la sélection de la feuille... et au tout début du code... mais celui-ci foire après une première exécution qui plante (donc à la 2ème exécution de la macro)

    Je viens de penser que cela pouvait peut-être venir d'une protection sur la feuille, mais non, elle n'est pas protégée... et il me semble que le message d'erreur est différent dans ce cas...

    Bon, surement bonne nuit ! Peut-être à demain...

Discussions similaires

  1. [VBA-E]problème de graphique
    Par macromega dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/05/2007, 15h10
  2. [VBA-E] Problèmes de variables
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/08/2006, 08h28
  3. [VBA-E]problème de récupération de variables et d'event
    Par zenix dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/04/2006, 12h53
  4. [VBA-E] Problème de portée de variable [débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/03/2006, 18h28
  5. [VBA EXCEL] Problème d'éxécution avec graphiques
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/11/2005, 09h55

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