Message erreur: "Memoire insuffisante..."

Luminou

XLDnaute Junior
Edit: Bien le bonjour a tous chère excel downloader,

Voila j'ai ce message: Memoire insuffisante pour afficher en entier.

Il ne me semble pas avoir fait d'erreur dans mon programme, pourrier vous me dire d'ou cela peut bien venir en général?

Merci
 
Dernière édition:

fifi

XLDnaute Occasionnel
Re : Message erreur: "Memoire insuffisante..."

bonsoir le fofo
j'ai le même problème avec mon classeur et j'ai remarqué que l'erreur arrive pour ma part uniquement au bout d'un certains temps d'utilisation (appels de X fois la même macro)
j'aurai donc pensé à une saturation d'"une mémoire attribuée" aux variables ou autre chose dans le genre

j'ai essayer de placer un ou 2 end dans mes macros mais le pb subsiste.


bon courage ...je suis la conversation avec attention.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Message erreur: "Memoire insuffisante..."

Re,

Je reste sur mon idée, si la boucle boucle indéfiniment car mal gérée, ce que je soupçonne ici, que ce soit par un If, un Do...., With... etc... le Pc va tousser c'est sûr.

Donc, il faut voir le fichier, ou au moins un minimum de travail, et le code complet.

A suivre.

Jean-Pierre
 

Luminou

XLDnaute Junior
Re : Message erreur: "Memoire insuffisante..."

Tu peux avoir mon fichier en entier Jean Pierre. Rien de plus simple, j'ai mis le code dans une balise code d'un de mes premier commentaire.
La partie excel est en téléchargement un peu plus bas sous le nom Luminou.rar.
Tu copie colle et le tour est joué.

Oui Excel plante quand il me donne le message.

Mes deux classeur sont en Arial hauteur 10 depuis le début. Bizzard tout sa quand meme.


Merci pour votre aide.
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Message erreur: "Memoire insuffisante..."

Bonjour

Je rencontre aussi parfois ce problème sur un programme qui tourne parfaitement sur plusieurs environnements différents.

En farfouillant sur le WEB j'ai trouvé plusieurs hypothèses :

  • trop de mises en forme différentes
  • Editeur VBA ouvert
  • affichage ou non des onglets
Dans mon cas cela n'apparait que si j'ai effectivement l'éditeur VBA ouvert et un userform au moins dans mon classeur.

Donc la raison n'est pas claire et je crois que c'est plus lié à la gestion du userform par Excel : j'ai remarqué que l'éditeur VBA a tendance à se repositionner sur la feuille userform en fin d'exécution normales de certaines sub.
En écrivant ce message je me demande si ce ne serait pas du à une boucle qui passe en revue toutes les sheets : il manque peut-être la différenciation entre sheet et worksheet.
Dans la mesure où cela est aléatoire dans mon cas, pas facile de tracer...

edit PS : j'ai vérifié, c'est bien Worksheets qui est utilisé dans mon code donc fausse piste.
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Message erreur: "Memoire insuffisante..."

Re
Je ne comprend pas ce que tu veux dire par mise en forme.
Meme quand mon editeur vba est fermé il y a le meme probleme.
Peux tu me dire comment on fait pour ne pas afficher les onglets?
Mise en forme : les mises en forme appliquées aux cellules : plus on différencie individuellement les cellules (largeur, hauteur, couleur, etc, fusion), plus on sature la table des mises en forme du classeur.
C'est ce qu'un des posts évoquait à propos des polices.
On peut nettoyer un peu

  • en supprimant les colonnes et lignes non utilisées de chaque onglet : elles se recréent sans mise en forme particulière
  • en enlevant les mises en formes inutiles et en essayant d'appliquer celles qui sont nécessaires par grands blocs et non par petites plages ou cellules
Pour les onglets c'est dans outils options affichage mais je ne sais pas si ce change vraiment grand chose.
Question utilises-tu un userform dans ton code ?
 

Luminou

XLDnaute Junior
Re : Message erreur: "Memoire insuffisante..."

Re,

Non non pas d'user form, juste 22 label, 2 combobox, 2 bouton, il n'y plus aucune mise en forme dans aucun classeur.

Je ne comprend pas le pire c'est que j'ai déveloper ce prog, et tout le long je n'ai pas eu se problem il est apparu d'un coup, boum.

Je suis comme qui dirait au pied du mure.
 
G

Guest

Guest
Re : Message erreur: "Memoire insuffisante..."

Bonjour Luminou,

Comment sont gérés les 22 labels, les 2 combobox et les deux boutons.
Peut-être y a t-il des appels d'évènements en cascades qui saturent la mémoire, évènements Worksheet_Change(ByVal Target As Range) notament?

A+
 

TheLio

XLDnaute Accro
Re : Message erreur: "Memoire insuffisante..."

Bonjour, le forum, le fil, et les autres...
Si je puis ajouter mon grain de sel :)
Les applications office ont beaucoup de peine depuis l'arrivée du SP3, même word...
Et je confirme que beaucoup d'applications plantes quand l'éditeur VBA est ouvert
A++
Lio (qui suit le fil car intéressant)
 

Luminou

XLDnaute Junior
Re : Message erreur: "Memoire insuffisante..."

Re,

Voici mon code chere amis:

Code:
Private Sub ComboBoxDN_DropButtonClick()
miseajourDN
End Sub

Private Sub ComboBoxDN_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode & Shift = "90" Or KeyCode & Shift = "130" Then
miseajourDN
End If
End Sub

Private Sub miseajourDN()
Dim i As Byte
i = correspondanceDN()
ComboBoxIX.Value = Worksheets("Feuil2").Range("D" & i).Text
formatview (i)
'miseajourtol (i)

End Sub
Private Sub ComboBoxIX_DropButtonClick()
miseajourIX
End Sub
Private Sub ComboBoxIX_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode & Shift = "90" Or KeyCode & Shift = "130" Then
miseajourIX
End If
End Sub
Private Sub miseajourIX()
Dim IX As Double
Dim i As Double
IX = CDbl(Replace(ComboBoxIX.Value, "IX", ""))
i = correspondanceIX(IX)
ComboBoxDN.Value = Worksheets("Feuil2").Range("C" & i).Text
formatview (i)
'miseajourtol (i)

End Sub

Private Sub ToggleButtonDN_Click() 'bouton diametre de passage
    ComboBoxDN.Enabled = ToggleButtonDN
    ToggleButtonIX = Not ToggleButtonDN
    If ComboBoxDN.Enabled = True Then surbrillance ("DN")
    If ComboBoxIX.Enabled = True Then surbrillance ("IX")
End Sub
Private Sub ToggleButtonIX_Click()
    ComboBoxIX.Enabled = ToggleButtonIX
    ToggleButtonDN = Not ToggleButtonIX
    If ComboBoxIX.Enabled = True Then surbrillance ("IX")
    If ComboBoxDN.Enabled = True Then surbrillance ("DN")
End Sub
Function correspondanceDN() As Double
    Dim table() As Variant, i As Double, j As Double, DN As Variant
       
    j = 0
    DN = Replace(Replace(ComboBoxDN.Value, " ", ""), "IN", "")
    If DN = "0.5" Or DN = "0,5" Then DN = "1/2": ComboBoxDN.Value = "1/2"
    If DN = "0.75" Or DN = "0,75" Then DN = "3/4": ComboBoxDN.Value = "3/4"
    If DN = "1.5" Or DN = "1,5" Then DN = "1 1/2": ComboBoxDN.Value = "1 1/2"
    If DN = "11/2" Then DN = "1 1/2": ComboBoxDN.Value = "1 1/2"
    table = Array("1/2", "3/4", "1", "1 1/2", "2", "2.5", "3", "4", "5", "6", "8", "10", "12", "14", "16", "18", "20", "22", "24", "26", "28", "30", "32", "34", "36", "38", "40", "42", "44", "46", "48")
    For i = LBound(table) To UBound(table)
        If DN = table(i) Then j = 14 + i: Exit For
    Next i
    correspondanceDN = j
End Function
Function correspondanceIX(IX As Double) As Double
    Dim table() As Double, i As Double, j As Double
    j = 0
    table = Array(15, 20, 25, 40, 50, 65, 80, 100, 125, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200)
    For i = LBound(table) To UBound(table)
        If IX = table(i) Then j = 14 + i: Exit For
    Next i
    correspondanceIX = j
End Function

Sub surbrillance(arg)
ActiveSheet.OLEObjects("ComboBox" & arg).Activate
ActiveSheet.OLEObjects("ComboBox" & arg).Object.SelStart = 0
ActiveSheet.OLEObjects("ComboBox" & arg).Object.SelLength = Len(ActiveSheet.OLEObjects("ComboBox" & arg).Object.Value)
End Sub

Private Sub formatview(i)
With Worksheets("Feuil2")
LabelHG4.Caption = .Range("P" & i).Text
LabelHG3.Caption = .Range("O" & i).Text
LabelHG2.Caption = .Range("N" & i).Text
LabelDG1.Caption = "Ø" & .Range("E" & i).Text
LabelDG8.Caption = "Ø" & .Range("L" & i).Text
LabelDG5.Caption = "Ø" & .Range("I" & i).Text
LabelDG6.Caption = "Ø" & .Range("J" & i).Text
LabelHG1.Caption = .Range("M" & i).Text
LabelDG2.Caption = "Ø" & .Range("F" & i).Text
LabelDG3.Caption = "Ø" & .Range("G" & i).Text
LabelDG4.Caption = "Ø" & .Range("H" & i).Text
LabelHG5.Caption = .Range("Q" & i).Text
LabelDG7.Caption = "Ø" & .Range("K" & i).Text
End With
End Sub
Private Sub miseajourtol(i As Double)
Dim IX As Double
If i = 100 Then Exit Sub
IX = CSng(Replace(Worksheets("Feuil2").Range("D" & i), "IX", ""))
If IX <= 80 Then
    LabelTolDG1.Caption = "±0.2"
ElseIf IX <= 350 Then
    LabelTolDG1.Caption = "±0.3"
Else: LabelTolDG1.Caption = "±0.4"
End If

