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 :

Erreur d'automation - 800401a8 : sur l'activation d'une feuille [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 15
    Par défaut Erreur d'automation - 800401a8 : sur l'activation d'une feuille
    Salut tout le monde,

    Je rencontre une erreur d'automation, et à vrai dire, malgré quelques recherches, impossible de la résoudre, et je ne suis pas bien sur de comprendre ce qui cloche. Le code est le suivant :

    Erreur d'exécution '-2147221080 (800401a8)':
    Erreur d'automation
    L'erreur se place sur la ligne en jaune dans le code ( Activation de mon classeur destination )

    Je suis entrain de bosser sur un code vba ayant pour but d'automatiser l'importation de données d'un classeur à un autre.
    En gros, le principe c'est que le fichier source est généré par SAS Entreprise de et l'ordre des colonnes n'est pas modifiable (désavantage de l'administration et des X demandes à faire pour modifier certains fichiers).

    Or, chaque analyste a besoin de modifier l'ordre des colonnes à des fins d'analyse. Résultat, mon code utilise une table de concordance pour rajouter colonnes après colonnes les données, sachant que l'ordre est établi dans le fichier destination, et une vlookup permet d'identifier la colonne correspondante à importer.

    Voici le code, ca sera plus clair :
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Sub Importationdonnées()
    
    '''' [ TRAVAIL PRÉLIMINAIRE ] ''''
    
    'Déclaration des variables
    Dim nomsource As Variant
    Dim nomdestination As Variant
    Dim numcolonne As Variant
    
    'Déclaration des deux fichiers
        
        'Destination (Chiffrier hôte pour l'ensemble des données)
    Dim Destination As Workbook
    Set Destination = ActiveWorkbook
        
        'Source (à savoir le fichier généré par SAS qui contient les données à importer)
    Dim Source As Workbook
    
    'cheminsource = InputBox("Quel est le chemin du fichier à importer ?", "Chemin Source")
    cheminsource = "P:\Projet 5\PMLOCATIF_JUL2012_DEC2012.xlsx"
    Set Source = Workbooks.Open(cheminsource)
    
    Source.Activate
    'Détermination du nombre de ligne à importer
    Dim DernLigne As Long
    DernLigne = Range("A" & Rows.Count).End(xlUp).Row
    'Détermination du nombre de colonne à importer
    Dim DernCol As Integer
    DernCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
    'Détermination de la dernière ligne après laquelle copier les données
    
    Dim DernLigneDestination As Long
    
    Destination.Worksheets("JLR").Activate
    DernLigneDestination = Range("A" & Rows.Count).End(xlUp).Row
    DernLigneDestination = DernLigneDestination + 1
    
    '''' [ CONCORDANCE DES COLONNES ] '''''
    
    'Boucle
    Dim FL1 As Worksheet, Cell As Range
    Dim NoLig As Long, Var As Variant
        
      Source.Activate
        Set FL1 = Worksheets("PMLOCATIF")
        NoLig = 1 'Lecture de la ligne 5
        
        For numcolonne = 1 To DernCol
            nomsource = FL1.Cells(NoLig, numcolonne) 'Selection de la première cellule de la colonne
            
            'Concordance des noms de colonnes
           
            nomdestination = WorksheetFunction.VLookup(nomsource, Destination.Sheets("Concordances").Range("A1:B46"), 2, True)
            
            'copie de la colonne du fichier source
            Range(numcolonne & "2:" & numcolonne & DernLigne).Copy
            
            'Collage de la colonne dans le fichier destination
        Dim ColRech As Variant
        With Destination.Worksheets("JLR").Range("a1:DA1")
            Set c = .Find(nomdestination, LookIn:=xlValues, LookAt:=xlWhole)
            If Not c Is Nothing Then
                    ColRech = Selection.Find(nomdestination, LookIn:=xlValues).Column
                     Range(1, ColRech).Select
            
            
                        Dim i As Integer
                         i = 1
                        While (Cells(i, ColRech).Value <> "")
                        i = i + 1
                        Wend
                        Cells(i, numcolonne).Select
                     Selection.Paste
            
            End If
        End With
        Next
    End Sub
    Merci d'avance pour votre coup de pouce

    Cordialement,

    Sofian

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Salut,

    en fait ce n'est pas un classeur mais la feuille JLR que tu appelles, existe-t-elle au moins ?


  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 15
    Par défaut
    Ouep, c'est ma première feuille, celle qui présente le tableau avec toutes les données.

    J'avais aussi essayé de pointer juste vers le classeur mais le problème reste le même.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Dans le doute d'un classeur endommagé, redémarre l'ordinateur et lance Excel seul …

    Tu peux aussi appeler la feuille 1 ainsi : Destination.Worsheets(1).Activate

    Sinon activer d'abord le classeur seul puis dans un second temps la feuille …

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2013
    Messages : 15
    Par défaut
    En fait, j'ai compris, l'erreur vient du fait que quand je définis "Destination", j'utilise le document actif ( celui depuis lequel la macro se lance). Or, quand je lance la macro depuis VB, sans avoir au préalable activé mon fichier, il me pond l'erreur.

    En soit, une fois l'édition terminée, elle disparaitra

    Merci !

    Bon maintenant j'ai une incompatibilité de type de le Next, à la fin

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/01/2012, 09h00
  2. [E-00] condition de if avec l'activation d'une feuille
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/10/2008, 16h10
  3. Réponses: 6
    Dernier message: 04/09/2008, 19h17
  4. Activation d'une feuille
    Par PPLILH2008 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2008, 23h11
  5. [VB.Net] Problème sur (re)dessin d'une feuille
    Par tomnie dans le forum Windows Forms
    Réponses: 21
    Dernier message: 11/09/2006, 16h52

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