Mémoire insuffisante " code VBA"

Bonjour,

Quelqu'un peut m'aider à résoudre le problème suivant ?

mon fichier est plein de ligne de code, du coup l'utilisation sature la mémoire.

lorsque je remplis les cellules a, b, le fichier plante, impossible de continuer.

pourtant chez moi ça fonctionne très bien, mais au bureau rien à faire.

(Débutant en Vba) ayez pitié

Merci par avance,

memoire insuffisante

Bonjour,

Votre problème vient du fait que vous faites de nombreuses boucles sur la feuille en cours qui comporte son nombre de lignes maximum (plus d'1 million).

Examinez donc la valeur de "Range("d" & Rows.Count).End(xlUp).Row" qui est à mon avis la même que celle "Rows.count"

Si vous supprimez les lignes 114 à 1048576, votre problème devrait être résolu.

Bonjour Thev,

Merci d'avoir répondu . malheureusement, j'ai déjà fait cela mais rien n'a changé.

y a t'il autre chose que je peux essayer ?

si vous avez des solutions, je suis prenant.

Merci,

Bonjour,

cette instruction vous crée une boucle sans fin

ws.Range(Target.Address).Value = Target.Value

car elle vous redéclenche le même événement.

MERCI.

Petite précision, je le colle ou ?

je pourrais le tester seulement à partir de Lundi, puisque c'est au travail que le beug apparait.

je ne comprend pas votre instruction

    
Set ws = ActiveWorkbook.Worksheets("En Cours")
    If Not Application.Intersect(Target, Columns("b:e")) Is Nothing _
       And Target.Count = 1 Then
        ws.Range(Target.Address).Value = Target.Value
    End If

comme elle est rattachée à l'événement "Change" de votre feuille "En Cours", cette instruction équivaut à

    
Set ws = ActiveWorkbook.Worksheets("En Cours")
    If Not Application.Intersect(Target, Columns("b:e")) Is Nothing _
       And Target.Count = 1 Then
        Target.Value= Target.Value
    End If

Merci de ton retour Thev,

le problème semble persisté en modifiant comme indiqué ci-dessus.

j'ai d'autres codes d'erreur (voir images).

il ya depuis une petite modif sur le fichier: à l'ouverture du fichier, il faut activer les Macros en cliquant sur la touche " MACRO TOUCHE

ARRÊT / MARCHE" en cellule G.

Merci pour ton aide.

erreur d excecution erreur d excecution 2

Bonjour,

On ne s'est pas compris.

Ma remarque ne portait pas sur le changement d'instruction

Set ws = ActiveWorkbook.Worksheets("En Cours")

If Not Application.Intersect(Target, Columns("b:e")) Is Nothing _

And Target.Count = 1 Then

Target.Value= Target.Value

End If

Pour moi, cette instruction ne sert à rien et elle doit être supprimée, d'autant plus qu'elle provoque une boucle répétitive. Ou alors, elle est mal codifiée pour le but à atteindre que vous devez alors préciser.

Bonjour Thev,

En fait depuis le début, on s'est mal compris, mais c'est de ma faute, j'avais mal lu vos commentaires.

Je n'ai pas assez de connaissance ni de recule pour faire des codes supers. Si vous avez des solutions, ça sera cool, et ça me permettra de gagner en connaissance. franchement je sèche trop sur ce problème.

Merci par avance

Bonjour,

Pour pouvoir vous aider, il faudrait que vous exposiez votre problème et plus précisément le résultat à obtenir via 1 ou 2 exemples. On a certainement dû vous le consigner par écrit.

Sinon même en voulant simplifier le code actuel, des éléments sont manquants . En particulier, tous les noms répertoriés (liste1 à liste6) sont en erreur.

Bonjour Thev,

Merci pour Votre aide.

Le problème de mémoire insuffisante semble avoir disparu, je n'ai rien fait pour cela. mais je serai fixé demain au bureau.

Du coup si vous ou une autre personne, pouvez m'aider, ça sera vraiment cool. (dois-je refaire un autre poste ?)

j'ai essayé d’être précis dans ma demande (j'ai fait un peu de nettoyage et j'ai légèrement modifié mon fichier):

IL YA DEUX MODES DE FONCTIONNEMENT:

'TRAVAIL A FAIRE :

Ce qu'il faudrait pour que ce fichier fonctionne, CREER UN CODE POUR FAIRE LE CHOIX DU MODE DE FONCTIONNEMENT.

'FONCTIONNEMENT 1

'SI CELLULE Q =AEE ou Q=ASTREINTE la codification pour le fonctionnement 1 doit s'appliquer

'CODE déjà crée (voir visual basic)

'FONCTIONNEMENT 2

'SI CELLULE X est différent de vide, la codification pour le fonctionnement 2 doit s'appliquer.

'CODE déjà crée (voir visual basic)

Travail N° 2

Dans la cellule "W", on aura besoin de rentrer 2 informations,

La première information permettra de remplir les colonnes de M à P (déjà réalisé)

Si le mode de fonctionnement 2 est choisit, on aura également besoin de renter une autre information et cette dernière information ne devra modifier aucune cellule, ni faire apparaitre de message dans aucune cellule excepté un message dans la cellule "y" et ce message est " Date de Trx"

Pour savoir remplir le fichier, il faut rentrer une information dans "w" et se laisser guider,

J’espère que vous pourrez m'aider, ça fait plusieurs jours que je suis dessus et si ce n'est pas trop demandé, pourriez vous mettre des commentaires pour que je comprennes.

Merci par avance,

[Bonjour,

Je suis juste intervenu sur la partie 1 car je n'ai pas compris la seconde.

Bonjour Thev,

Franchement MERCI, on y est presque, si seulement je pouvais t'aider plus....

j'ai mis un commentaire dans le fichier pour le fonctionnement 1 que je souhaite qu'on reprenne car il y a un blocage. le programme ne se lance pas lorsque il y a AEE ou ASTREINTE dans la cellule "Q".

D'après ce que j'ai cru comprendre

Merci Thev pour votre retour rapide.

Je ne suis pas sur que ce soit le bon fichier que vous m'avez envoyé.

il n'y a pas eu de changement dans le programme et ça ne fonctionne pas.

voici ce que j'ai modifié

1)

'FONCTIONNEMENT 1
'SI CELLULE Q =AEE ou Q=ASTREINTE la codification doit s'appliquer

rw = Target.Row
If Cells(rw, "Q").Value = "AEE" Or Cells(rw, "Q").Value = "ASTREINTE" Then

2)

