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 :

Problème de type Erreur 1004


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème de type Erreur 1004
    Bonjour,

    Je conçoit une macro qui, dans un premier temps, à partir d'un fichier Excel ouvre un autre fichier Excel. Je voudrais alors sélectionner une plage de cellules dans le fichier ouvert mais je rencontre une erreur 1004. J'ai pas mal cherché sur le net, y compris sur ce forum, mais je n'arrive pas à résoudre mon problème.

    Voici mon code :

    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
    Public Sub fiche()
     
    ' Déclaration et initialisation des varibales
     
    Dim nbr_fichiers As Integer, i As Integer, j As Integer, N As Integer, k As Integer, m As Integer
    Dim feuille_active As String, book_actif As String
    Dim tableau_fichiers() As String, tableau_valeurs()
     
    N = 0
     
    ' Informations fichiers
     
    nbr_fichiers = InputBox("Veuillez renseigner le nombre de fichiers à ouvrir", "Nombre de fichiers")
     
     
    ' Redimensionnement du tableau
     
    ReDim tableau_fichiers(nbr_fichiers)
     
     
    ' Boucle sur les noms de fichiers
     
    For i = 0 To nbr_fichiers - 1
     
        tableau_fichiers(i) = InputBox("Veuillez indiquez le chemin du fichier " & CStr(i) & " (ex : C:\Dossier\fichier.xls)", "Nom du fichier " & CStr(i))
     
    Next i
     
     
    '' Boucle principale
     
    For j = 0 To nbr_fichiers - 1
     
     
        ' Ouverture du fichier
     
        Set ObjExcel = CreateObject("EXCEL.APPLICATION") ' Création d'un objet Excel
        Set ObjFeuil = ObjExcel.Workbooks.Open(tableau_fichiers(j)) ' Création d'un objet feuille et ouverture d'un fichier
        ObjExcel.Visible = True 'Affichage du resultat
     
     
        ' Conversion et remplacement des points par des virgules
     
        ObjExcel.Range("A4").Select
     
        Do
     
            N = N + 1
            ObjExcel.ActiveCell.Offset(1, 0).Select
     
        Loop Until ObjExcel.ActiveCell.Value = ""
     
        ObjExcel.Range(Cells(4, 1), Cells(4 + N - 1, 1)).Select
    C'est à ce moment que l'exécution s'arrête et qu'il me met le message d'erreur. Un p'tit coup de main svp

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pourquoi crées-tu une nouvelle instance d'Excel ?
    Tu peux ouvrir ton fichier sans avoir à créer une nouvelle instance de l'application Excel.
    J'ai l'impression que tu t'es compliqué la vie
    Le mieux serait que tu nous expliques, pas par pas ce que tu veux faire
    A quoi sert ta boucle ? A trouver la première cellule vide ? Tu as ça sur le forum, dans la FAQ et dans les tutos. Adresses dans ma signature.
    En recherche sur le forum, tape "Dernière" ou regarde ici
    A+

  3. #3
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Merci pour ta réponse ouskel'n'or, je vais essayer d'être plus précis.

    En fait, je n'ai pas tellement "choisi" d'utiliser cette méthode pour ouvrir le fichier (au passage j'ai pas compris ce que signifie créer une nouvelle instance d'Excel désolé je débute dans tout ce qui est manipulation de fichiers).

    En fait, je voulais juste savoir comment ouvrir un fichier Excel à partir d'un autre, convertir des données dans le fichier ouvert, puis copier une partie des données dans le premier Excel (celui à partir duquel on ouvre le second). J'ai cherché sur le net et j'ai trouvé cette méthode.

    En fait, je voudrais faire tout ce que j'ai décrit dans le paragraphe précédent pour plusieurs fichiers Excel. Ma première boucle sert à récupérer le nombre de fichiers Excel à ouvrir ainsi que leur chemin d'accès.

    Ensuite, j'ouvre les fichiers et les manipule. Je ne vous avais mis qu'une partie du code de la macro pour alléger le message

    Voilà, j'espère avoir été assez explicite

    Encore merci pour le coup de main

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si j'ai bien compris, tu peux faire ça pour ta "boucle principale"
    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
    'Boucle principale
     
    Dim CL1 As Workbook
    Dim FL1 As Worksheet
    Dim Derlig As Long
     
        For i = 0 To nbr_fichiers - 1
     
     
            'Création d'une instance du CLASSEUR et ouverture
            Set CL1 = Workbooks.Open(tableau_fichiers(j))
            'Création d'une instance de la FEUILLE de calculs
            Set FL1 = CL1.Worksheets("Feuil1") 'adapter le nom de la feuille
     
            'Conversion et remplacement des points par des virgules
     
            Derlig = Range("B65536").End(xlUp).Row
            FL1.Range(Cells(4, 1), Cells(Derlig, 1)).Select
        Next
    Ton erreur ? Déjà, tu n'as pas instancié la feuille de calculs et tu utilises l'objet Classeur à la place

    NB - Si tes fichiers sont dans le même répertoire, tu as une manière très simple de les récupérer sans avoir à saisir le chemin. Et même s'ils ne sont pas dans un seul répertoire.
    Bonne nuit

  5. #5
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour les infos, je testerai ça demain et je te tiendrai au courant.

    Encore merci et bonne nuit

Discussions similaires

  1. Probléme lancement Excel Erreur Exé 1004
    Par jackborogar dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 12/06/2012, 16h45
  2. Réponses: 5
    Dernier message: 07/06/2010, 11h52
  3. Réponses: 2
    Dernier message: 11/12/2009, 22h27
  4. Réponses: 8
    Dernier message: 26/03/2009, 22h43
  5. Problème avec une erreur de type [DCC Erreur]
    Par colorid dans le forum Langage
    Réponses: 5
    Dernier message: 24/09/2007, 20h04

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