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'execution automation [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 24
    Par défaut Erreur d'execution automation
    Bonjour à tous,

    j'ai une erreur d'execution "automation" '-2147221080 (800401a8)' dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        'supprime les feuilles des jours
    For Each Feuille In Worksheets
        For Each Machine In Array("U1", "U2", "U3", "U4", "F2")
            For Each Cherche In Array("SAM", "DIM", "LUN", "MAR", "MER", "JEU", "VEN")
                If Left(InStr(1, Feuille.Name, Cherche, 1), 3) > 0 Then
                    Application.DisplayAlerts = False
                    Worksheets(Feuille.Name).Delete
                    Application.DisplayAlerts = True
                End If
            Next Cherche
        Next Machine
    Next Feuille
    L'erreur me montre la ligne avec la commande If(Left(InStr...

    Je ne connais pas ce type d'erreur, et je vois où peut être mon erreur.

    Merci d'avance pour vos éclaircicments...

    AD

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    effectivement le problème viens de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Left(InStr(1, Feuille.Name, Cherche, 1), 3) > 0 Then
    car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InStr(1, Feuille.Name, Cherche, 1)
    renvoie le n° de caractète ou la chaine à été trouvé ce qui reviendrait à écrire si la chaine cherché est trouvé au 5eme caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Left(5 , 3) > 0 Then
    ne connaissant pas comment sont formatés tes noms de feuille je n'ai pas de solution à te donner.

    si tu n'arrive pas à trouver donne nous un exemple de nom de feuille et ce que tu veux extraire de ce nom.

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 24
    Par défaut
    Bonjour,

    mes feuilles sont nommées :
    LUNDI 15-06
    MARDI 16-06
    ...
    DIMANCHE 22-06

    Etant donné que les feuilles sont supprimées chaque semaine, seul le nom du jour reste identique de semaines en semaines. C'est pourquoi je souhaite trouver le nom de feuille qui commence soit par : "LUN", "MAR", ..., "DIM"; sélectionner cette feuille, et la supprimer.

    En espérant avoir été un peu plus clair

    Bonne journée

    AD

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    Je ne sais pas à quoi te sert la boucle machine mais c'est elle la cause du message d'erreur.

    Quand tu as trouvé une correspondance la feuille est supprimé et du coup l'objet workSheet Feuille contient une erreur automation et comme tu reboucle avec Each machine ça coince.

    j'ai modifié le code et mis la boucle machine en commentaire.

    Fais un test et si tu as réélement besoin de la boucle machine on trouvera une solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Jours As String
    'supprime les feuilles des jours
    Jours = "SAM DIM LUN MAR MER JEU VEN"
    For Each feuille In Worksheets
      'For Each machine In Array("U1", "U2", "U3", "U4", "F2")
        If InStr(1, Jours, UCase(Left(feuille.Name, 3))) > 0 Then
          Application.DisplayAlerts = False
          Worksheets(feuille.Name).Delete
          Application.DisplayAlerts = True
        End If
      'Next machine
    Next feuille
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 24
    Par défaut
    Merci, ca fonctionne.

    En effet, ma boucle "machine" ne servait à rien ici.

    Je comprends mieux l'action de la fonction InStr!

    Merci encore, bonne journée

    AD

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/02/2008, 14h25
  2. [ERREUR D'EXECUTION] Segmentation Fault
    Par CestPasMoi dans le forum C++
    Réponses: 3
    Dernier message: 26/11/2005, 17h38
  3. Réponses: 3
    Dernier message: 03/11/2005, 18h41
  4. [LDAP][Interface Winldap.h] Erreur d'execution
    Par -=Spoon=- dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 10/03/2005, 17h10
  5. [javamail] erreur d'execution
    Par bibx dans le forum API standards et tierces
    Réponses: 11
    Dernier message: 05/12/2003, 11h04

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