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 :

Boite Memoire insuffisante [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien de laboratoire
    Inscrit en
    Décembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien de laboratoire

    Informations forums :
    Inscription : Décembre 2019
    Messages : 3
    Par défaut Boite Memoire insuffisante
    Bonjour,
    j'ai fait un dossier avec plusieurs feuilles pour collecter des commandes. La saisie et la modification des commandes se font via une boite de dialogues composée de 7 multipages avec 3x48 ou 4x48 Textbox. Une multipage par type d'articles et une pour les "Remarques" pour tous les articles.
    C'est la saisie des commandes qui pose problème. Le bouton "Commandes" lance une macro qui contient seulement commandeBoulangerie.Show.
    Le problème est apparu à l'addition de la septième sous XL2019. Quand je lance la commande la boite de dialogue "Commande" la boite "Mémoire insuffisante" apparait.
    Le débogueur bloque dans le module où se trouve commandeBoulangerie.Show.

    Par ailleurs quand j'ouvre VBA je n'ai accès au code de la boîte que si je supprime un onglet. Sinon la boite de dialogue "Mémoire insuffisante" apparait quand je clique sur un élément pour visualiser le code.
    Si je supprime l'avant-dernier onglet la commande se lance mais logiquement se bloque car elle ne trouve plus tous les éléments supprimés ; mais elle démarre.

    J'ai élaboré ce dossier sur un PC DELL sous XL2019 sur un autre PC Dell également sous XL2019 ça bloque, sur le PC de l'utilisateur final aussi. tous sous win10
    Par contre j'ai un vieux PC (2011) Fujitsu sous sous Win7 et XL2010 et là ça fonctionne.
    Je suppose que c'est lié aux nombre d'éléments à gérer et à certains paramètres de configuration du PC. Mais je ne maitrise pas les questions de gestion de mémoire.
    Si quelqu'un prend la peine de jeter un œil. Il est préférable d'ouvrir Excel ; d'ouvrir le fichier de le sauvegarder et seulement de cliquer sur commande.
    J'ai joint un fichier complété.
    Merci au moins de m'avoir lu
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour,

    pour être honnête je ne vais pas beaucoup vous aider sur votre projet car trop lourd !!! Et j'ai pas beaucoup de temps en ce moment !
    donc Juste quelques remarques :

    - alors c'est bien vous n’êtes pas fainéant... mais en programmation vaut mieux l’être un peu... faire des userforms avec autan de controls et les coder un par un c'est juste de la folie et limite du grand n'importe quoi !

    -Pour commencer il n'est pas nécessaire quand on à des onglets(tab) dans un userform de répéter la mème structure de contrôle sur chaque onglet en les multipliant !!!
    Par exemple dans le userform qui pose problème seul le premier et le dernier onglets sont differents.Pour les autres il fallait reprendre les mêmes controles et déterminer le besoin en fonction de
    l'onglet sélectionné ! Cela résoudrait le problème de mémoire !


    coté code, déja un code cela s'indente pour la lisibilité. Quand une partie de code se répété on créer une sub routine ou une fonction que l'on appelle à chaque besoin. Par exemple :

    je n'ai repris que les 2 premiers mais cela vaut pour les 46 suivants

    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
    Private Sub PainTr1_Change()
    If commandeBoulangerie.PainTr1.Value = False Then
    With commandeBoulangerie.NbrPainTr1
    .BackColor = &HFF&
    .Value = ""
    .Enabled = False
    .Locked = True
    End With
    Else
    With commandeBoulangerie.NbrPainTr1
    .BackColor = &H8000000F
    .Value = ActiveCell.Offset(0, 61).Value
    .Enabled = True
    .Locked = False
    End With
    End If
    End Sub
    Private Sub PainTr2_Change()
    If commandeBoulangerie.PainTr2.Value = False Then
    With commandeBoulangerie.NbrPainTr2
    .BackColor = &HFF&
    .Value = ""
    .Enabled = False
    .Locked = True
    End With
    Else
    With commandeBoulangerie.NbrPainTr2
    .BackColor = &H8000000F
    .Value = ActiveCell.Offset(0, 62).Value
    .Enabled = True
    .Locked = False
    End With
    End If
    End Sub
    Voila ce que cela donnerait avec une sub routine :
    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
    Private Sub PainTr1_Change()
        With Me 'me represente moi la userform commandeBoulangerie
            Call Changement_CheckBoxPain(.PainTr1.Value, .NbrPainTr1, 61)
        End With
    End Sub
    Private Sub PainTr2_Change()
        With Me 'me represente moi la userform commandeBoulangerie
            Call Changement_CheckBoxPain(.PainTr1.Value, .NbrPainTr1, 62)
        End With
    End Sub
    ' etc
    Private Sub Changement_CheckBoxPain(ByVal ValeurCheckBoxPain As Boolean, ByRef TextboxNbrPainTR As TextBox, ByVal Colonne As Long)
        With TextboxNbrPainTR
            If ValeurCheckBoxPain = False Then
                .BackColor = &HFF&
                .Value = ""
                .Enabled = False
                .Locked = True
            Else
                .BackColor = &H8000000F
                .Value = ActiveCell.Offset(0, Colonne).Value
                .Enabled = True
                .Locked = False
            End If
        End With
    End Sub
    mais cela reste du bricolage car avec autan de controls la mise en place d'une classe d’événement ferait plus sérieux !

    Pour en finir avec mes reproches : je ne comprend pas l’intérêt de reproduire des tableaux de saisie de valeurs dans une userform alors qu'un fichier excel est fait pour cela !!!
    Si tu veux faire Pro c'est loupé c'est juste du bricolage horrible... c'est tous sauf robuste

    Bon courage car les ennuis ne font que commencer !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien de laboratoire
    Inscrit en
    Décembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien de laboratoire

    Informations forums :
    Inscription : Décembre 2019
    Messages : 3
    Par défaut
    Bonjour,
    merci de vous être donner la peine de me répondre je vais tacher de tenir compte de vos remarques.
    Par contre mon but n'est pas d'être Pro j'ai appris l'utilisation sur le tas seul et avec l'aide de sites comme celui-ci à utiliser les macros pour diverses taches de mon travail. Et dans le cas présent pour aider une connaissance.
    Visiblement je n'ai pas ma place sur ce site et je ne vous encombrerai pas davantage.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour,

    j'ai peut être été un peu dur, désolé de t'avoir blessé mais note que cela n'a rien de personnel. Continu à venir, d'abord par ce que ce site n'est pas le mien et que le réduire à ma mauvaise appréciation serait dommage pour tout le monde et toi en premier. Tu en as et en aura besoin. Mise à par moi les autres aidants sont sympas compétent et miraculeusement disponible dans ce monde si individualiste.

    Donc profite de ce super site.

    Amicalement

    Philippe

  5. #5
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, Il m'est impossible de vous aider, étant sur Mac, j'ai à l'ouverture du dossier un message d'impossibilité d'automation? qui m'empèche d'essayer le fonctionnement du programme.
    Je comprend "l'effroi" de @PhilFree. Je pense que vous devriez reprendre tout le projet d'une manière plus structurée et séquentielle. Revoir tout l'architecture du travail.
    Désolé mais je ne vois pas d'autre solution.
    Bon courage
    Cordialement

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Technicien de laboratoire
    Inscrit en
    Décembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien de laboratoire

    Informations forums :
    Inscription : Décembre 2019
    Messages : 3
    Par défaut
    Bonjour,
    je reprends ci-dessous des extraits des réponses données.
    reprendre tout le projet d'une manière plus structurée et séquentielle

    "Par exemple dans le userform qui pose problème seul le premier et le dernier onglets sont differents.Pour les autres il fallait reprendre les mêmes controles et déterminer le besoin en fonction de
    l'onglet sélectionné ! Cela résoudrait le problème de mémoire
    "
    "la mise en place d'une classe d’événement ferait plus sérieux
    "reprendre tout le projet d'une manière plus structurée et séquentielle"

    Y aurait-il un site, ou un ouvrage qui pourrait m'aider à comprendre et à mettre en application ces conseils. J'ai cherché mais je n'ai rien trouvé à mon niveau. Si il n'y a rien à ma portée tant pis.
    Car en fin de compte l'ordinateur de l'utilisateur de mon "infâme bricolage" à accepter de le faire tourner il a fallu même deux fichiers car il y a plus de cents commandes.
    Je souhaitais juste rendre service et donc de ce point de vue j'ai atteint mon objectif.
    Mais si je pouvais faire quelque de plus propre ça pourrait être bien.
    Merci de m'avoir lu.

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

Discussions similaires

  1. Probleme VB6 et erreur 7 memoire insuffisante
    Par dubidon dans le forum Windows
    Réponses: 3
    Dernier message: 31/05/2006, 11h04
  2. [VB6] Erreur 7 memoire insuffisante ??
    Par dubidon dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 31/05/2006, 11h03
  3. [MFC/Automation Excel] memoire insuffisante
    Par hiko-seijuro dans le forum MFC
    Réponses: 3
    Dernier message: 30/03/2006, 17h55
  4. memoire insuffisante
    Par Coulomb dans le forum Sécurité
    Réponses: 5
    Dernier message: 02/11/2005, 13h36
  5. pbleme memoire insuffisante
    Par charlie2709 dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/05/2004, 08h33

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