Partager via

PROBLEME ERREUR 1004 (VISUAL BASIC - Excel)

Anonyme
2010-09-25T14:32:12+00:00

Bonjour,

lors de l'exécution d'une macro (Office 2003 - Excel) un message d'erreur apparait : "erreur exécution 1004"

"Mémoire insuffisante - Excel ne peut plus ouvrir ou enregistrer de documents"

Zone de bug :

 Workbooks.OpenText Filename:=WsSource, Origin:=932, _

        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _

        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _

        , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _

        TrailingMinusNumbers:=False

Que se passe t-il ?

Merci pour votre aide

Maguite

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

8 réponses

  1. Anonyme
    2010-09-25T17:10:06+00:00

    le lien vers le fichier source:

    http://www.cijoint.fr/cjlink.php?file=cj201009/cij0AeG769.txt

    le lien vers le fichier cible :

    http://www.cijoint.fr/cjlink.php?file=cj201009/cijncu6Lhp.txt

    le lien vers le classeur excel:

    http://www.cijoint.fr/cjlink.php?file=cj201009/cijtegRVkN.xls

    Merci d'avance

    Maguite

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2010-09-25T17:02:19+00:00

    1 - Chaque fichier est traité de la façon suivante :

    • Ouverture du fichier et sélection de x  lignes, les dernières de liste (15 si c'est un fichier journalier et 96 si c'est un fichier horaire)
    • Chaque fichier d'origine demarre le 01/01/2010 (journalier) et 01/01/2010 00:00:00 (horaire)
    • Le fichier est renommé avec un nom spécifique et ranger dans un répertoire commun à tous
    • Le format est conservé à l'identique de l'original
    • Exemple de fichier :

    Date/Time;Temperature [°C];Temperature [°C];Temperature [°C];Relative Humidity [% RH];Precipitation [mm];Daily Value (SINGLE_SINE) [°DC];ETo index [mm];Infection Index [];Pressure index [];Risk index []

    01/01/2010 00:00:00;6.2;15.5;9.3;87;0.0;0.8;*;*;*;*

    02/01/2010 00:00:00;4.1;8.4;7.0;89;35.2;0.0;*;*;*;*

    03/01/2010 00:00:00;0.2;4.2;2.1;61;0.0;0.0;*;*;*;*

    04/01/2010 00:00:00;-1.3;3.9;1.0;62;0.0;0.0;*;*;*;*

    05/01/2010 00:00:00;-0.1;1.8;0.8;96;6.8;0.0;*;*;*;*

    2 - Ligne de code surlignée dans sa totailité:

    Workbooks.OpenText Filename:=WsSource, Origin:=932, _

            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _

            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _

            , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _

            TrailingMinusNumbers:=False

    y aurait-il une différence de script entre les version 2007 et 2003 ?

    Merci

    Maguite

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2010-09-25T16:48:48+00:00

    Si tu veux les renommer et les déplacer, tu n'as pas à ouvrir chacun des fichiers.

    Explique le traitement que tu dois faire subir à chacun des fichiers lorsque tu l'ouvres.

    Et lorsque la macro s'arrête, quelle est la ligne de code fautive ?

    Quel est le nom du fichier ?

    As-tu ouvert ce fichier pour savoir s'il était différent des autres fichiers traités ?

    Est-ce qu'il est possible de voir ce fichier, tu peux le publier en utilisant une de ces

    2 adresses cijoint.fr ou cjoint.com  Tu publies ici l'adresse que tu aura obtenu.

    Combien de fichiers ont été traité avant l'arrêt de la procédure ?


    MichD


    "MAGUITE" a écrit dans le message de groupe de discussion : *** Adresse électronique supprimée pour cause de confidentialité ***...

    Bonjour MichD

    Merci pour ta réponse...

    Cependant le contenu de la macro est plus complexe et traite plusieurs fichiers textes qui protent tous le même nom d'origine (20100101.txt) chacun dans un répertoire diférent bien sur.

    Le but est de les renommer afin de les déposer sur serveur il contiennent des données météo avec séparateur (;).

    Jusqu'à présent la macro fonctionnait correctement sous office 2007, mais avec office 2003 ce bug apparait...

    *Sources**Cibles**Journalier = J

    Horaire = H*C:\TRANSFERT\Agrotech-H\09153-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\09153-HC.txtHC:\TRANSFERT\Agrotech-H\12043-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\12043-HV.txtHC:\TRANSFERT\Agrotech-H\12056-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\12056-HON.txtHC:\TRANSFERT\Agrotech-H\12064-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\12064-HC.txtHC:\TRANSFERT\Agrotech-H\13154-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\13154-HG.txtHC:\TRANSFERT\Agrotech-H\31053-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\31053-HAC.txtHC:\TRANSFERT\Agrotech-H\31059-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\31059-HAP.txtHC:\TRANSFERT\Agrotech-H\31211-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\31211-HG.txtHC:\TRANSFERT\Agrotech-H\31212-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\31212-HC.txtHC:\TRANSFERT\Agrotech-H\31592-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\31592-HT.txtHC:\TRANSFERT\Agrotech-H\31597-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\31597-HG.txtHC:\TRANSFERT\Agrotech-H\12062-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\12062-HON.txtHC:\TRANSFERT\Agrotech-H\31593-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\31593-HVB.txtHC:\TRANSFERT\Agrotech-H\32260-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\32260-HCE.txtHC:\TRANSFERT\Agrotech-H\32261-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\32261-HLH.txtHC:\TRANSFERT\Agrotech-H\32262-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\32262-HBE.txtHC:\TRANSFERT\Agrotech-H\31040-H\20100101.txtC:\TRANSFERT\Agrotech-H\Justagro\31040-HAR.txtH

    (Macro complète)

    Sub Traitement()

    'Déclaration des variables

    Dim CelluleEC As Range

    Dim WsSource As Variant

    Dim WsCible As Variant

    Dim WsJourHeure As Boolean

    Dim ConstSelect As String

    Dim NbLigneJour As Integer

    Dim NbLigneHeure As Integer

    Dim x As Integer

    'Déclaration des constantes

    NbLigneJour = 15

    NbLigneHeure = 96

    Reponse = False

    If Traitmanu = False Then

        'Appel du timer

        CestLaPause

    End If

    Windows("Gestion_fichiers_agrotech-H.xls").Activate

    Sheets("Instructions").Select

    If Reponse = True Then

        Sheets("Feuille de paramétrage").Select

        Exit Sub

    End If

    'Boucle sur les 299 premières lignes

    For x = 2 To 300

        Sheets("Feuille de paramétrage").Select

        If Cells(x, 1) = "" Then Exit For

        'Remplissage des variables

        WsSource = Cells(x, 1)

        WsCible = Cells(x, 2)

        If Cells(x, 3) = "J" Then WsJourHeure = True Else WsJourHeure = False

        'Appel de la mise à zéro de la feuille tempo

        'RazTempo

        'Ouverture du fichier source + copie

        Workbooks.OpenText Filename:=WsSource, Origin:=932, _

            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _

            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _

            , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _

            TrailingMinusNumbers:=False

        Selection.End(xlDown).Select

        Application.CutCopyMode = False

        If WsJourHeure = True Then

            ConstSelect = "A2:A" & Application.ActiveCell.Row - NbLigneJour

        Else

            ConstSelect = "A2:A" & Application.ActiveCell.Row - NbLigneHeure

        End If

        Range(ConstSelect).Select

        Selection.EntireRow.Delete

        Application.DisplayAlerts = False

        ActiveWorkbook.SaveAs Filename:=WsCible, FileFormat:= _

            xlText, CreateBackup:=False

        ActiveWorkbook.Close

        Application.DisplayAlerts = True

        Windows("Gestion_fichiers_agrotech-H.xls").Activate

    Next

    Sheets("Instructions").Select

    If Traitmanu = False Then

        Application.Quit

    End If

    End Sub

    Sub CestLaPause()

        Dim PauseTime, Start, Finish, TotalTime

            PauseTime = 5   ' Définit la durée.

            Start = Timer   ' Définit l'heure de début.

            Do While Timer < Start + PauseTime

                DoEvents    ' Donne le contrôle à d'autres

                             ' processus.

            Loop

    End Sub

    Sub CestLaPauseSauv()

        Dim PauseTime, Start, Finish, TotalTime

        If (MsgBox("Cliquez sur Oui pour effectuer une " & _

                "pause de 5 secondes", 4)) = vbYes Then

            PauseTime = 5   ' Définit la durée.

            Start = Timer   ' Définit l'heure de début.

            Do While Timer < Start + PauseTime

                DoEvents    ' Donne le contrôle à d'autres

                            ' processus.

            Loop

            Finish = Timer  ' Définit l'heure de fin.

            TotalTime = Finish - Start  ' Calcule la durée

                                                    ' totale.

        MsgBox "Pause de " & TotalTime & " seconde(s)"

        Else

            End

        End If

        CestLaPause

    End Sub

    Merci d'avance

    Maguite

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2010-09-25T16:31:37+00:00

    Bonjour MichD

    Merci pour ta réponse...

    Cependant le contenu de la macro est plus complexe et traite plusieurs fichiers textes qui portent tous le même nom d'origine (20100101.txt) chacun dans un répertoire différent bien sur.

    Le but est de les renommer afin de les déposer sur serveur il contiennent des données météo avec séparateur (;).

    Jusqu'à présent la macro fonctionnait correctement sous office 2007, mais avec office 2003 ce bug apparait...

    Sources Cibles Journalier = J Horaire = H
    C:\TRANSFERT\Agrotech-H\09153-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\09153-HC.txt H
    C:\TRANSFERT\Agrotech-H\12043-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\12043-HV.txt H
    C:\TRANSFERT\Agrotech-H\12056-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\12056-HON.txt H
    C:\TRANSFERT\Agrotech-H\12064-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\12064-HC.txt H
    C:\TRANSFERT\Agrotech-H\13154-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\13154-HG.txt H
    C:\TRANSFERT\Agrotech-H\31053-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\31053-HAC.txt H
    C:\TRANSFERT\Agrotech-H\31059-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\31059-HAP.txt H
    C:\TRANSFERT\Agrotech-H\31211-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\31211-HG.txt H
    C:\TRANSFERT\Agrotech-H\31212-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\31212-HC.txt H
    C:\TRANSFERT\Agrotech-H\31592-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\31592-HT.txt H
    C:\TRANSFERT\Agrotech-H\31597-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\31597-HG.txt H
    C:\TRANSFERT\Agrotech-H\12062-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\12062-HON.txt H
    C:\TRANSFERT\Agrotech-H\31593-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\31593-HVB.txt H
    C:\TRANSFERT\Agrotech-H\32260-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\32260-HCE.txt H
    C:\TRANSFERT\Agrotech-H\32261-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\32261-HLH.txt H
    C:\TRANSFERT\Agrotech-H\32262-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\32262-HBE.txt H
    C:\TRANSFERT\Agrotech-H\31040-H\20100101.txt C:\TRANSFERT\Agrotech-H\Justagro\31040-HAR.txt H

    (Macro complète)

    Sub Traitement()

    'Déclaration des variables

    Dim CelluleEC As Range

    Dim WsSource As Variant

    Dim WsCible As Variant

    Dim WsJourHeure As Boolean

    Dim ConstSelect As String

    Dim NbLigneJour As Integer

    Dim NbLigneHeure As Integer

    Dim x As Integer

    'Déclaration des constantes

    NbLigneJour = 15

    NbLigneHeure = 96

    Reponse = False

    If Traitmanu = False Then

        'Appel du timer

        CestLaPause

    End If

    Windows("Gestion_fichiers_agrotech-H.xls").Activate

    Sheets("Instructions").Select

    If Reponse = True Then

        Sheets("Feuille de paramétrage").Select

        Exit Sub

    End If

    'Boucle sur les 299 premières lignes

    For x = 2 To 300

        Sheets("Feuille de paramétrage").Select

        If Cells(x, 1) = "" Then Exit For

        'Remplissage des variables

        WsSource = Cells(x, 1)

        WsCible = Cells(x, 2)

        If Cells(x, 3) = "J" Then WsJourHeure = True Else WsJourHeure = False

        'Appel de la mise à zéro de la feuille tempo

        'RazTempo

        'Ouverture du fichier source + copie

        Workbooks.OpenText Filename:=WsSource, Origin:=932, _

            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _

            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _

            , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _

            TrailingMinusNumbers:=False

        Selection.End(xlDown).Select

        Application.CutCopyMode = False

        If WsJourHeure = True Then

            ConstSelect = "A2:A" & Application.ActiveCell.Row - NbLigneJour

        Else

            ConstSelect = "A2:A" & Application.ActiveCell.Row - NbLigneHeure

        End If

        Range(ConstSelect).Select

        Selection.EntireRow.Delete

        Application.DisplayAlerts = False

        ActiveWorkbook.SaveAs Filename:=WsCible, FileFormat:= _

            xlText, CreateBackup:=False

        ActiveWorkbook.Close

        Application.DisplayAlerts = True

        Windows("Gestion_fichiers_agrotech-H.xls").Activate

    Next

    Sheets("Instructions").Select

    If Traitmanu = False Then

        Application.Quit

    End If

    End Sub

    Sub CestLaPause()

        Dim PauseTime, Start, Finish, TotalTime

            PauseTime = 5   ' Définit la durée.

            Start = Timer   ' Définit l'heure de début.

            Do While Timer < Start + PauseTime

                DoEvents    ' Donne le contrôle à d'autres

                             ' processus.

            Loop

    End Sub

    Sub CestLaPauseSauv()

        Dim PauseTime, Start, Finish, TotalTime

        If (MsgBox("Cliquez sur Oui pour effectuer une " & _

                "pause de 5 secondes", 4)) = vbYes Then

            PauseTime = 5   ' Définit la durée.

            Start = Timer   ' Définit l'heure de début.

            Do While Timer < Start + PauseTime

                DoEvents    ' Donne le contrôle à d'autres

                            ' processus.

            Loop

            Finish = Timer  ' Définit l'heure de fin.

            TotalTime = Finish - Start  ' Calcule la durée

                                                    ' totale.

        MsgBox "Pause de " & TotalTime & " seconde(s)"

        Else

            End

        End If

        CestLaPause

    End Sub

    Merci d'avance

    Maguite

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2010-09-25T15:00:00+00:00

    Bonjour,

    Ceci devrait ouvrir ton fichier "Texte (txt)"

    Si cela cause un problème, dis-nous ce que contient ton fichier texte.

    Ceci signifie que chaque élément du fichier texte est entre " " comme dans "toto"

    TextQualifier:=xlDoubleQuote

    '----------------------------------

    Sub test()

    dim WsSource As String

    WsSource = "c:\titi.txt"

    Workbooks.OpenText Filename:=WsSource, _

        DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _

        Tab:=True, FieldInfo:=Array(1, 1), Local:=True

    End Sub

    '----------------------------------


    MichD


    "MAGUITE" a écrit dans le message de groupe de discussion : *** Adresse électronique supprimée pour cause de confidentialité ***...

    Bonjour,

    lors de l'exécution d'une macro (Office 2003 - Excel) un message d'erreur apparait : "erreur exécution 1004"

    "Mémoire insuffisante - Excel ne peut plus ouvrir ou enregistrer de documents"

    Zone de bug :

     Workbooks.OpenText Filename:=WsSource, Origin:=932, _

            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _

            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _

            , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _

            TrailingMinusNumbers:=False

    Que se passe t-il ?

    Merci pour votre aide

    Maguite

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire