IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Debutant - Erreur 1004 [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Par défaut Debutant - Erreur 1004
    Bonjour à tous,

    Etant newbie de base, j'ai commencé par lire tout ce que je trouvais. Mais apparemment l'erreur 1004 c'est un peu (beaucoup) sibyllin...
    Après une bonne journée à compulser les FAQs et le forum, je tourne toujours en rond...

    Mon souci : j'ai une macro livrée par une personne en congés que je veux adapter à des traitements en masse, et forcément c'est un peu pour hier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub QuiMarche()
     
    LigneEnCours = 1
     
        Ligne = 2
        Colonne = 2
        OnExtrait = True
     
        LigneEnCours = 2
     
        Continue = True
        While Continue = True
            LigneModif = Feuil3.Cells(LigneEnCours, 1).Value
            If VarType(LigneModif) = vbEmpty Then
                Continue = False
            Else
                LigneModif = LigneModif + 1
                Colonne = 2
                While Mid(Feuil1.Cells(LigneModif, 1).Value, 1, 1) <> "#"
                    Feuil3.Cells(LigneModif, 1).NumberFormat = "@"
                    Feuil1.Cells(LigneModif, 1).Value = Feuil3.Cells(LigneEnCours, Colonne).Value
                    LigneModif = LigneModif + 1
                    Colonne = Colonne + 1
                Wend
            End If
            LigneEnCours = LigneEnCours + 1
     
        Wend
        MsgBox "Réintégration terminée dans la Feuil1 !!!", vbOKOnly + vbInformation, "Fini"
     
    End Sub
    1) Pas d'option explicit. Au vu de ce que j'ai lu, je l'ai activée...
    2) J'ai réussi à mettre le paramètre dans une cellule, puis ma liste de paramètres dans une plage en dessous, et dans d'autres procédures j'appelle les procédures de traitement en faisant une boucle. Pour la petite histoire le mid qui test le # permet de passer à la ligne suivante.
    La phase d'extraction se déroule parfaitement donc je pense que le système est OK, c'est sur la phase de réintégration (à l'unité) que j'ai le souci.
    3) Pour une raison qui m'échappe totalement, le code QuiMarche() plante dès que je renomme les feuilles (en changeant les propriétés Name et (Name)). Pourtant j'insiste, la partie extraction qui fonctionne avec les mêmes objets n'a pas de problème

    Je pars d'un onglet identifié par un paramètre pour d'un tableau listant des valeurs, regénérer un "fichier texte" dans la feuille Import.

    Donc en Déclarations j'ai entré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Msg, FlagLbl As String
    Dim LigneEnCours, Ligne, Colonne, LigneMax, LigneSup As Long
    Dim FlagCell, FlagList As Range
    Dim FlagPos As Integer
    Dim OnExtrait, Continue As Boolean
    Dim Valeur, ValeurModif As Variant
    'Dim LigneModif As Long
    Dim LigneModif As Variant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub QuiMarchePas()
     
     
     
        Set FlagCell = Sheets("Menu").Range("C13")
    '    FlagLbl = FlagCell.Value
     
        With Sheets("Temp")
            .Select
            .Cells.Select
        End With
        Selection.ClearContents
     
        With ThisWorkbook.Sheets(FlagCell.Value)
            .Select
            .Cells.Select
        End With
        Selection.Copy
        ThisWorkbook.Sheets("Temp").Activate
        ActiveSheet.Range("A1").Select
        ActiveSheet.Paste
        ActiveSheet.Range("A1").Select
     
     
     
    LigneEnCours = 1
     
        Ligne = 2
        Colonne = 2
        OnExtrait = True
     
        LigneEnCours = 2
     
        Continue = True
        While Continue = True
            LigneModif = ThisWorkbook.Sheets("Temp").Cells(LigneEnCours, 1).Value
            If VarType(LigneModif) = vbEmpty Then
                Continue = False
            Else
                LigneModif = LigneModif + 1
                Colonne = 2
                While Mid(ThisWorkbook.Sheets("Import").Cells(LigneModif, 1).Value, 1, 1) <> "#"
                    ThisWorkbook.Sheets("Temp").Cells(LigneModif, 1).NumberFormat = "@"
     'ça plante ici !               
     ThisWorkbook.Sheets("Import").Cells(LigneModif, 1).Value = ThisWorkbook.Sheets("Temp").Cells(LigneEnCours, Colonne).Value
    ' Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet
                    LigneModif = LigneModif + 1
                    Colonne = Colonne + 1
                Wend
            End If
            LigneEnCours = LigneEnCours + 1
     
        Wend
        'MsgBox "Réintégration terminée  !!!", vbOKOnly + vbInformation, "Fini"
     
        ThisWorkbook.Sheets("Menu").Select
    End Sub
    L'erreur survient seulement au bout d'un moment, et j'ai l'impression que ça fonctionne bien au début. Le problème, c'est que j'ai environ 1 millions de lignes, donc les vérifs sont pas gagnées...

    Merci d'avoir pris le temps de regarder ma demande.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Par défaut
    Re,

    J'ai pu résoudre mon problème à partir d'autres fichiers.
    Pour info, le fichier d'origine contient plusieurs millions de lignes, il a donc été séparé en x fichiers.

    Celui dont je me servais ne se terminait pas par un #, et quand j'ai rajouté cette info tout fonctionne normalement.

    Cependant je ne trouve toujours pas pourquoi un traitement (l'extraction) marche et pas l'autre...

    Si quelqu'un à une idée de réponse, elle est toujours la bienvenue, mais priorité à ceux qui sont dans le besoin !

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSL] [debutant] erreur bete avec choose
    Par enigma dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/07/2005, 17h58
  2. [langage] [Débutant] Erreur scalar found
    Par bartmarley dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2005, 11h50
  3. debutant: erreur LNK2001 avec la librairie GSL
    Par drill3 dans le forum MFC
    Réponses: 6
    Dernier message: 25/04/2005, 13h58
  4. [Debutant] Erreur "Unhandled event loop exception"
    Par pilz dans le forum Eclipse Platform
    Réponses: 14
    Dernier message: 08/12/2004, 15h19
  5. [Debutant]erreur lors de la sauvegarde d un code.
    Par Mr_Chut dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/04/2004, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo