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 :

Plage dynamique VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 9
    Par défaut Plage dynamique VBA
    Bonjour,

    Ca fait quelques jours que je cherche la solution à mon problème et j'espère la trouver sur ce forum grâce à votre aide.

    On travaille avec un fichier de reporting ancien et j'essaie de l'améliorer. En effet, le fichier est alimenté chaque semaine par des nouvelles données venues d'un autre fichier. Ces données sont stockées dans les tableaux de l'onglet "Evolution" et alimentent à leur tour les graphes dynamiques pour n'afficher finalement que les données des 11 dernières semaines grâce aux boutons "Décaler S+1" et "Décaler S-1".

    De ma part, j'ai rajouté un nouvel onglet que j'ai nommé "Zero Trafic" et je veux faire la même chose avec les données de cet onglet (graphe qui se met à jour chaque semaine), sachant que les données venues de l'autre fichier contient la matière brut pour alimenter cet onglet et c'est pas ça le problème. Mon problème c'est que j'ai essayé des créer un plage dynamique dans cet onglet avec Excel avec les fonctione Décaler et NBVAL sans passer par le VBA, mais la tache s'avère compliquée car à chaque fois que je nomme une plage sur cet onglet et je finis le travail, quand je clique sur le bouton "Décaler S+1", un message d'erreur s'affiche "La méthode Select de la classe Range a échoué". J'ai beau cherché mais jusqu'à l'heure je n'ai pas trouvé de solution. Finalement je me demande si c'est pas possible d'utiliser les macro DecalerPlageBAS et DecalerPlageHAUT et les adapter aux données de mon nouvel onglet mais je ne sais pas comment faire car j'ai pas compris le code de ces macros.

    L'onglet "Zero trafic" est vide vu que les données sont confidentielles mais elles sont du format que les autres données à savoir les semaines sur les abscisses et les pourcentages sur les ordonnées.

    Pourriez-vous SVP me filer un coup de main pour résoudre ce problème?


    Cdt;
    Fichiers attachés Fichiers attachés

  2. #2
    Membre habitué
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 9
    Par défaut
    Je vous joints un fichier contenant un échantillon de données dans l'onglet "Zero Trafic". Pour rappel l'idée c'est de créer un graphe qui n'affiche que les 11 dernière semaines et qui se décale avec les bouton "Décaler S+1" et "Décaler S-1".

    Merci pour votre assistance.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 9
    Par défaut
    Personne pour l"'aide ?

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Si tu avais lu les règles du forum, tu saurais que beaucoup de participants se refusent à ouvrir les fichiers joints, surtout s'ils peuvent contenir des macros.
    https://www.developpez.net/forums/d8...s-discussions/
    Et tes explications ne permettent pas de comprendre ton problème sans ouvrir ton fichier. Ca limite donc les chances de réponse.

    Tu devrais plutôt revoir ta demande en y incorporant le code qui pose problème, une copie d'écran des données, la ligne de code signalée par le débugeur quand l'exécution plante et toutes autres informations qui peuvent te sembler utiles à la résolution de ton problème.

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juin 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 9
    Par défaut
    En gros je veux créer un graphe qui se mettent à jour chaque semaine après avoir cliquer sur le bouton "Décaler S+1" affecté à la macro ci-dessous:

    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
    Sub DecalerPlageBAS()
     
    'Dim Plage As Range
    Dim Nm As Name
     
    Application.ScreenUpdating = False
     
    'On Error Resume Next
     
    'Sheets.Add After:=ActiveSheet
    'Range("A1").Select
     
    'Boucle sur les noms du classeur
    For Each Nm In ThisWorkbook.Names
        If Nm <> "=#NAME?" Then
            NOMPLAGE = Nm.Name
            Range(Nm).Select
            premierecellule = ActiveCell.Offset(Selection.Columns.Count - 1).Address
            dernierecellule = ActiveCell.Offset(Selection.Rows.Count - 1).Address
     
     
            premierecelluleV2 = Range(premierecellule).Offset(1, 0).Address
            dernierecelluleV2 = Range(dernierecellule).Offset(1, 0).Address
     
     
            'définition de ma plage
            MaPlage = premierecelluleV2 & ":" & dernierecelluleV2
     
            'Modification de la plage
            With ActiveWorkbook.Names(NOMPLAGE)
                    .Name = NOMPLAGE
                    .RefersTo = "=Evolution!" & MaPlage
            End With
     
           ' ActiveCell = Nm
            'ActiveCell.Offset(1, 0).Select
        End If
    Next Nm
     
    Range("A1").Select
    ActiveSheet.Calculate
     
     
    End Sub
    Le graphe doit afficher uniquement les données des onze dernières semaines d'où l'utilité de la plage dynamique.

    Y a aussi un bouton "Décaler S-1" qui fait un retour en arrière et voici la macro:



    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
    Sub DecalerPlageHAUT()
     
    'Dim Plage As Range
    Dim Nm As Name
     
     
    Application.ScreenUpdating = False
     
    'On Error Resume Next
     
    'Sheets.Add After:=ActiveSheet
    'Range("A1").Select
     
    'Boucle sur les noms du classeur
    For Each Nm In ThisWorkbook.Names
        If Nm <> "=#NAME?" Then
            NOMPLAGE = Nm.Name
            Range(Nm).Select
            premierecellule = ActiveCell.Offset(Selection.Columns.Count - 1).Address
            dernierecellule = ActiveCell.Offset(Selection.Rows.Count - 1).Address
     
     
            premierecelluleV2 = Range(premierecellule).Offset(-1, 0).Address
            dernierecelluleV2 = Range(dernierecellule).Offset(-1, 0).Address
     
     
            'définition de ma plage
            MaPlage = premierecelluleV2 & ":" & dernierecelluleV2
     
            'Modification de la plage
            With ActiveWorkbook.Names(NOMPLAGE)
                    .Name = NOMPLAGE
                    .RefersTo = "=Evolution!" & MaPlage
            End With
     
           ' ActiveCell = Nm
            'ActiveCell.Offset(1, 0).Select
        End If
    Next Nm
     
    Range("A1").Select
    ActiveSheet.Calculate
     
    End Sub

    Et dans la pièce jointe vous trouverez un échantillon de données qui je veux transformer en graphe.

    Merci
    Images attachées Images attachées  

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 121
    Par défaut
    Salut

    [Edit]
    Je me suis peut-être enflammer un peu
    Bon je ne suis pas très doué avec les TCD mais le fait d'avoir plusieurs semaines en tri à partir des dates...
    [/Edit]

    Avant de passer par VBA, pourquoi ne pas utiliser des Graphiques liés à des TCD? En utilisant Année et semaine en filtre ça permettrait de trier tes données, les graphiques liés au TCD se mettraient alors à jour.
    Par la suite très peu de code serait probablement nécessaire pour modifier l'année et le mois dans les filtres du TCD.

    Je n'ai pas plus étudier le truc que ça mais du coup avec les TCD, tes tableaux intermédiaires remplis de formule ne seraient probablement plus utiles, tu pourrais aller chercher tes info pour nourrir les TCD directement dans l'onglet Global.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. [XL-2007] Nommer une plage dynamique en VBA
    Par banane87 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 13/05/2013, 17h37
  2. Max d'une plage en VBA
    Par CHRISTOPHE_86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/08/2008, 16h56
  3. Somme sur une feuille et plage Dynamique
    Par Gerard6969 dans le forum Excel
    Réponses: 3
    Dernier message: 08/08/2007, 14h47
  4. [VBA-E] Plage dynamique
    Par Aizen64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2007, 16h14
  5. [VBA-E] somme d'une plage dynamique
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/11/2005, 21h58

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