rw = Target.Row
If Not Application.Intersect(Target, Columns("w")) Is Nothing _
And Target.Count = 1 Then

    If Cells(rw, "X") = Empty Then       ' pas de fonctionnement 2
        Set rCell = ws.Cells(rw, "u")
        Select Case True
            Case IsDate(Target.Value)
                rCell.Value = ""
            Case Else
                rCell.Value = "Faire commande Terrasment"
        End Select

        Set rCell = ws.Cells(rw, "n")
        Select Case True
            Case IsDate(Target.Value)
                rCell.Value = ""
            Case Else
                rCell.Value = "Faire commande"
        End Select
        Set rCell = ws.Cells(rw, "m")
        Select Case True
            Case IsDate(Target.Value)
                rCell.Value = ""
            Case Else
                rCell.Value = "Choisir presta"
        End Select

        Set rCell = ws.Cells(rw, "q")
        Select Case True
            Case IsDate(Target.Value)
                rCell.Value = ""
            Case Else
                rCell.Value = "Choisir Entrep Montage"
        End Select
    Else                            ' fonctionnement 2
        Set rCell = ws.Cells(rw, "y")
        Select Case True
            Case IsDate(Target.Value)
                rCell.Value = ""
            Case Else
                rCell.Value = " Date de Trx"
        End Select
   End If

Bonjour Thev,

Merci pour ton retour.

le programme est toujours bloqué en "Q" après sélection de AEE ou ASTREINTE. En cellule "Y" il n'y a aucun message.

j'ai mis le fichier à jour pour que tu vois si je fais pas d'erreur.

ci-jointe nouvelle version

Bonjour Thev,

Je te remercie pour le code que tu m'as fait. cela ma permis de faire un bon en avant dans mon fichier.

du coup, il me reste très peu de chose à faire qui normalement devront être à ma porter.

"Ajout d'information dans la cellule W".

la cellule W doit avoir au totale 2 informations :

D'abord on rentre une info dans "W"

Ensuite si Q= IRDE ou EGA (Mode de fonctionnement 2), il faudra que l'on rentre une deuxieme information dans "w"

lorsque la cellule W contient deux lignes d'information, un message doit s'afficher dans y "Indiquer date de Trx"

Merci par avance,

ci-joint nouvelle version

Rechercher des sujets similaires à "memoire insuffisante code vba"