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 :

Espace pile insuffisant sur macro simple


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Espace pile insuffisant sur macro simple
    Bonjour,

    Après plusieurs heures de recherche pour mon problème sans résultat, je me permets de poser la question ici. Je suis nouveau à VBA et donc pas très familier avec les objets et déclarations de variables...

    J'ai une liste déroulante en case B2, et en fonction du choix dans cette liste, j'aimerais éxécuter des macros différentes. Le code fonctionne mais retourne "erreur 28: espace pile insuffisant"

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    If [B2] = "A" Then ChangeChartScale1
    If [B2] = "B" Then ChangeChartScale1
    If [B2] = "C" Then ChangeChartScale1
    If [B2] = "D" Then ChangeChartScale1
    If [B2] = "E" Then ChangeChartScale1
    If [B2] = "F" Then ChangeChartScale1
    If [B2] = "G" Then ChangeChartScale1
    If [B2] = "H" Then ChangeChartScale1
    If [B2] = "I" Then ChangeChartScale2
    If [B2] = "J" Then ChangeChartScale2
    If [B2] = "K" Then ChangeChartScale2
    If [B2] = "L" Then ChangeChartScale2
    If [B2] = "M" Then ChangeChartScale2
    If [B2] = "N" Then ChangeChartScale2
    If [B2] = "O" Then ChangeChartScale2
    If [B2] = "P" Then ChangeChartScale2
    If [B2] = "Q" Then ChangeChartScale2
    If [B2] = "R" Then ChangeChartScale2
    If [B2] = "S" Then ChangeChartScale2
     
    End Sub
    Merci de votre aide!

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour, bonjour !

    Certainement un mauvais code gérant mal les ressources …



    ______________________________________________________________________________________________________
    Je suis Paris, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Oui je me doute qu'il s'agit d'un mauvais code et d'un problème de mémoire.

    Les macros ChangeChartScale change simplement l'échelle des abcisses de mon graph. J'imaginais que ce serait évident pour les experts vu la simplicité du code.

    Merci quand même

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant gestion projet
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant gestion projet

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Points : 57
    Points
    57
    Par défaut
    Essai avec un select case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Select Case [B2].Value
     
        Case "A", "B", "C", "D", "E", "F", "G", "H"
            ChangeChartScale1
     
        Case "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S"
            ChangeChartScale2
     
    End Select

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour Whitefang et merci.
    J'ai essayé avec ce code que tu m'as donné, malheureusement toujours erreur 28: espace pile insuffisant

    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
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Select Case [B2].Value
     
        Case "A", "B", "C", "D", "E", "F", "G", "H"
            ChangeChartScale1
     
        Case "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S"
            ChangeChartScale2
     
    End Select
     
    End Sub

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant gestion projet
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant gestion projet

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Points : 57
    Points
    57
    Par défaut
    As-tu essayé de redemander ton ordinateur ?

    Et concernant la fonction ChangeChartScale1, c'est quoi la code ?

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Si ce n'est le code que tu ne daignes dévoiler, peut-être est-ce une feuille de calculs endommagée (ou le classeur) …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Il s'agit, soit :

    > d'un mauvais code gérant mal les ressources
    Mais pour vous aider, il faudrait les codes des procédures ChangeChartScale1 et ChangeChartScale2

    > soit d'un excès de lancement de ces procédures.
    En effet, selon ton code événementiel Worksheet_Change, tu lances l'une des deux procédures systématiquement, à chaque changement de valeur d'une cellule de ta feuille.
    Essaye déjà d'ajouter, en début de procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Address <> "$B$2" Then Exit Sub
    Ainsi la procédure liée au code événementiel ne se déclenchera qu'en cas de changement de la seule cellule B2.

    Après que ce soit un Select Case uo un If ne change que peu la donne. Select Case est plus élégant dans ce cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$B$2" Then Exit Sub
    Select Case [B2].Value
         Case "A", "B", "C", "D", "E", "F", "G", "H"
            ChangeChartScale1
         Case "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S"
            ChangeChartScale2
    End Select
    End Sub
    Cordialement,
    Franck

  9. #9
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Voici le reste du code: (il n'y a rien de confidentiel )

    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
     
    Sub ChangeChartScale1()
     
    Dim cht As Chart
     
    ' unprotect/protect needed to change chart scale
    ActiveSheet.Unprotect Password:="abcd"
     
    Set cht = ActiveSheet.ChartObjects("Chart 1").Chart
     
    'Adjust x-axis Scale to be: 40 to 100 Hz
      cht.Axes(xlCategory).MinimumScale = 40
      cht.Axes(xlCategory).MaximumScale = 100
     
    Range("D7") = "40Hz - 100Hz"
    'change attenuation band to 40-100Hz
     
    ActiveSheet.Protect Password:="abcd"
     
    End Sub

  10. #10
    Candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    C'est résolu. L'ajout de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Address <> "$B$2" Then Exit Sub
    a suffit a résoudre le problème.

    Merci pijaku et merci à tous.

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

Discussions similaires

  1. Espace pile insuffisant sur Excel 2007 mais pas sur Excel 2010
    Par caje17 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2014, 19h37
  2. [XL-2000] VBA Erreur 1004 espace pile insuffisant
    Par L'Albatros dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 17/07/2013, 13h34
  3. Espace libre insuffisant sur le volume disque C:/
    Par luckyluc. dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/04/2010, 16h52
  4. espace pile insuffisant
    Par Maxence45 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 18/11/2007, 03h55
  5. [VB6] Espace de pile insuffisant
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 05/04/2004, 15h26

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