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 :

Instructions qui arrête le code de façons inexpliquées [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur polyvalent
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur polyvalent

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Par défaut Instructions qui arrête le code de façons inexpliquées
    Bonjour à tous,

    Je rencontre un problème un peu particulier. J'avais réaliser une macro qui fonctionnait normalement et puis d'un seul coup en changent deux trois lignes de code mon fichier excel se retrouve comme "corrompu" et ma macro s’arrête sur les instructions qui modifient la feuille. Même en remettant les anciennes lignes de codes, ça ne résout pas le problème. J'avais déjà rencontrer ce problème et je l'avais solutionner en recréant un nouveau fichier avec un nouveau xla.

    Pour tester si le problème provenais bien du fichier et non du XLA j'ai réaliser une macro rappide de test afin de tester les expression qui faisait planter le programme. J'ai placé cette macro dans un module du fichier xlsm et pas celui du XLA. et le résultat est le suivant : les instructions ActiveSheet.Rows(28).Insert, ActiveSheet.Rows(28).Delete arrêtent le code. L'instruction
    ActiveSheet.Name = "Test" et ActiveSheet.copy before:= ActiveSheet fonctionne lorsque elle sont utilisée séparément mais elle arrêtent le code quand elles sont utilisée à la suite l'une de l'autre. Voici le code que j'ai réalisé pour tester.

    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
     
     
    Sub test()
     
        ActiveSheet.Rows(28).Insert '-NOK
        ActiveSheet.Rows(28).Delete '-NOK
        ActiveSheet.Rows(28).Select '-OK
     
        'Les deux vont séparémént mais quand elle sont l'une a la suite de l'autre elles arrète le code
        ActiveSheet.Copy before:=ActiveSheet
        ActiveSheet.Name = "Part2"
     
        MsgBox "test"
     
    End Sub
    Pour info j'ai déjà rédiger une première question hier où j'avais mis une grande partie de mon code mais comme j'ai un peu mieux cerné mon problème je me suis dit qu'il était opportun d'en créer une nouvelle. Voici le lien :
    https://www.developpez.net/forums/d1...sage-d-erreur/

    Merci d'avance

  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

    Je ne joue jamais au ping-pong entre deux discussions.

    Le bout de code que tu montres-là fonctionne (fait ce qu'il dit vouloir faire) sans faille et ne provoque aucun blocage si aucune protection n'en empêche l'exécution.
    Précisions (sait-on jamais) : une messagebox ouverte empêche toute continuation tant qu'elle l'est. Idem pour les messages d'alerte (si tu veux créer une feuille sous un nom déjà existant)

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur polyvalent
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur polyvalent

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Par défaut
    Bonjour Unparia,

    Tout d'abord merci pour ta réponse

    Justement c'est la que réside mon problème c'est que ce code doit normalement fonctionne. Et en effet je viens, d'essayer ce petit code de test en enlevant la référence à mon XLA et le code fonctionne sans problème... Il s'agit donc d'une ligne dans mon XLA qui fait que l'exécution s'arrête sans prévenir.

    Tu n'aurais pas une idées sur la raison qui provoquerai un arrêt intempestif sur les lignes qui agisse sur la structure des feuilles ou du classeur (Insert, Delete, Move .... ou renommer une feuille)
    Comme ça je dirai que c'est parce que Le code perd une référence et donc il ne sait plus ou il est mais je ne m'explique pas pourquoi

  4. #4
    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
    Tu n'aurais pas une idées sur la raison qui provoquerai un arrêt intempestif sur les lignes qui agisse sur la structure des feuilles ou du classeur (Insert, Delete, Move .... ou renommer une feuille)
    Comme ça je dirai que c'est parce que Le code perd une référence et donc il ne sait plus ou il est mais je ne m'explique pas pourquoi
    Aucune sans tout voir.
    Une seule chose est certaine :
    J'ai placé cette macro dans un module du fichier xlsm et pas celui du XLA. et le résultat est le suivant : les instructions ActiveSheet.Rows(28).Insert, ActiveSheet.Rows(28).Delete arrêtent le code. L'instruction
    ActiveSheet.Name = "Test" et ActiveSheet.copy before:= ActiveSheet fonctionne lorsque elle sont utilisée séparément mais elle arrêtent le code quand elles sont utilisée à la suite l'une de l'autre
    Ce que j'ai mis en rouge (et par voie de conséquence ton code) ne sont en aucun cas responsables. Et là s'arrête donc pour moi le traitement de la présente discussion.

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur polyvalent
    Inscrit en
    Juillet 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur polyvalent

    Informations forums :
    Inscription : Juillet 2017
    Messages : 10
    Par défaut
    En effet, je vais clôturer cette discussion tout en sachant que le problème n'est pas identifier. Je ne sais donc pas si je dois la spécifier comme étant résolue ou non ?

  6. #6
    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
    Cette difficulté (ce n'en était d'ailleurs pas une, du moins celle exposée) étant résolue --->> discussion à libérer en effet (Tag RESOLU, oui).

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

Discussions similaires

  1. [Python 3.X] Programme simple qui s'emballe de façon inexpliqué
    Par trapp dans le forum Général Python
    Réponses: 5
    Dernier message: 05/07/2015, 15h46
  2. Comment utiliser des instructions SSE2 dans un code c++?
    Par alexIsBack dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 22/02/2006, 19h10
  3. [PHP-JS] pasteHTML qui transforme le code
    Par jibouze dans le forum Langage
    Réponses: 1
    Dernier message: 28/10/2005, 17h36
  4. batch qui execute du code
    Par fbu78 dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2005, 22h31

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