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 :

excel a cessé de fonctionner


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur étude
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur étude
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut excel a cessé de fonctionner
    Bonjour cher ami développeur,

    Je viens vers vous pour un problème relatif à excel je m'explique.
    J'ai créé une macro me permettant de déplacer un onglet excel dans un autre classeur lorsque l'utilisateur clique sur un bouton.
    Mon problème est que lors de l'activation de cette macro, il arrive qu'excel plante (on va dire une fois sur deux) et affiche le message

    "excel a cessé de fonctionner". il cherche alors une solution puis me répare le fichier mais je souhaiterais que cela ne se produise plus et je ne sais pas du tout comment m'y prendre.

    Pouvez vous m'éclairer ?
    Si besoin voici le code que j'ai rédigé

    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
    Sub archivage()
    Application.ScreenUpdating = False
    Application.CutCopyMode = False
     
    'si l'utilisateur confirme vouloir archiver l'affaire
        If MsgBox("Etes-vous certain de vouloir archiver cette affaire ?", vbYesNo, "Demande de confirmation") = vbYes Then
    'on ouvre le fichier archive
    Set archive = Application.Workbooks.Open("F:\Pôles études\Cellule MDP\LDR\test automatisation de la VA\archive DDB.xlsm")
    'on vient déplacer l'onglet juste avant l'onglet compiler
    ThisWorkbook.ActiveSheet.Move Before:=archive.Sheets("Compiler Va")
    'on inscrit T dans la cellule G109 puis on remplace les données présentes par leur valeur (disparition des formules)
    ActiveSheet.Cells(109, 7) = "T"
    Range("A1:NO150").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    'on referme le fichier archive
    archive.Close True 'Ferme en sauvant.
    MsgBox ("Projet archivé")
        End If
     
     
    Application.CutCopyMode = True
    Application.ScreenUpdating = True
     
    End Sub

  2. #2
    Membre éclairé Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Points : 758
    Points
    758
    Par défaut
    Bonjour,

    Pour des raisons de clarté, est ce que tu peux poster ton code entre balise # ([CODE], [ /CODE]) ?

    Sinon j'ai du mal avec ta méthode Copier/Coller, tu n'est pas obliger de faire un "Select" ça alourdis ta procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("A1:NO150").Select
    Selection.Copy
     
    'Remplace par :
     
    Worksheets("MaFeuille").Range("A1:NO150").Copy
    Ensuite, quand tu écris une Range, il faut lui spécifier d'ou vient la Range, ça évite des erreurs.

    Après je ne sais pas trop d'ou vient ton problème, mais je penche pour une erreur de mémoire, suite à plein de copy/paste. Il faut vider la mémoire, histoire de pas faire planter tous le bazar.

    A copier dans un nouveau module, ou en tête de module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function CloseClipboard Lib "user32" () As Long
    Private Declare Function EmptyClipboard Lib "user32" () As Long
     
    Sub Clear_Clipboard()
        OpenClipboard 0
        EmptyClipboard
        CloseClipboard
    End Sub
    Et tu appelle ta procédure Clear_Clipboard à chaque fin d'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub archivage()
    Application.ScreenUpdating = False
    Application.CutCopyMode = False
     
    '[...]
     
    Application.CutCopyMode = True
     
    Call Clear_Clipboard
    Application.ScreenUpdating = True
     
    End Sub
    J'espère que ça t'aideras !
    Citation Envoyé par Oscar Wilde
    Je déteste les discussions: elles vous font parfois changer d'avis.

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour, bonjour !

    S'il n'y a besoin que de copier les valeurs, voir alors cette discussion

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur étude
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur étude
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Tout d'abord merci à vous deux pour votre retour.
    J'ai essayé ton code Nico Chg mais le problème persiste. J'ai l'impression que c'est vraiment le fait de placer la feuille qui pose problème
    Marc L tu as raison sur ce point. Toutefois il ne s'agis pas uniquement d'un copier coller car l'onglet doit disparaitre de son classeur d'origine et s'insérer dans le classeur archive

  5. #5
    Membre éclairé Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Points : 758
    Points
    758
    Par défaut
    Tu as peut être des pistes ici et .
    Citation Envoyé par Oscar Wilde
    Je déteste les discussions: elles vous font parfois changer d'avis.

Discussions similaires

  1. [XL-2007] Problème macro VBA "Excel a cessé de fonctionner"
    Par MAD61141 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/01/2014, 20h02
  2. [XL-2007] Excel a cessé de fonctionner
    Par a.ouah dans le forum Excel
    Réponses: 3
    Dernier message: 13/07/2013, 16h14
  3. [XL-2010] Excel a cessé de fonctionner --> Automation ?
    Par Mattrois dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/07/2013, 11h54
  4. Excel a cessé de fonctionner: pb de time out?
    Par quarkup31 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/02/2013, 22h23
  5. [AC-2007] Erreur Excel a cessé de fonctionner
    Par tibofo dans le forum VBA Access
    Réponses: 0
    Dernier message: 09/09/2010, 11h53

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