If IX <= 80 Then
    LabelTolDG5.Caption = "±0.1"
ElseIf IX <= 350 Then
    LabelTolDG5.Caption = "±0.2"
Else: LabelTolDG5.Caption = "±0.4"
End If

If IX <= 150 Then
    LabelTolDG6Max.Caption = "+0.1"
    LabelTolDG6Min.Caption = "-0"
Else:   LabelTolDG6Max.Caption = "+0.2"
        LabelTolDG6Min.Caption = "-0"
End If

If IX <= 150 Then
    LabelTolDG7Max.Caption = "+0.1"
    LabelTolDG7Min.Caption = "-0"
Else:   LabelTolDG7Max.Caption = "+0.2"
        LabelTolDG7Min.Caption = "-0"
End If

If IX <= 40 Then
    LabelTolHG3.Caption = "±0.05"
ElseIf IX <= 200 Then
    LabelTolHG3.Caption = "±0.1"
ElseIf IX <= 400 Then
    LabelTolHG3.Caption = "±0.2"
ElseIf IX <= 600 Then
    LabelTolHG3.Caption = "±0.3"
ElseIf IX <= 800 Then
    LabelTolHG3.Caption = "±0.4"
ElseIf IX <= 1000 Then
    LabelTolHG3.Caption = "±0.5"
Else: LabelTolHG3.Caption = "±0.6"
End If

If IX <= 150 Then
    LabelTolHG5Max.Caption = "+0"
    LabelTolHG5Min.Caption = "-0.1"
ElseIf IX <= 350 Then
    LabelTolHG5Max.Caption = "+0"
    LabelTolHG5Min.Caption = "-0.2"
ElseIf IX <= 550 Then
    LabelTolHG5Max.Caption = "+0"
    LabelTolHG5Min.Caption = "-0.3"
ElseIf IX <= 700 Then
    LabelTolHG5Max.Caption = "+0"
    LabelTolHG5Min.Caption = "-0.4"
ElseIf IX <= 900 Then
    LabelTolHG5Max.Caption = "+0"
    LabelTolHG5Min.Caption = "-0.5"
ElseIf IX <= 1100 Then
    LabelTolHG5Max.Caption = "+0"
    LabelTolHG5Min.Caption = "-0.6"
Else:   LabelTolHG5Max.Caption = "+0"
        LabelTolHG5Min.Caption = "-0.7"
End If

End Sub

Private Sub ecrituretabinventor(i)
Dim a As Integer
If i = 100 Then Exit Sub
With Worksheets("Feuil2")
For a = 1 To 19
     .Range("T" & a) = .Cells(13, a)
     .Range("U" & a) = .Cells(i, a)
Next a

 .Range("U" & 20) = LabelTolDG1.Caption
 .Range("U" & 21) = LabelTolDG5.Caption
 .Range("U" & 22) = Replace(LabelDG6.Caption, "Ø", "")
 .Range("U" & 23) = LabelTolDG6Min.Caption
 .Range("U" & 24) = LabelTolDG6Max.Caption
 .Range("U" & 26) = Replace(.Range("U" & 24), "+", "") / 2
 .Range("U" & 25) = CDbl(Replace(Replace(LabelDG6.Caption, "Ø", ""), ".", ",")) + _
                                        CDbl(.Range("U" & 26))
 .Range("U" & 27) = Replace(LabelDG7.Caption, "Ø", "")
 .Range("U" & 28) = LabelTolDG7Min.Caption
 .Range("U" & 29) = LabelTolDG7Max.Caption
 .Range("U" & 31) = CDbl(Replace(LabelTolDG7Max.Caption, "+", "")) / 2
 .Range("U" & 30) = CDbl(Replace(Replace(LabelDG7.Caption, "Ø", ""), ".", ",")) + CDbl(.Range("U" & 31))
 .Range("U" & 32) = LabelTolHG3.Caption
 .Range("U" & 33) = LabelHG5.Caption
 .Range("U" & 34) = LabelTolHG5Min.Caption
 .Range("U" & 35) = LabelTolHG5Max.Caption
 .Range("U" & 37) = -CDbl(Replace(LabelTolHG5Min.Caption, ".", ",") / 2)
 .Range("U" & 33) = CDbl(LabelHG5.Caption) + CDbl(.Range("U" & 37))
 .Range("U" & 36) = CDbl(.Range("U" & 33)) + CDbl(.Range("U" & 37))
End With
End Sub

edit: je suis au service pack 2 plus les amélioration qui se télécharge au file du temp....
 

Jerry

XLDnaute Junior
Re : Message erreur: "Memoire insuffisante..."

Salut,

Tout d'abord, je pense qu'un petit bonjour ne fait de mal a personne.
Ensuite, sans ton code, ca va etre difficile de dire d'ou ca vient...

@+

Comment fait-on pour poser une question au forum?
Je me souviens d'une macros qui permet de suivre visuellement la cellule sélectionnée avec des lignes rouge horizontales et verticales dans de gros fichiers, quelqu'un pourrait me l'envoyer?
 

Statistiques des forums

Discussions
312 677
Messages
2 090 810
Membres
104 671
dernier inscrit
Guilbry