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'exécution'-2147417848 (80010108)'


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Par défaut Erreur d'exécution'-2147417848 (80010108)'
    Bonjour a vous tous

    Voila je suis une véritable tanche sous excel .

    J'utilise des fichiers excel développer par une autre personne.

    Jusqu'à présent je n'avais pas eu de soucis mais la j ai le message suivant :
    Erreur d'exécution'-2147417848 (80010108)'
    Erreur Automation
    L'objet invoqué s'est déconnecté de ses clients.
    Donc quand je vais sous Visual Basic il m indique la ligne ci-dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Selection.Delete Shift:=xlToLeft
    Voulez vous toutes la Macro ?

    Help

    Merci par avance pour votre aide

  2. #2
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir,

    Surement une mauvaise selection au moment d'executer ton code, regarde la selection en cours dans excel au moment du bug.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut koala94s et le forum
    Voulez vous toutes la Macro ?
    Puisque c'est demandé si gentillement, on ne peut qu'aquiécer
    Et le but de la macro en prime, SVP

    Et bienvenue sur le forum.

    Ta suppression est dans une boucle ?

    Juste un A parté : tu as une section réservée au VBA. Il me semble qu'à l'avenir, il serait plus judicieux d'y mettre les problèmes concernant les macros, non ?
    A+

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Par défaut
    oups désoler si je me suis tromper de forum

    Le but de la macro est la suivante :

    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
    '***************************************************************************************************************
    '    on contrôle des noms de colonnes et les mets dans le bon ordre et on supprime les inutiles
    '***************************************************************************************************************
     
    Sheets(1).Select    ' les données sont dans la feuille 1 en temps normal...en fait la premiere feuille du classeur
     
    Range("A1").Select                                      ' en a1
    Columns("A:F").Select                                   ' on selectionne les 6 premieres colonnes
    Selection.Insert Shift:=xlToRight                       ' on y insere 6 colonnes vides
    Range("A1").Select                                      ' on se remet en A1
     
    LaColonne = 7                                          ' on commence a la colonne 7 car on a les 6 premieres colonnes vides
    CtrlChamp = Cells(LaLigne, LaColonne).Value             ' on contrôle le nom du champs courant
    While CtrlChamp <> ""                                   ' on défile la premiere ligne et tant que l'on a des libélés de champs
     
                If CtrlChamp = Nom_du_Champ_01 Then
                    chpTaskNo1 = LaColonne
                    Columns(chpTaskNo1).Select                 'on selectionne la colonne source
                    Selection.Cut                           ' on coupe les données
                    Columns(1).Select                       ' on selectionne la cellule destination la une
                    ActiveSheet.Paste                       ' on colle les donnees copiées en 1
                    Columns(LaColonne).Select               ' on selectionne la colonne source que l'on vient de couper c.a.d vider
                    Selection.Delete                        ' on supprime la colonne vide
                    LaColonne = LaColonne - 1
                End If
     
                If CtrlChamp = Nom_du_Champ_02 Then 'Idem pour le nom de SSA
                    chpSsa2 = LaColonne
                    Columns(chpSsa2).Select
                    Selection.Cut
                    Columns(2).Select                       ' on déplace en  2
                    ActiveSheet.Paste
                    Columns(LaColonne).Select
                    Selection.Delete
                    LaColonne = LaColonne - 1
                End If
                                                            ' on fait la même chose pour ITEM
                If CtrlChamp = Nom_du_Champ_03 Then
                    chpItem3 = LaColonne
                    Columns(chpItem3).Select
                    Selection.Cut
                    Columns(3).Select
                    ActiveSheet.Paste                       ' déplacer/insérer item en 3
                    Columns(LaColonne).Select
                    Selection.Delete
                    LaColonne = LaColonne - 1
                End If
                                                            ' on fait la même chose pour la LP
                If CtrlChamp = Nom_du_Champ_04 Then
                    chLP4 = LaColonne
                    Columns(chLP4).Select
                    Selection.Cut
                    Columns(4).Select
                    ActiveSheet.Paste                       ' déplacer/insérer chLP4 en 4 eme colonne
                    Columns(LaColonne).Select
                    Selection.Delete
                    LaColonne = LaColonne - 1
                End If
                                                            ' on fait la même chose pour le champ Pack Hors Pack
                If CtrlChamp = Nom_du_Champ_05 Then
                    chBusinessAera5 = LaColonne
                    Columns(chBusinessAera5).Select
                    Selection.Cut
                    Columns(5).Select
                    ActiveSheet.Paste                       ' déplacer/insérer chBusinessAera5 en 5 eme colonne
                    Columns(LaColonne).Select
                    Selection.Delete
                    LaColonne = LaColonne - 1
                End If
                                                            ' on fait la même chose pour COMENTAIRE DE CLôture
                If CtrlChamp = Nom_du_Champ_06 Then
                    chCloseClosingComments6 = LaColonne
                    Columns(chCloseClosingComments6).Select
                    Selection.Cut
                    Columns(6).Select
                    ActiveSheet.Paste                       ' déplacer/insérer chCloseClosingComments6 en 6 eme colonne
                    Columns(LaColonne).Select
                    Selection.Delete
                    LaColonne = LaColonne - 1
                End If
     
        LaColonne = LaColonne + 1                           ' pour aller à la colonne suivante
        CtrlChamp = Cells(LaLigne, LaColonne).Value         ' on regarde la colonne suivante pour continuer la boucle si y'a qqchose
     
    Wend            ' fin de la boucle de recherche des champs
     
        Range("A1").Select
        Columns("G:BZ").Select                              ' on garde 6 colonnes seulement
        Selection.Delete Shift:=xlToLeft
        Range("A1").Select

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut koala94s et le forum
    désolé si je me suis trompé de forum
    On s'en fout du forum sur lequel tu poste : c'est pour que tu ais des réponses rapidement. Les "macroyistes" travaillent d'abord sur le forum VBA et après, s'ils ont le temps, il vont voir le forum Excel (enfin, c'est ce que je fais). Tu auras plus de réponses pour une macro, et plus vite, si tu postes sur l'autre. Quand tu es sûr que c'est du VBA, poste sur le bon

    J'ai refait ta macro en travaimmant différemment (par rapport à ce que j'en ai compris) :
    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
    Sub test()
    Dim X As Integer
    Dim y As Integer
    Dim Nom_du_Champ_01 As String
    Dim Nom_du_Champ_02 As String
    Dim Nom_du_Champ_03 As String
    Dim Nom_du_Champ_04 As String
    Dim Nom_du_Champ_05 As String
    Dim Nom_du_Champ_06 As String
    ' pour le test *******************************
    Nom_du_Champ_01 = "a"              '*********
    Nom_du_Champ_02 = "b"              '*********
    Nom_du_Champ_03 = "c"              '*********
    Nom_du_Champ_04 = "d"              '*********
    Nom_du_Champ_05 = "e"              '*********
    Nom_du_Champ_06 = "f"              '*********
    ' pour le test *******************************
    With Sheets(1)      'Mise en préfixe de la feuille
        .Columns("A:F").Insert Shift:=xlToRight     'inserer 6 colonnes
        ' pour le test *******************************
        .[A1] = Nom_du_Champ_01              '*********
        .[B1] = Nom_du_Champ_02              '********* le titre des colonnes est
        .[C1] = Nom_du_Champ_03              '********* en ligne 1 [A1] est une autre
        .[D1] = Nom_du_Champ_04              '********* notation de cells(1, "A") ou
        .[E1] = Nom_du_Champ_05              '********* Range("A1") ou Cells(1,1)
        .[F1] = Nom_du_Champ_06              '*********
        ' pour le test *******************************
        For X = 1 To 6      'pour x=1 jusqu'à 6 (A à F
            For y = 7 To 12 'pour y=7 jusqu'à 13 (G à L)
                If .Cells(1, X) = .Cells(1, y) Then 'si les colonnes on le même titre
                    .Columns(y).Copy .Columns(X)    'on copie la colonne
                    Exit For                        'on sort de la boucle
                End If
            Next y
        Next X
        .Columns("G:L").Delete                      'on supprime les colonnes
    End With
    End Sub
    Elle est évidemment à adapter. Mais comme je ne sais pas ce qu'est Nom_du_Champ_01, je ne peux proposer de solution(s) plus intéressante(s).

    La grande différence, avec la tienne (hormis le test des champs) est que je copies déjà les colonne, et seulement quand tout est fini, j'efface.
    Je n'utilise pas de Select, souvent source d'ennuis et ralentisseur d'exécution.

    Pour ta macro, quelle est la ligne de code en défaut (t'en as 6 identiques) ?
    A+

  6. #6
    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
    Par défaut
    Sans modifier le reste de ton code, tu peux aussi corriger la source de l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(LaColonne).EntireColumn.Delete

Discussions similaires

  1. [VI-2007] Erreur d'exécution '-2147417848 (80010108)'
    Par Ariaar dans le forum Visio
    Réponses: 1
    Dernier message: 05/12/2012, 11h53
  2. Excel 2010 : Erreur d'exécution -2147417848(80010108)
    Par AF_2.8 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2011, 19h55
  3. erreur d'exécution 2147417848(80010108)
    Par VELO1222 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/01/2011, 16h50
  4. erreur d'exécution '-2147417848' (80010108)
    Par atoffoli75 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/08/2008, 11h09
  5. Erreur d'exécution '-2147417848 (80010108): Erreur Automation
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/05/2007, 18h09

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