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 429 -un composant ActiveX ne peut pas créer d'objet [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut erreur 429 -un composant ActiveX ne peut pas créer d'objet
    Bonjour à tous !

    J'ai un petit soucis avec un petit programme qui doit, en gros, prendre une feuille Excel existante et la classer dans une nouvelle feuille pour la rendre plus visible.

    L'erreur se situe au moment ou l'on cherche à choisir la feuille que l'on voudrait importer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Cette macro affiche la boîte de dialogue pour sélectionner le fichier source
    Sub AdressFich()
    Dim objDialog
    Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
    objDialog.OpenFileOpenDlg
    ChoixFichier.AdressFichierAvis = objDialog.Filename
    AdresseFichier2 = ChoixFichier.AdressFichierAvis
    End Sub
    Et l'erreur du débuggeur indique la 4ème ligne comme étant celle qui pose problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
    Voilà, merci d'avance, help!

  2. #2
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Qu'est censée faire cette ligne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
    A mon avis il ne trouve pas d'objet de type SafrcFileDlg.FileOpen
    Si c'est pour le choix d'un fichier essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.GetOpenFilename
    Cordialement.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Hello,

    Alors effectivement la boîte de selection d'un fichier s'ouvre mais quand j'en choisi une il apparait maintenant une erreur 424 : objet requis.

    Merci d'avance.

  4. #4
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Faudrait que tu mettes un petit bout de code, pour qu'on puisse t'aider.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Voila le code complet qu'on m'a donné.

    J'ai mis en commentaire la fonction précédente pour la remplacer par celle que tu m'as proposé.

    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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    Public NiveauTension(10)
    Public CausePerturbation(-1 To 100)
    Public NaturePerturbation(100)
    Public EffetPerturbation(20)
    Public LieuPerturbation(999)
    Public NumColonne(15, 1)
    Public AdresseFichier2
     
    'Cette macro affiche la boîte de dialogue pour sélectionner le fichier source
    Sub AdressFich()
    Dim objDialog
    'Set objDialog = CreateObject("SafrcFileDlg.FileOpen")
    Application.GetOpenFilename
    objDialog.OpenFileOpenDlg
    ChoixFichier.AdressFichierAvis = objDialog.Filename
    AdresseFichier2 = ChoixFichier.AdressFichierAvis
    End Sub
     
    '
    'Fonction utile au calcul de la semaine au forma ISO
    '
     
    Function YearStart(WhichYear As Integer) As Date
     
    Dim WeekDay As Integer
    Dim NewYear As Date
     
    NewYear = DateSerial(WhichYear, 1, 1)
    WeekDay = (NewYear - 2) Mod 7
    If WeekDay < 4 Then
        YearStart = NewYear - WeekDay
    Else
        YearStart = NewYear - WeekDay + 7
    End If
     
    End Function
     
    '
    'Fonction pour calculer le numéro de la semaine
    '
     
    Public Function ISOWeekNum(AnyDate As Date, _
         Optional WhichFormat As Variant) As Integer
    '
    ' WhichFormat: missing or <> 2 then returns week number,
    '              = 2 then YYWW
    '
    Dim ThisYear As Integer
    Dim PreviousYearStart As Date
    Dim ThisYearStart As Date
    Dim NextYearStart As Date
    Dim YearNum As Integer
     
    ThisYear = Year(AnyDate)
    ThisYearStart = YearStart(ThisYear)
    PreviousYearStart = YearStart(ThisYear - 1)
    NextYearStart = YearStart(ThisYear + 1)
    Select Case AnyDate
        Case Is >= NextYearStart
            ISOWeekNum = (AnyDate - NextYearStart) \ 7 + 1
            YearNum = Year(AnyDate) + 1
        Case Is < ThisYearStart
            ISOWeekNum = (AnyDate - PreviousYearStart) \ 7 + 1
            YearNum = Year(AnyDate) - 1
        Case Else
            ISOWeekNum = (AnyDate - ThisYearStart) \ 7 + 1
            YearNum = Year(AnyDate)
    End Select
     
    If IsMissing(WhichFormat) Then
        Exit Function
    End If
    If WhichFormat = 2 Then
        ISOWeekNum = CInt(Format(Right(YearNum, 2), "00") & _
        Format(ISOWeekNum, "00"))
    End If
     
    End Function
     
    Sub MiseEnForme()
    '
    ' MiseEnForme Macro
    ' Macro enregistrée le 13.06.2006 par Romande-Energie
    '
    '
    NomFichier1 = ActiveWorkbook.Name
    Workbooks.Open AdresseFichier2
    For I = Len(AdresseFichier2) To 1 Step -1
        If Mid$(AdresseFichier2, I, 1) = "\" Then Exit For
    Next
    NomFichier2 = Mid$(AdresseFichier2, I + 1)
     
     
    NiveauTension(1) = "BT"
    NiveauTension(2) = "5"
    NiveauTension(3) = "10"
    NiveauTension(4) = "13"
    NiveauTension(5) = "17"
    NiveauTension(6) = "20"
    NiveauTension(7) = "40"
    NiveauTension(8) = "60"
    NiveauTension(9) = "125"
    NiveauTension(10) = "220"
     
    CausePerturbation(0) = "Cause Inconnue"
    CausePerturbation(11) = "Orage, foudre"
    CausePerturbation(12) = "Vent, chute d'arbres, branche"
    CausePerturbation(13) = "Neige"
    CausePerturbation(19) = "Influence atmosph. : Autre"
    CausePerturbation(21) = "Tierce personne"
    CausePerturbation(22) = "Animaux"
    CausePerturbation(23) = "Abattage arbres, branches"
    CausePerturbation(24) = "Machines de chantier"
    CausePerturbation(25) = "Glissement de terrain, avalanche"
    CausePerturbation(27) = "Incendie, inondation"
    CausePerturbation(28) = "Accident de la circulation"
    CausePerturbation(29) = "Influence étrangère : Autre"
    CausePerturbation(81) = "Répercussion du propre réseau de même tension"
    CausePerturbation(82) = "Répercussion du propre réseau d'une autre tension"
    CausePerturbation(84) = "Répercussion du réseau d'un tiers d'une même tension"
    CausePerturbation(85) = "Répercussion du réseau d'un tiers d'une autre tension"
    CausePerturbation(86) = "Répercussion d'une installation d'un client privé"
    CausePerturbation(41) = "Fausse manoeuvre : Ouverture d'un sectionneur sous charge"
    CausePerturbation(42) = "Fausse manoeuvre : Mise à terre d'un équipement sous tension"
    CausePerturbation(43) = "Fausse manoeuvre : Mise sous tension d'un équipement mis à terre"
    CausePerturbation(44) = "Fausse manoeuvre : Erreur de commande"
    CausePerturbation(49) = "Fausse manoeuvre : Autre"
    CausePerturbation(73) = "Défaillance matériel"
    CausePerturbation(74) = "Mauvais montage"
    CausePerturbation(76) = "Sollicitation excessive"
    CausePerturbation(78) = "Vieillissement, corrosion"
    CausePerturbation(79) = "Défaillance matériel : Autre"
    CausePerturbation(50) = "Surcharge électrique"
    CausePerturbation(-1) = "Travaux programmés"
     
    NaturePerturbation(20) = "Défaut permanent à la terre"
    NaturePerturbation(58) = "Court-circuit avec mise à la terre"
    NaturePerturbation(59) = "Court-circuit sans mise à la terre"
    NaturePerturbation(80) = "Mise hors-tension du réseau d'alimentation amont"
    NaturePerturbation(0) = "Autres"
    NaturePerturbation(71) = "Par suite de dommage au matériel lui-même"
    NaturePerturbation(72) = "Ayant pour origine le non-fonctionnement d'un autre appareil"
    NaturePerturbation(73) = "Ayant pour origine une surcharge"
    NaturePerturbation(79) = "Fausse manoeuvre, autres"
     
    EffetPerturbation(11) = "Sans déclenchement d'un matériel d'équipement (terre permanente)"
    EffetPerturbation(14) = "Avec déclenchement définitif (Ex : Fusible MT, disjoncteur"
    EffetPerturbation(16) = "Avec RA non réussi et fermeture manuelle réussie"
    EffetPerturbation(17) = "Avec Ra non réussi et fermeture manuelle non réussie"
    EffetPerturbation(18) = "Avec RA non réussi sans essai de fermeture"
    EffetPerturbation(19) = "Défaillance du réseau d'alimentation amont"
     
    LieuPerturbation(901) = "Dans un poste RE"
    LieuPerturbation(999) = "Dans un poste tiers"
    LieuPerturbation(998) = "Dans un réseau non RE"
    LieuPerturbation(11) = "Poteaux bois"
    LieuPerturbation(12) = "Potelet BT sur toit"
    LieuPerturbation(13) = "Pylônes sans conducteur de garde"
    LieuPerturbation(14) = "Pylônes avec conducteur de garde"
    LieuPerturbation(15) = "Mâts tubulaires sans conducteur de garde"
    LieuPerturbation(16) = "Mâts tubulaires avec conducteur de garde"
    LieuPerturbation(17) = "Mâts béton sans conducteur de garde"
    LieuPerturbation(18) = "Mâts béton avec conducteur de garde"
    LieuPerturbation(21) = "Parafoudres ou sectionneur de ligne"
    LieuPerturbation(31) = "Câble reliant stations"
    LieuPerturbation(32) = "Câble reliant lignes aériennes"
    LieuPerturbation(33) = "Câble reliant lignes aériennes à une station"
    LieuPerturbation(34) = "Câble dans une station, dans un poste"
    LieuPerturbation(38) = "Câble reliant armoire BT"
    LieuPerturbation(39) = "Autre câble ou câble d'un client BT"
    LieuPerturbation(111) = "Dans une station aérienne"
    LieuPerturbation(113) = "Station blindée métallique (Panel, S&S, Creuset)"
    LieuPerturbation(115) = "Station blindée polyester (Peyer, Panel, CVE)"
    LieuPerturbation(110) = "Station béton (CVE, Béton, Rutsch, Gram)"
    LieuPerturbation(116) = "Station massive (Haute, G1-G3, Incorporée M1-M4)"
    LieuPerturbation(118) = "Station en sous-sol, en caverne"
    LieuPerturbation(199) = "Station privée (ex. SEB)"
    LieuPerturbation(902) = "Dans une armoire BT"
    LieuPerturbation(909) = "Fausse manoeuvre"
    LieuPerturbation(0) = "Lieu inconnu"
     
    NumColonne(0, 1) = "Nr"
    NumColonne(1, 1) = "Type d'avis"
    NumColonne(2, 1) = "Déclenchement le"
    NumColonne(3, 1) = "Durée hors service"
    NumColonne(4, 1) = "Site"
    NumColonne(5, 1) = "Poste"
    NumColonne(6, 1) = "Désignation de l'objet"
    NumColonne(7, 1) = "Niveau de tension"
    NumColonne(8, 1) = "Station MT/BT"
    NumColonne(9, 1) = "Cause de la perturbation"
    NumColonne(10, 1) = "Nature de la perturbation"
    NumColonne(11, 1) = "Effet de la perturbation"
    NumColonne(12, 1) = "Lieu de la perturbation"
    NumColonne(13, 1) = "Commune"
     
    Windows(NomFichier2).Activate
     
    '
    ' Recherche le numéro de la colonne où se trouve l'information
    '
     
    For C = 0 To 15
        For I = 1 To 80
            If Cells(2, I) = NumColonne(C, 1) Then
                NumColonne(C, 0) = I
                I = I + 100
            End If
        Next I
    Next C
     
    '
    ' Copie les données importées du livre d'équipe et vient les mettre en forme
    ' dans le fichier de debriefing
    '
     
    C = 3
    I = 3
    While Cells(C, 1) <> Empty
        NumAvis = Cells(C, NumColonne(0, 0))
        TypeAvis = Cells(C, NumColonne(1, 0))
            If TypeAvis = "Avis de perturbation" Then
               TypeAvis = "AP"
            Else
               TypeAvis = "AT"
            End If
        Annee = Year(Cells(C, NumColonne(2, 0)))
        Datede = CDate(Cells(C, NumColonne(2, 0)))
        Week = ISOWeekNum(Cells(C, NumColonne(2, 0)))
        DureeHorsService = Cells(C, NumColonne(3, 0))
        Site = Cells(C, NumColonne(4, 0))
        Poste = Cells(C, NumColonne(5, 0))
        DepartMT = Cells(C, NumColonne(6, 0))
        NivTens = Cells(C, NumColonne(7, 0))
        Station = Cells(C, NumColonne(8, 0))
        CauseP = Cells(C, NumColonne(9, 0))
        NatureP = Cells(C, NumColonne(10, 0))
        EffetP = Cells(C, NumColonne(11, 0))
        LieuP = Cells(C, NumColonne(12, 0))
        Commune = Cells(C, NumColonne(13, 0))
     
        Windows(NomFichier1).Activate
     
        Existe = False
        While Cells(I, 1) <> Empty
            If Cells(I, 1) = NumAvis Then
                Existe = True
            End If
            I = I + 1
        Wend
     
        If Existe = False Then
            Cells(I, 1) = NumAvis
            Cells(I, 2) = TypeAvis
            Cells(I, 3) = Annee
            Cells(I, 4) = Week
            Cells(I, 5) = Datede
            Cells(I, 6) = DureeHorsService / 24
            Cells(I, 8) = Site
            Cells(I, 9) = Poste
            Cells(I, 10) = DepartMT
            Cells(I, 12) = NiveauTension(NivTens)
            Cells(I, 13) = Commune
            Cells(I, 14) = Station
            Cells(I, 17) = CausePerturbation(CauseP)
            Cells(I, 18) = NaturePerturbation(NatureP)
            Cells(I, 19) = EffetPerturbation(EffetP)
            Cells(I, 20) = LieuPerturbation(LieuP)
        End If
        I = 3
        C = C + 1
        Windows(NomFichier2).Activate
    Wend
     
        Windows(NomFichier2).Activate
        ActiveWorkbook.Close savechanges:=False
     
        Windows(NomFichier1).Activate
    End Sub
    Merci

  6. #6
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Je te cite texto l'aide de Microsoft car je n'ai pas trop le temps là

    Cet exemple montre comment afficher la boîte de dialogue Ouvrir, dont le filtre de fichier est défini en fichiers texte. Si l'utilisateur choisit un nom de fichier, le code affiche ce nom de fichier dans une boîte de message.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fileToOpen = Application _
        .GetOpenFilename("Text Files (*.txt), *.txt")
    If fileToOpen <> False Then
        MsgBox "Open " & fileToOpen
    End If
    Cette méthode permet de sélectionner un fichier dans l'arborescence avec filtre ou non. Je te renvoie à l'aide complète sur le sujet.

    Par contre si tu as récupéré ce code, il a du déjà fonctionner, donc l'objet SafrcFileDlg.FileOpen doit exister quelque part... (Activer une référence, classe personnalisée, etc.)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Problème résolu avec le code suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'Cette macro affiche la boîte de dialogue pour sélectionner le fichier source
    Sub AdressFich()
    AdresseFichier2 = OuvrirAvecCDWin7("*", ActiveWorkbook.Path, "Sélection du fichier contenant les avis de perturbation CareOffice")
    ChoixFichier.AdressFichierAvis = AdresseFichier2
    End Sub

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

Discussions similaires

  1. [Toutes versions] erreur '429' le composant ActiveX ne peut pas créer l'objet.,
    Par sidisadmir dans le forum Macros Access
    Réponses: 1
    Dernier message: 30/04/2013, 18h39
  2. erreur '429' le composant ActiveX ne peut pas créer l'objet.
    Par sidisadmir dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/04/2013, 19h52
  3. [XL-2007] Erreur 429 Un composant ActiveX ne peut pas créer d'objet
    Par mouftie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/04/2013, 15h51
  4. [Débutant] Erreur '429' le composant activeX ne peut pas créer l'objet.
    Par sidisadmir dans le forum ADO.NET
    Réponses: 4
    Dernier message: 23/11/2012, 16h51
  5. Erreur '429' le composant activex ne peut pas créer l'objet
    Par sidisadmir dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 02/11/2012, 10h19

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