Message d'erreur VBA "Mémoire insuffisante..."

Bonjour à tous,

Problème sur VBA : lors de l'éxécution d'une macro, un message d'erreur apparait :

" Mémoire insuffisante pour afficher en entier".

J'ai testé application.displayalerts = false mais rien n'a y faire ...

Voici la macro en question, merci de vos réponses !

Florent.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Vous ne pouvez pas utiliser ce bouton de fermeture." & Chr(10) _
& "Pour fermer cette boîte de dialogue, veuillez utiliser le bouton Annuler"
Cancel = True
End If
End Sub

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If ComboBox1.Value = "" Then
MsgBox "Veuillez sélectionner une catégorie de produits", vbExclamation, "Choix de la catégorie"
End If
If TextBox2.Value = "" Then
MsgBox "Veuillez saisir une désignation de produit", vbExclamation, "Saisie de la désignation"
End If
If TextBox3.Value = "" Then
MsgBox "Veuillez saisir le poids unitaire de la palette", vbExclamation, "Saisie du poids"
End If
If TextBox4.Value = "" Then
MsgBox "Veuillez saisir le prix unitaire de la palette", vbExclamation, "Saisie du prix"
End If
If ComboBox2.Value = "" Then
MsgBox "Veuillez sélectionner votre ville d'expédition 1", vbExclamation, "Choix de la ville d'expédition 1"
End If
If ComboBox3.Value = "" Then
MsgBox "Veuillez sélectionner votre ville d'expédition 2", vbExclamation, "Choix de la ville d'expédition 2"
Else

