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éer tableau en fonction d'un bouton


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Points : 75
    Points
    75
    Par défaut créer tableau en fonction d'un bouton
    Alors c'est un peu compliqué ma question, on va voir se que ça va donner :

    J'ai un tableau avec des valeurs

    J'ai un premier module : function qui permet de sélectionner une plage de valeur

    J'ai un UserForm1 avec des listes déroulantes et des bouton pour pouvoir faire des choix qui me permettront de sélectionner une plage bien précise de mon tableau. (je fais appel a ma fonction si dessus lorsque j'ai fini ma sélection dans mes listes déroulantes.)

    J'ai un module où je stock mes functions graphiques, que je vais créer à la suite de mes sélection grâce à la plage sélectionné.

    J'ai un UserForm avec deux boutons : 1 qui me demande si je veux mon graphique en baton, et un autre si je veux un graphique en camenber.


    Mais c'est là le soucis c'est que je ne sais pas faire pour recupérer la valeur de ma plage pour créer mes graphiques. Jai plage dans SetSourceData:=Plage qui est toujours à vide. Normal car je lui dis pas où prendre les valeurs. Mais c'est ça que je n'arrive pas.

    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
    Sub GraphiqueBaton(Plage As Range)
    Charts.Add
            ActiveChart.ChartType = xlColumnClustered
            ActiveChart.SetSourceData Source:=Plage, PlotBy:=xlColumns
                ActiveChart.SeriesCollection(1).Name = "=INDICATEUR!R2C4"
                ActiveChart.SeriesCollection(2).Name = "=INDICATEUR!R2C5"
                ActiveChart.SeriesCollection(3).Name = "=INDICATEUR!R2C6"
                ActiveChart.SeriesCollection(4).Name = "=INDICATEUR!R2C7"
                ActiveChart.SeriesCollection(5).Name = "=INDICATEUR!R2C8"
                ActiveChart.SeriesCollection(6).Name = "=INDICATEUR!R2C9"
                ActiveChart.SeriesCollection(7).Name = "=INDICATEUR!R2C10"
                ActiveChart.SeriesCollection(8).Name = "=INDICATEUR!R2C11"
            ActiveChart.Location Where:=xlLocationAsObject, Name:="INDICATEUR"
            ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone, LegendKey:=False
        With ActiveChart.Parent
        .Height = 300
        .Width = 500
        .Top = Range("E4").Top
        .Left = Range("E4").Left
        End With
    End Sub
     
    Sub GraphiqueCamenber(Plage As Range)
        Charts.Add
        ActiveChart.ChartType = xlPie
        ActiveChart.SetSourceData Source:=Plage, _
        PlotBy:=xlRows
        ActiveChart.SeriesCollection(1).XValues = "=INDICATEUR!R2C4:R2C11"
        ActiveChart.Location Where:=xlLocationAsObject, Name:="INDICATEUR"
        ActiveChart.HasLegend = False
        ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, LegendKey _
            :=False, HasLeaderLines:=True
        With ActiveChart.Parent
        .Height = 300
        .Width = 500
        .Top = Range("E4").Top
        .Left = Range("E4").Left
        End With
    End Sub
    Heu là c'est l'UserForm pour faire le choix du graphique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CommandButton1_Click()
     
    GraphiqueBaton Plage
    UserForm2.Hide
     
    End Sub
     
    Sub CommandButton2_Click()
     
    GraphiqueCamenber Plage
    UserForm2.Hide
     
    End Sub
    Là j'ai pas mis mes listes déroulantes mais c'est pas grave. Ya jute à savoir que je sélectionne ma plage grâce à ae2 et ae1.
    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
    Private Sub CommandButton1_Click()
     'DUREE CURATIF ASTREINTE
     SelectionnerLignes2 Worksheets("INDICATEUR"), Worksheets("INDICATEUR").Range("ae1").Value, Worksheets("INDICATEUR").Range("ae2").Value
    UserForm1.Hide
     
    End Sub
    Private Sub CommandButton2_Click()
    'DUREE PREVENTIF
    SelectionnerLignes3 Worksheets("INDICATEUR"), Worksheets("INDICATEUR").Range("ae1").Value, Worksheets("INDICATEUR").Range("ae2").Value
    UserForm1.Hide
    End Sub
    Private Sub CommandButton3_Click()
    'DUREE CURATIF SEMAINE
    SelectionnerLignes1 Worksheets("INDICATEUR"), Worksheets("INDICATEUR").Range("ae1").Value, Worksheets("INDICATEUR").Range("ae2").Value
     
    UserForm1.Hide
    End Sub
    Voili voilou

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 145
    Points : 75
    Points
    75
    Par défaut
    En fait j'ai cherché, et je crois savoir que pour passer une valeur d'un modul à un userform il faut déclarer une variable????

    Bon j'ai essayé mais j'en sais rien, ça marche pas

    Je le met uniquement dans mon module qui me sert à trouver mes cellules concernées par le choix fait auparavant.


    Mais en fait quand je test mon code ça m'envoie sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub GraphiqueBaton()
    Charts.Add
            ActiveChart.ChartType = xlColumnClustered
            ActiveChart.SetSourceData Source:=Plage, PlotBy:=xlColumns
    en me surlignant Plage=nothing

    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
    Public Plage As Range
     
    'celle ci permet de créer tous les tableaux DUREE CURATIF SEMAINE
    Sub SelectionnerLignes1(Feuille As Worksheet, ValA As Variant, ValB As Variant)
      Dim Cellule As Range, Plage As Range, Plage1 As Range
      Dim i As Long
      Dim z As Integer
      Dim Legraph As ChartObject
     
     
      For Each Cellule In Feuille.Range("B3:b" & Feuille.Range("b" & Feuille.Rows.Count).End(xlUp).Row)
            If Not IsEmpty(ValB) Then
                If Cellule = ValA And Cellule(1, 2) = ValB Then
                    If Plage Is Nothing Then Set Plage = Union(Cellule(1, 3), Cellule(1, 4), Cellule(1, 5), Cellule(1, 6), Cellule(1, 7), Cellule(1, 8), Cellule(1, 9), Cellule(1, 10)) Else Set Plage = Union(Plage, Cellule(1, 3), Cellule(1, 4), Cellule(1, 5), Cellule(1, 6), Cellule(1, 7), Cellule(1, 8), Cellule(1, 9), Cellule(1, 10))
                End If
            Else
                If Cellule = ValA Then
                    If Plage1 Is Nothing Then Set Plage1 = Union(Cellule(1, 2), Cellule(1, 3), Cellule(1, 4), Cellule(1, 5), Cellule(1, 6), Cellule(1, 7), Cellule(1, 8), Cellule(1, 9), Cellule(1, 10)) Else Set Plage1 = Union(Plage1, Cellule(1, 2), Cellule(1, 3), Cellule(1, 4), Cellule(1, 5), Cellule(1, 6), Cellule(1, 7), Cellule(1, 8), Cellule(1, 9), Cellule(1, 10))
                End If
            End If
        Next Cellule
        Feuille.Select
     
     
        For Each Legraph In ActiveSheet.ChartObjects
        Legraph.Delete
        Next
     
        If Not Plage Is Nothing And Plage1 Is Nothing Then
        UserForm2.Show
        End If
     
        If Not Plage1 Is Nothing And Plage Is Nothing Then
        GraphiqueBaton
        End If
     
        End Sub
    Je suis dead je n'y arrive pas

Discussions similaires

  1. Créer un tableau de fonctions avec des namespaces
    Par Aure7780 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/06/2012, 18h27
  2. Réponses: 5
    Dernier message: 16/06/2008, 14h34
  3. [AJAX] rafraichir un tableau en fonction d'un bouton radio
    Par mademoizel dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 05/03/2008, 10h32
  4. [mise à jour tableau en fonction du button radio]
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/12/2005, 11h41
  5. [C#] insertion tableau à l'aide d'un bouton
    Par liliprog dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/06/2005, 09h33

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