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 :

à propos de la fonction worksheet_change


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut à propos de la fonction worksheet_change
    Bonjour,
    j'ai une question à propos de la fonction worksheet_change.
    Mon besoin est le suivant : je souhaite écrire le titre d'un graphique croisé dynamique selon les filtres de l'utilisateur. A chaque nouvelle sélection, le titre est donc modifié.
    Comme il s'agit d'un tableau croisé dynamique, si je sélectionne plusieurs éléments, Excel m'affiche "Plusieurs éléments" mais le titre est toujours le même... Du coup, j'ai fait une macro qui détecte les champs visibles du tableau croisé dynamique.

    Toutes les fois que je modifie une valeur d'une cellule d'une feuille donnée, je souhaite lancer la procédure worksheet_change. Pour cela, dans la cellule C1, j'ai mis une formule alea.entre.borne et du coup (en mode automatique) dès que j'effectue un filtre sur un tableau croisé dynamique, la valeur de la cellule C1 change et la procédure est lancée. Mais mon algorithme marche moyen.

    Pour être honnête je n'ai pas bien compris comment changer la valeur de l'argument d'entrée de cette fonction. A chaque fois elle m'affiche "$A$1:$D$1" (voir la PJ exemple.jpg).

    Connaissez-vous svp un moyen pour dire "toutes les fois que la valeur d'une cellule change alors lance la procédure" ?

    voici mon code

    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim PT As PivotTable 'pointeur vers le TCD
    Dim p As PivotItem 'un item d'un champ du TCD
    Dim strGrandeurs As String 'liste des grandeurs selectionnees
    Dim strUsines As String 'liste des usines selectionnees
    Dim strPVT As String 'liste des PVT selectionnes
    Dim titreGCD As String 'titre du GCD
     
    Dim toto As String
    toto = Target.AddressLocal
     
    If (Target.AddressLocal = "$C$1") Then
        strGrandeurs = ""
        strUsines = ""
        strPVT = ""
        Set PT = ActiveSheet.PivotTables("TCD1")
     
        'recuperation des grandeurs selectionnees
        For Each p In PT.PivotFields("Grandeur").PivotItems
            If (p.Visible = True) Then strGrandeurs = IIf(strGrandeurs = "", p.Name, strGrandeurs & " + " & p.Name)
        Next p
     
        'recuperation des usines selectionnees
        For Each p In PT.PivotFields("Usine").PivotItems
            If (p.Visible = True) Then strUsines = IIf(strUsines = "", p.Name, strUsines & " + " & p.Name)
        Next p
     
        'recuperation des PVT selectionnes
        For Each p In PT.PivotFields("PVT").PivotItems
            If (p.Visible = True) Then strPVT = IIf(strPVT = "", p.Name, strPVT & " + " & p.Name)
        Next p
     
        'mise en place du titre sur le GCD
        titreGCD = ""
        If (strGrandeurs <> "") Then titreGCD = strGrandeurs
        If (strUsines <> "") Then titreGCD = IIf(titreGCD <> "", titreGCD & ", " & strUsines, strUsines)
        If (strPVT <> "") Then titreGCD = IIf(titreGCD <> "", titreGCD & ", " & strPVT, strPVT)
     
        ActiveSheet.ChartObjects("Graphique 1").Activate
        ActiveChart.SetElement (msoElementChartTitleCenteredOverlay)
        ActiveChart.ChartTitle.Text = titreGCD
    End If
     
    End Sub
    Merci beaucoup
    Images attachées Images attachées  

Discussions similaires

  1. A propos de la fonction GetTickCount
    Par kingspy dans le forum Windows
    Réponses: 5
    Dernier message: 23/06/2009, 15h21
  2. Question à propos d'une fonction
    Par 0ColdZero0 dans le forum C++
    Réponses: 4
    Dernier message: 22/04/2009, 00h47
  3. A propos de la fonction AlphaBetaWithMemory
    Par tsing dans le forum Intelligence artificielle
    Réponses: 4
    Dernier message: 15/04/2008, 15h05
  4. [FTP] Question à propos de la fonction copy()
    Par Mo_Poly dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2008, 11h36
  5. [VB][INFO] A propos de la fonction Round
    Par L.nico dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 10/03/2005, 11h59

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