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 :

La méthode Delete de l'objet _Worksheet a échoué


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut La méthode Delete de l'objet _Worksheet a échoué
    Bonjour,
    J'ai un message fréquent quand j'exécute ma macro: "Excel has stopped working". Le message n'apparait pas à chaque fois, parfois la macro s'exécute correctement. Ne sachant pas d'ou provenait l'erreur, j'ai exécuté ligne par ligne ma macro et parfois, j'obtiens le message "Erreur d'exécution -2147417848 (800 10 108) La méthode Delete de l'objet _Worksheet a échoué" lorsque j'arrive à la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Mise à jour.xlsm").Worksheets("Entrée Indicateur du service").Delete
    Voici mon code au complet:
    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
    Sub Mise_à_jour()
     
    Dim Chemin As String
    Dim Chemin2 As String
    Dim EntréeDonnées As String
    Dim EntréeDonnées2 As String
     
     
    Chemin = Worksheets("Mise à jour").Range("C42").Value
    EntréeDonnées = Worksheets("Mise à jour").Range("C44").Value
    Chemin2 = Worksheets("Mise à jour").Range("C118").Value
    EntréeDonnées2 = Worksheets("Mise à jour").Range("C120").Value
     
    'Copie l'onglet "paramètres" et "Entrée Indicateur du service" du fichier d'entrées de données au fichier mise à jour
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=(Chemin & EntréeDonnées)
    Sheets("Parametres").Select
     
     
    ActiveSheet.Unprotect ("AAA")
    Rows("110").EntireRow.Hidden = False
    Worksheets("Entrée Indicateur du service").Select
    ActiveSheet.Unprotect ("AAA")
     
    Sheets("Parametres").Copy Before:=Workbooks("Mise à jour.xlsm").Sheets(1)
    Windows(EntréeDonnées).Activate
    Sheets("Entrée Indicateur du service").Select
    Sheets("Entrée Indicateur du service").Copy Before:=Workbooks("Mise à jour.xlsm").Sheets(2)
    Workbooks(EntréeDonnées).Close False
    Application.DisplayAlerts = True
     
     
    'Remplace le fichier d'entrée des données par la nouvelle version du site de collaboration
    fichier = "http://sharepoint.rh.ca/100/558645/Shared Documents/Entrées_de_données_TB_opérationnel_1_1(1) - Test.xlsm"
     
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=fichier
    ActiveWorkbook.SaveAs Filename:=Chemin & EntréeDonnées, FileFormat:= _
    xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
    , CreateBackup:=False
     
    Application.DisplayAlerts = True
     
     
    Windows(EntréeDonnées).Activate
    Worksheets("Parametres").Select
    ActiveSheet.Unprotect ("AAA")
    Rows("110").EntireRow.Hidden = False
    Worksheets("Entrée Indicateur du service").Select
    ActiveSheet.Unprotect ("AAA")
     
    Windows("Mise à jour.xlsm").Activate
    Worksheets("Parametres").Select
    Range("B2:B19").Select
    Selection.Copy
     
    Windows(EntréeDonnées).Activate
    Worksheets("Parametres").Select
        Range("b2:b19").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    Windows("Mise à jour.xlsm").Activate
    Range("c25:c26").Select
        Selection.Copy
     
        Windows(EntréeDonnées).Activate
     
        Range("c25:c26").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    Windows("Mise à jour.xlsm").Activate
    Range("c30:c34").Select
        Selection.Copy
     
        Windows(EntréeDonnées).Activate
     
        Range("c30:c34").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    Windows("Mise à jour.xlsm").Activate
    Range("c37").Select
        Selection.Copy
     
        Windows(EntréeDonnées).Activate
     
           Range("c37").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
     
    Windows("Mise à jour.xlsm").Activate
     
    Range("c110").Select
        Selection.Copy
     
        Windows(EntréeDonnées).Activate
     
           Range("c110").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Rows("110").EntireRow.Hidden = True
     
     
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFormattingCells:=True, Password:="AAA"
     
    'Copie-colle les informations de l'onglet "Entrée Indicateur du service" dans la nouvelle version d'entrée des données
     
    Windows("Mise à jour.xlsm").Activate
    Worksheets("Entrée Indicateur du service").Select
    Range("A1:AV140").Select
        Selection.Copy
     
        Windows(EntréeDonnées).Activate
        Worksheets("Entrée Indicateur du service").Select
        Range("a1").Select
            Selection.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFormattingCells:=True, Password:="AAA"
     
     
    Windows("Mise à jour.xlsm").Activate
     
     
     
    Application.DisplayAlerts = False
    Workbooks("Mise à jour.xlsm").Worksheet("Parametres").Delete
    Application.DisplayAlerts = True
     
    Application.DisplayAlerts = False
    Workbooks("Mise à jour.xlsm").Worksheets("Entrée Indicateur du service").Delete
    Application.DisplayAlerts = True
     
    'Copie l'onglet "paramètres" du tableau de bord
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=(Chemin2 & EntréeDonnées2)
    Sheets("Parametres").Select
     
    ActiveSheet.Unprotect ("AAA")
    Rows("110").EntireRow.Hidden = False
     
    Sheets("Parametres").Copy Before:=Workbooks("Mise à jour.xlsm").Sheets(1)
    Windows(EntréeDonnées2).Activate
    Workbooks(EntréeDonnées2).Close False
    Application.DisplayAlerts = True
     
    'Remplace le tableau de bord par la nouvelle version du site de collaboration
    fichier2 = "http://sharepoint.rh.ca/100/558645/Shared Documents/TABLEAU_DE_BORD_OPÉRATIONNEL_FR_1_1(1) - test.xlsm"
     
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=fichier2
    ActiveWorkbook.SaveAs Filename:=Chemin2 & EntréeDonnées2, FileFormat:= _
    xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
    , CreateBackup:=False
     
    Application.DisplayAlerts = True
     
    Windows(EntréeDonnées2).Activate
    Worksheets("Parametres").Select
    ActiveSheet.Unprotect ("AAA")
    Rows("110").EntireRow.Hidden = False
     
    Windows("Mise à jour.xlsm").Activate
    Worksheets("Parametres").Select
    Range("C110").Select
    Selection.Copy
     
    Windows(EntréeDonnées2).Activate
    Worksheets("Parametres").Select
        Range("C110").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Rows("110").EntireRow.Hidden = True
     
     ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowFormattingCells:=True, Password:="AAA"
     
     
    Windows("Mise à jour.xlsm").Activate
    Sheets("Parametres").Select
    Application.DisplayAlerts = False
    Workbooks("Mise à jour.xlsm").Worksheets("Parametres").Delete
    Application.DisplayAlerts = True
     
    'Pour ramener les usagers à la feuille "Entrée Indicateur du service"
    Windows(EntréeDonnées).Activate
    Worksheets("Entrée Indicateur du service").Select
     
     
     
    End Sub
    À partir d'un fichier "Mise à jour", j'ouvre un fichier "Entrée de données" à l'aide de la macro, je copie certains onglets: "Parametres" et "Entrée Indicateur de service" du fichier "Entrée de données" au fichier "Mise à jour". Cela me permet de conserver l'information dont j'aurai besoin plus tard. Ensuite, je vais ouvrir un fichier qui se trouve sur un intranet. Ce fichier dans l'intranet est un fichier que nous allons améliorer fréquemment et pour que les usagers aient toujours la dernière version, la macro télécharge le fichier et l'enregistre sous le fichier que les usagers ont déjà dans leur compte. Ensuite, la macro copie l'information des onglets "Parametres" et "Entrée Indicateur du service" du fichier "Mise à jour" dans la nouvelle version du fichier "Entrée de données". Ensuite, je supprime les onglets "Parametres" et "Entrée Indicateur du service" du fichiers "Mise à jour". Je pense que c'est au moment de supprimer les onglets que ça pose problème. C'est souvent au moment d'exécuter la ligne du code qui supprime les onglets que j'ai un message d'erreur, mais je ne sais pas comment l'arranger. J'ai déjà essayé plusieurs fois de modifier la ligne, mais j'ai toujours le même problème.

    Toute suggestion est la bienvenue. Je suis à court d'idée pour résoudre ce problème.

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Par défaut
    Bonjour

    Pour commencer a y voir +clair, ça serait bien de préciser les classeurs avec "SET", par exemple
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim myWbk1 as Workbook
    Workbooks.Open Filename:=(Chemin & EntréeDonnées)
    Set  myWbk =ActiveWorkbook
    myWbk.Sheets("Parametres").Select
    A faire à chaque ouverture de fichier (myWbk2, etc...), et on n'oublie pas de fermer toutes les variables avecA chaque fois qu'on "joue" avec plusieurs classeurs, celui par défaut n'est pas forcément celui qu'on espère.
    A + forte raison si on va ouvrir un intranet
    Je parle avec beaucoup de vécu sur le sujet.

    Et il faut peut-être d'abord sélectionner la feuille puis de la supprimer dans un deuxième temps

    Cordialement

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 55
    Par défaut
    Merci! Je vais essayer ca. C'est déjà un début.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2014, 09h25
  2. La méthode"Visible" de l'objet'_Worksheet' a échoué
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/12/2010, 18h57
  3. erreur La méthode 'Range' de l'objet '_Global' a échoué
    Par mahboub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/11/2006, 20h46
  4. la méthode 'connection' de l'objet '_currentProject' a échoué
    Par floysand dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/09/2006, 12h14
  5. [VBA-E]La méthode 'Range' de l'objet '_Global' a échoué
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/02/2006, 16h00

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