' tri successif : par catégorie produit et ensuite par désignation produit

    Columns("B:G").Select
    ActiveWorkbook.Worksheets("produits").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("produits").Sort.SortFields.Add Key:=Range("C2:C46" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("produits").Sort.SortFields.Add Key:=Range("B2:B46" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("produits").Sort
        .SetRange Range("B1:G46")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWindow.SmallScroll Down:=-9

ActiveSheet.Protect Password:="dugol"
Unload nouveau_produit
Sheets("produits").Select
End If
End Sub

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Rows("10:10").Select
    Selection.Delete Shift:=xlUp
Unload nouveau_produit
Sheets("produits").Select
Range("H7").Select
ActiveSheet.Protect Password:="dugol"
End Sub

bonjour Florent b le forum

tu ne peux pas nous passer ton fichier sans données confidentielles là on pourrait t'aider et trouver ton souci

a+

papou

Bonjour,

le voici :

le mot de passe est "dugol".

Cliquez sur le bouton "Produits", "Ajouter un nouveau produit", "Annuler"

Merci !

Bonjour Florent B le forum

Bon alors avec le fichier c'est meiux mais maintenant si tu nous expliquais comment tu fais pour avoir ton dépassement de capacité car moi j'ai fait des tests et quand je rempli les 5 paramètres j'ai bien trois propositions sans défauts

alors des explications de ta manière de faire pour que l'on puisse reproduire le problème

a+

papou

Bonjour,

Je pense que tu as cliquer sur le bouton "Passation de commande".

Pour visualiser le problème, il faut que tu cliques sur le bouton "Produits" sur la page d'accueil, ensuite "Ajouter un nouveau produit" :

tu remplis les combo + textbox et tu cliques sur le bouton "Valider" : c'est là que le problème apparait ...

Merci Papou

Bonjour Florent B le forum

Bon alors avec le mode d'emploi c'est plus simple, j'ai fait et toujours pas d'erreur cela marche et pas sur une fois mais 15 fois de suite

C'est un fichier pour jouer ou pour travailler ??? Tu as des infos, presque rien, et 90% de ton fichier c'est des photos !!!!! ????

enfin bref cela c'est pour te dire ce que j'en pense mais pour le défaut là moi pas trouvé

et j'ai respecté nouveaux produits ajouter un produit et j'ai testé aussi la suppression enfin je ne comprend pas pourquoi cela ne marche pas chez toi

a+

Papou

Bonjour,

Bon déjà un peu de calme, on est pas la pour juger, chacun construit ses fichiers comme il le sent (même si sur certains écrans, j'avoue que des fois la lisibilité n'est pas terrible avec du texte par dessus l'image de fond).

Sinon effectivement je viens de tester rapidement, j'ai bien le même message d'erreur à l'endroit que tu indiques.

@Paritec il ne faut pas ajouter le nouveau produit ou le supprimer, lis bien les conditions qu'il a donné pour que cela se produise avant de l'enguirlander

tu vas dans "Produits", tu clicks sur "Ajouter un nouveau produit", et la tu ne remplis rien, et tu ne l'ajoutes pas, mais tu fais "Annuler" sur le bouton en bas à gauche de l'userform et tu auras le message.

@Florent

Sinon 2/3 autres trucs :

sur ton onglet produit, le filtre ne fonctionne pas, car la feuille est protégée et tu ne la déprotège pas le temps de faire le filtre donc message d'erreur.

j'ai vu plusieurs fois dans ton code des :

Application.ScreenUpdating = False

C'est bien de désactiver des trucs, mais c'est aussi bien de les réactiver en fin de traitement avec un :

Application.ScreenUpdating = True

etc etc, enfin bon, la je finis le boulot donc pas trop le temps de regarder, je reviendrais voir lundi si j'ai pas tro pde boulot si quelqu'un a pu t'aider ou non.

Cordialement,

Bonjour,

J'ai pas encore examiner ton code, mais la première sub que je vois..

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Vous ne pouvez pas utiliser ce bouton de fermeture." & Chr(10) _
& "Pour fermer cette boîte de dialogue, veuillez utiliser le bouton Annuler"
Cancel = True
End If
End Sub

Pourrait être supprimée et remplacée par...

Dans l'entête de l'UF

'pour enlever la croix rouge d'un UF
 Declare Function GetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

 Declare Function SetWindowLongA Lib "user32" _
(ByVal hwnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

 Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Et dans l'initialisation du UF

Private Sub UserForm_Initialize()
Dim hwnd As Long
    hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") _
    & "Frame", Me.Caption)
    SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF
End Sub

Ce qui ne laisse pas le choix à l'utilisateur de cliquer sur la croix rouge.

Je regarde ton code un peu plus loin.

A+

EDIT : pour info,

quand ont met,

Application.ScreenUpdating = False

Dans une procédure, cette fonction est automatiquement remise à True quand ont quitte la procédure. Donc pas nécessaire de la remettre à True.

Re,

J'ai suivi les instructions que tu donne et je n'ai rien qui se plante ??

Et s'il est vrai que le fichier est un peu "lourd" à télécharger tu fait preuve de beaucoup d'imagination pour la présentation de ton appli. Bravo.

Une critique ?, la police sur les boutons n'est pas très lisible. (J'ai du mettre une deuxième paire de lunette)

A+

Critique 2 : ?

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If ComboBox1.Value = "" Then
MsgBox "Veuillez sélectionner une catégorie de produits", vbExclamation, "Choix de la catégorie"

ElseIf TextBox2.Value = "" Then
MsgBox "Veuillez saisir une désignation de produit", vbExclamation, "Saisie de la désignation"

ElseIf TextBox3.Value = "" Then
MsgBox "Veuillez saisir le poids unitaire de la palette", vbExclamation, "Saisie du poids"

ElseIf TextBox4.Value = "" Then
MsgBox "Veuillez saisir le prix unitaire de la palette", vbExclamation, "Saisie du prix"

ElseIf ComboBox2.Value = "" Then
MsgBox "Veuillez sélectionner votre ville d'expédition 1", vbExclamation, "Choix de la ville d'expédition 1"

ElseIf ComboBox3.Value = "" Then
MsgBox "Veuillez sélectionner votre ville d'expédition 2", vbExclamation, "Choix de la ville d'expédition 2"
Else
'........ suite du code

Dés qu'il y a un manque de donnée, inutile de continuer à "casser les pieds" de l'utilisateur avec la suite à remplir.

Un à la fois suffira amplement.

Bonsoir à Tous,

J'ai trouvé le problème mais je vais laissé Zirak chercher un peu et te trouver la réponse, car manifestement lui à une pédagogie beaucoup plus aboutie!!

bonne soirée

Papou

Ne prends pas mal ce que j'ai dit papou, ce n'est pas une question de pédagogie, mais nous sommes là pour aider les gens à progresser et progresser nous-mêmes (enfin moi oui pour ma part), et pas pour porter un jugement sur la forme, comme on dit, les goûts et les couleurs....

Mais si tu as trouver la raison du problème, autant lui partager ta découverte, ça ne sert à rien de le laisser attendre pour un commentaire extérieur

Cordialement,

Bonjour Tous,

Bon alors je ne dirai pas ce que je pense du fichier puisque c'est interdit, mais pourrais-je tout de même porter un jugement sur les macros qui truffent le fichier?

Bon en attendant l'autorisation ou non ( ce serait mieux pour qu'il comprenne ces multiples erreurs), je vous joins le fichier modifié

bonne journée

Papou

PS: le lien du fichier 6,41 MO avec rien dedans !!!!!!

Re,

J'ai eu du mal pour trouver l'erreur qui en fait n'en est pas une. Il m'a été impossible d'avoir l'erreur de la façon que tu dis, je l'ai finalement eu en visualisant l'UF en mode IDE.

Il y a un conflit avec les RowSource de tes Combo.

Pour y remédier, supprimer les RowSource et initialiser les Combo dans Initialize de l'UF.

J'ai tout retester et je n'ai plus cette erreur.

Mais comme le fait justement remarquer Zirak, tu oublie de déprotéger la feuille avant de lancer les filtres. (Bouton filtre)

A+

Re,

Désolé, je n'ai pas vu qu'il y avait deux pages . Finalement nous en somme arrivés à la même conclusion.

A+

Rechercher des sujets similaires à "message erreur vba memoire insuffisante"