excel ne peut pas terminer cette tache avec les ressources disponibles

siocnarf

XLDnaute Occasionnel
Bonjour,

J'ai un chiffrier qui interroge l'observateur des événements de 51 serveurs différents. J'extrais environ 50 000 enregistrements que je stock dans un autre classeur.

De temps à autre, en cours de traitement j'ai un message disant "excel ne peut pas terminer cette tache avec les ressources disponibles". Je peine à deviner l'emplacement dans mon code qui pourrait générer cette erreur. Cela ne se produit pas à chaque fois...

Y-a-t-il une manière de mesurer les ressources disponibles soit dans excel ou à l'extérieur?

Merci,

François
 

Dugenou

XLDnaute Barbatruc
Re : excel ne peut pas terminer cette tache avec les ressources disponibles

Bonjour,

j'ai aussi ce message quand je travaille avec des liaisons (recherchev) vers un gros fichier de 50 000 lignes.
Le message est affiché quand Excel fait l'enregistrement automatique ou quand tu donnes l'ordre d'enregistrer.
As-tu essayé outils/option/calcul/décocher "enregistrer les valeurs des liaisons externes ?

Cordialement
 

siocnarf

XLDnaute Occasionnel
Re : excel ne peut pas terminer cette tache avec les ressources disponibles

Bonjour,

Je l'ai décoché mais le problème revient.
Je me connecte à environ 30 journaux puis j'exécute une requête WMI puis j'échoue à un moment donné, faute de ressources système dans la boucle ci-dessous....

Code:
For Each objEvent In colEvents
        
        'On convertit objEvent.TimeWritten en un format plus lisible
        'dtmWritten = UTCToDate(objEvent.TimeWritten)
        'dtmWritten = DateAdd("h", Val(Q_strbiaslocal) / 60, dtmWritten)
        '
        'intteststrings = InStr(1, strStringaTester, EC_strStrings(i), vbTextCompare)
        
        StrValeurBiasApplique = Mid(objEvent.TimeWritten, InStr(1, objEvent.TimeWritten, "-", vbTextCompare), Len(objEvent.TimeWritten))
        'StrValeurBiasApplique = DateAdd("h", Val(IntPositionSeparateur) / 60, UTCToDate(objEvent.TimeWritten))
        
        If Q_strbiaslocal <> Val(StrValeurBiasApplique) Then
            dtmWritten = DateAdd("h", Val(Q_strbiaslocal) / 60, UTCToDate(objEvent.TimeWritten))
        Else
            dtmWritten = UTCToDate(objEvent.TimeWritten)
        End If
        
        If Day(dtmWritten) <> Day(Q_dateDatefintest) And _
        ((Month(dtmWritten) = Month(dateDateDebut)) Or (Month(dtmWritten) = Month(dateDateFin))) Then
        
            With Sheets(Q_VFeuilExtractData(1))
    
                'Nom du serveur
                .Cells(y, VDataCol1(1)) = objEvent.ComputerName
                .Cells(y, VDataCol2(1)) = objEvent.Logfile
                .Cells(y, VDataCol3(1)) = objEvent.SourceName
                'Type d'alerte (Avertissement ou Erreur ou dans certains cas Informations)
                Select Case objEvent.Type 'Si le terme est en anglais on le convertie en français
                    Case "Warning"
                        .Cells(y, VDataCol4(1)) = "Avertissement"
                    Case "Error"
                        .Cells(y, VDataCol4(1)) = "Erreur"
                    Case Else
                        .Cells(y, VDataCol4(1)) = objEvent.Type
                End Select
                
                'Catégorie
                .Cells(y, VDataCol5(1)) = objEvent.Category
                                
                'Incrémentation des compteurs
                Select Case objEvent.Type 'Si le terme est en anglais on le convertie en français
                    Case "Warning"
                        Q_IntTotalAvertissementsPertinents = Q_IntTotalAvertissementsPertinents + 1
                    Case "Error"
                        Q_IntTotalErreursPertinentes = Q_IntTotalErreursPertinentes + 1
                    Case "Avertissement"
                        Q_IntTotalAvertissementsPertinents = Q_IntTotalAvertissementsPertinents + 1
                    Case "Erreur"
                        Q_IntTotalErreursPertinentes = Q_IntTotalErreursPertinentes + 1
                    Case "Informations"
                        Q_IntTotalInformationsPertinentes = Q_IntTotalInformationsPertinentes + 1
                End Select
                
                'Code d'événement
                .Cells(y, VDataCol6(1)) = objEvent.EventCode
                'Moment de l'inscription
                .Cells(y, VDataCol7(1)) = dtmWritten
                'No de l'enregistrement
                .Cells(y, VDataCol8(1)) = objEvent.RecordNumber
        
                'Utilisateur
                If IsNull(objEvent.User) Then
                    .Cells(y, VDataCol9(1)) = "-"
                Else
                    .Cells(y, VDataCol9(1)) = objEvent.User
                End If
        
                .Cells(y, VDataCol10(1)) = objEvent.InsertionStrings
                'Pour extraire éventuellement une information pertinente du message
                .Cells(y, VDataCol11(1)) = "-"
                'Message d'erreur
                .Cells(y, VDataCol15(1)) = objEvent.Message
           
            End With
    
            y = y + 1
            
        End If

  
Next


Ce que je note est qu'au moment de mon démarrage de macro:
Application.MemoryTotal=3286636
Application.MemoryUsed=2238060
Application.MemoryFree=1048576

Lorsque j'exécute des commandes tel:
Sheets(O_VFeuilStatData(0)).Cells(TBFeuil3Y, VStatCol1(1)) = O_strComputer

Le compteur memoryused augmente et cela est également vrai pour chaque enregistrement que j'extraie par WMI... Y-a-t-il une manière avec Excel 2003 d'augmenter le memory total??

Merci,
 
Dernière édition:

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA