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 :

ThisWorkbook - Le composant ActiveX ne peut pas créer l'objet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2017
    Messages : 4
    Par défaut ThisWorkbook - Le composant ActiveX ne peut pas créer l'objet
    Bonjour,

    Je souhaite utiliser ThisWorkbook pour mettre à jour une cellule, mais j'obtiens le message "Le composant ActiveX ne peut pas créer l'objet."

    Je pense avoir tout essayer... je suis à court d'idée.

    L'idée est de récupérer des valeurs de cellules d'un classeur et les mettre dans des cellules d'un autre classeur.

    Voici l'extrait du 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
     
    Dim SrcLineCounter As Integer
    Dim SourceFile As String, SourceSheetName As String
    Dim WbSrc as Workbook
    With Application.FileDialog(msoFileDialogFilePicker)
        .Show
        If .SelectedItems.Count = 0 Then
            MsgBox "No file was selected! Exiting!"
            Exit Sub
        End If
        SourceFile = .SelectedItems(1)
        SourceSheetName = "EXPORT"
    End With
     
    ThisWorkbook.Sheets("DATA").Range("B" + Ltrim(Str(SrcLineCounter))).Value = _
                   WbSrc.Sheets(SourceSheetName).Range("BC" + Ltrim(Str(SrcLineCounter))).Value
    ...
    Cordialement,
    Saladin.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    J'ai beau ouvrir mes yeux tous grands, je ne vois nulle part comment a été initialisée la variable WbSrc ...
    Tu peux me dire où, toi qui l'utilises ?

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    et idéalement, entre autres choses qui pour le moment ne sont pas aussi vitales :

    1) La procédure complète, et toute variable déclarée en dehors de la procédure et utilisée à l'intérieur
    2) La ligne qui déclenche l'erreur
    3) Où est la ligne qui affecte à SrcLineCounter une valeur
    4) Pourquoi concaténer deux chaines par un "+", d'autant plus que SrcLineCounter non affecté donnera Range("B0")

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2017
    Messages : 4
    Par défaut
    En effet, j'ai un peu oublié du code. C'est un peu compliqué (surf en sandbox) du coup je ne peux pas faire de "copier-coller"...
    La ligne en cause est celle du ThisWorkbook.

    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
     
    Dim SrcLineCounter As Integer
    Dim SourceFile As String, SourceSheetName As String
    Dim WbSrc as Workbook
    With Application.FileDialog(msoFileDialogFilePicker)
        .Show
        If .SelectedItems.Count = 0 Then
            MsgBox "No file was selected! Exiting!"
            Exit Sub
        End If
        SourceFile = .SelectedItems(1)
        SourceSheetName = "EXPORT"
    End With
    Set WbSrc = Workbooks.Open(SourceFile, , True)
    TrgLineCounter = 2
    SrcLineCounter = 2
     
     Do While Not IsEmpty(WbSrc.Sheets(SourceSheetName).Range("BP" + LTrim(Str(SrcLineCounter))).Value)
     
        ThisWorkbook.Sheets("DATA").Range("B" + Ltrim(Str(SrcLineCounter))).Value = _
                   WbSrc.Sheets(SourceSheetName).Range("BC" + Ltrim(Str(SrcLineCounter))).Value
        ... affectation d'autres lignes
        TrgLineCounter = TrgLineCounter + 1
        SrcLineCounter = SrcLineCounter + 1
    Loop

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Quelques remarques, déjà :

    Concatène avec l'opérateur & et non + -->>
    Tes Ltrim(Str(...)) ne serviront alors plus à rien

    Pourquoi cette boucle While ? -->>
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("S" & rows.count).end(xlup).row
    retourne le rang de la dernière cellule remplie de la colonne S, par exemple
    2) la méthode Range.copy permet de copier directement toute une plage (un objet range) déterminée d'un objet Worksheet vers (son paramètre destination) une feuille déterminée d'un objet worksheet déterminé.

    Il n'est pas adroit de typer en integer des variables de lignes dont le nombre peut dépasser la limite d'un integer Utilise le type long.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2017
    Messages : 4
    Par défaut
    Bonjour unparia,

    Merci pour tes remarques.

    Néanmoins, cela ne résout pas mon problème, malheureusement.

    C'est comme si ThisWorkbook n'était pas reconnu... Je ne comprends pas !

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

Discussions similaires

  1. Message d'erreur: Un composant ActiveX ne peut pas créer un objet
    Par amnass dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/05/2009, 07h12
  2. [POO] Un composant ActiveX ne peut pas créer un objet
    Par *.Har(d)t dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/11/2008, 19h35
  3. [POO] un composant activex ne peut pas créer un objet
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 12/03/2008, 15h35
  4. [ADO] Error 429: Un composant activex ne peut pas créer un objet
    Par Pierre Fauconnier dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/05/2006, 06h09
  5. [VS2003] Un composant ActiveX ne peut pas créer un objet
    Par kendras dans le forum Framework .NET
    Réponses: 1
    Dernier message: 28/12/2005, 12h39

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