Excel qui plante

Bonjour à tous,

je me tourne vers vous

j'ai un fichier excel contenant des macros celui ci fonctionne bien sur mon pc mais lorsque je le met sur le pc de mon boulot mes macro fonctionne jusqu'a un certains temps et sa me met une fenetre excel a cessé de fonctionner comment remedier a ce probleme

merci d'avance pour votre aide

bonjour

le fichier serais très utile dans des cas pareils!

a vous relire

Bonsoir,

merci déjà pour ta réponse

fichier avec beaucoup de données confidentielle mais je pourrais éventuellement posté la macro.

le soucis étant que aucune erreur sur mon pc perso chez moi et quand je le lance au boulot le fichier fonctionne bien jusqu'a a un moment ou j'ai la fenêtre de excel

re

est ce que c'est la même config du PC

est ce que c'est la même version de EXCEL ???

( a ce que je remarque d’après vos dires, ce n'est pas un problème de fichier)

a vous relire

Bonjour

merci pour ta réponse

chez moi win 10 et office 2016

a l'usine win7 entreprise et office 2010 je crois

apres on ma dit de peut etre rajouter des before save en intermittence sa peut être la solution ?

bonjour

tous peu être une solution

un fichier serais une aide a tous

enlevé les données perso et envoyé le

a vous relire

Bonsoir,

cela me prendrais beaucoup trop de temps :s

Bonjour,

Tu peux pas découper tes macros de tel façon qu'elles soient plus petite ?

J'avais le même problème la semaine dernière, j'avais une macro assez grande et en la découpant en 6 macros distinctes, Excel a arrêté de planter.

Cordialement, Romain

Salut Romain,

y a surement possibilité mes étant débutant cela risque de me prendre du temps ^^

la chose que je comprend pas c'est que chez moi sur mon pc sa fonctionne niquel et a mon boulot sa ne fonctionne pas par contre si je vais directement dans le code vba et que je fais un apercu et que je lance celui-ci fonctionne bien

C'est bien bizarre ça x)

De mon côté je ne peux que te conseiller le découpage de macro parce que je suis pas informaticien

ok :s

un apercu de ta macro d'avant et la nouvelle pour que je vois comment proceder au decoupage ^^

Ouais je te file ça


Je vais te filer une macro que je suis entrain de réaliser, qui ne nécessite pas de découpage mais pour le principe :

Sub macroentière()

    Range("B10").Select
    Selection.AutoFill Destination:=Range("B10:B32"), Type:=xlFillDefault
    Range("B10:B32").Select
    Range("C10").Select
    Selection.AutoFill Destination:=Range("C10:C32"), Type:=xlFillDefault
    Range("C10:C32").Select
    Range("E10").Select
    Selection.AutoFill Destination:=Range("E10:E32"), Type:=xlFillDefault
    Range("E10:E32").Select
    Range("F10").Select
    Selection.AutoFill Destination:=Range("F10:F32"), Type:=xlFillDefault
    Range("F10:F32").Select
    Range("H10").Select
    Selection.AutoFill Destination:=Range("H10:H32"), Type:=xlFillDefault
    Range("H10:H32").Select
    Range("I10").Select
    Selection.AutoFill Destination:=Range("I10:I32"), Type:=xlFillDefault
    Range("I10:I32").Select
    Range("J10").Select
    Selection.AutoFill Destination:=Range("J10:J32"), Type:=xlFillDefault
    Range("J10:J32").Select
    Range("L10").Select
    Selection.AutoFill Destination:=Range("L10:L32"), Type:=xlFillDefault
    Range("L10:L32").Select
    Range("M10").Select
    Selection.AutoFill Destination:=Range("M10:M32"), Type:=xlFillDefault
    Range("M10:M32").Select
    Range("O10").Select
    Selection.AutoFill Destination:=Range("O10:O32"), Type:=xlFillDefault
    Range("O10:O32").Select
    Range("P10").Select
    Selection.AutoFill Destination:=Range("P10:P32"), Type:=xlFillDefault
    Range("P10:P32").Select
    Range("R10").Select
    Selection.AutoFill Destination:=Range("R10:R32"), Type:=xlFillDefault
    Range("R10:R32").Select
    Range("S10").Select
    Selection.AutoFill Destination:=Range("S10:S32"), Type:=xlFillDefault
    Range("S10:S32").Select
    Range("T10").Select
    Selection.AutoFill Destination:=Range("T10:T32"), Type:=xlFillDefault
    Range("T10:T32").Select
    Range("V10").Select
    Selection.AutoFill Destination:=Range("V10:V32"), Type:=xlFillDefault
    Range("V10:V32").Select
    Range("W10").Select
    Selection.AutoFill Destination:=Range("W10:W32"), Type:=xlFillDefault
    Range("W10:W32").Select
    Range("Y10").Select
    Selection.AutoFill Destination:=Range("Y10:Y32"), Type:=xlFillDefault
    Range("Y10:Y32").Select
    Range("Z10").Select
    Selection.AutoFill Destination:=Range("Z10:Z32"), Type:=xlFillDefault
    Range("Z10:Z32").Select
    Range("AB10").Select
    Selection.AutoFill Destination:=Range("AB10:AB32"), Type:=xlFillDefault
    Range("AB10:AB32").Select
    Range("AC10").Select
    Selection.AutoFill Destination:=Range("AC10:AC32"), Type:=xlFillDefault
    Range("AC10:AC32").Select
    Range("AD10").Select
End Sub

Et pour la découper je vais tout simplement mettre le "End Sub" en avant :

Sub macro1()

    Range("B10").Select
    Selection.AutoFill Destination:=Range("B10:B32"), Type:=xlFillDefault
    Range("B10:B32").Select
    Range("C10").Select
    Selection.AutoFill Destination:=Range("C10:C32"), Type:=xlFillDefault
    Range("C10:C32").Select
    Range("E10").Select
    Selection.AutoFill Destination:=Range("E10:E32"), Type:=xlFillDefault
    Range("E10:E32").Select
    Range("F10").Select
    Selection.AutoFill Destination:=Range("F10:F32"), Type:=xlFillDefault
    Range("F10:F32").Select
    Range("H10").Select
    Selection.AutoFill Destination:=Range("H10:H32"), Type:=xlFillDefault
    Range("H10:H32").Select
    Range("I10").Select
    Selection.AutoFill Destination:=Range("I10:I32"), Type:=xlFillDefault
    Range("I10:I32").Select
    Range("J10").Select
    Selection.AutoFill Destination:=Range("J10:J32"), Type:=xlFillDefault
    Range("J10:J32").Select
    Range("L10").Select
    Selection.AutoFill Destination:=Range("L10:L32"), Type:=xlFillDefault
    Range("L10:L32").Select
    Range("M10").Select
    Selection.AutoFill Destination:=Range("M10:M32"), Type:=xlFillDefault
    Range("M10:M32").Select
    Range("O10").Select
    Selection.AutoFill Destination:=Range("O10:O32"), Type:=xlFillDefault
    Range("O10:O32").Select
    Range("P10").Select
    Selection.AutoFill Destination:=Range("P10:P32"), Type:=xlFillDefault
    Range("P10:P32").Select
    Range("R10").Select
    Selection.AutoFill Destination:=Range("R10:R32"), Type:=xlFillDefault
    Range("R10:R32").Select
    Range("S10").Select
    Selection.AutoFill Destination:=Range("S10:S32"), Type:=xlFillDefault
    Range("S10:S32").Select
End Sub
Sub macro2()
    Range("T10").Select
    Selection.AutoFill Destination:=Range("T10:T32"), Type:=xlFillDefault
    Range("T10:T32").Select
    Range("V10").Select
    Selection.AutoFill Destination:=Range("V10:V32"), Type:=xlFillDefault
    Range("V10:V32").Select
    Range("W10").Select
    Selection.AutoFill Destination:=Range("W10:W32"), Type:=xlFillDefault
    Range("W10:W32").Select
    Range("Y10").Select
    Selection.AutoFill Destination:=Range("Y10:Y32"), Type:=xlFillDefault
    Range("Y10:Y32").Select
    Range("Z10").Select
    Selection.AutoFill Destination:=Range("Z10:Z32"), Type:=xlFillDefault
    Range("Z10:Z32").Select
    Range("AB10").Select
    Selection.AutoFill Destination:=Range("AB10:AB32"), Type:=xlFillDefault
    Range("AB10:AB32").Select
    Range("AC10").Select
    Selection.AutoFill Destination:=Range("AC10:AC32"), Type:=xlFillDefault
    Range("AC10:AC32").Select
    Range("AD10").Select
    End sub

Pour moi il m'a juste fallu couper la macro entre deux actions bien distinctes

ok je vais me pencher dessus

merci

Sinon tu peux m'envoyer ta macro, pour voir

voila ceux qui et présent dans mon userform

Dim Essai       As Integer

Private Sub UserForm_Activate()
    ficheanalyse.Left = (Application.UsableWidth / 2) - (ficheanalyse.Width / 2)
    UserForm_Initialize
    clearFicheVierge
End Sub

Private Sub UserForm_Initialize()
'alimentation de la combobox2
Essai = 0
clearFicheanalyse
With securite_environnement
    .Clear
    .List = Application.Transpose(Range("securite_environnement"))
End With
'liste des départements
With departement_metier
    .Clear
    .List = Application.Transpose(Range("departement_metier"))
End With
'liste des poste
With poste
    .Clear
    .List = Application.Transpose(Range("poste"))
End With
Feuil2.Visible = xlSheetVisible
'affichage de la date du jour dans l'userform
TextBox1 = Date
'affichage de l'heure dans l'userform
TextBox2 = Time
ficheanalyse.info_nom_prénom.SetFocus
ficheanalyse.f_b_ok.Enabled = champsobligatoires           '*  si le résultat de champsobligatoires = TRUE le bouton Enregistrement será activé
End Sub

'restrict l'entrez de seulement numeros
Private Sub signature_electronique_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
    Case Asc("0") To Asc("9")
    Case Else
        KeyAscii = 0
End Select
End Sub

'pour controler si c'est rempli
Private Sub signature_electronique_Change()
If Len(Trim(signature_electronique)) < 5 Then Exit Sub
ficheanalyse.f_b_ok.Enabled = champsobligatoires           '*  si le résultat de champsobligatoires = TRUE le bouton Enregistrement será activé
End Sub

Private Sub f_b_ok_Click()
Dim testnom     As Integer
Dim testcode    As Integer
Dim nom         As String

'sert pour la vérification de la signature électronique qui se trouve dans BD en colonne A et B
testnom = 0
testcode = 0
nom = ""
If Len(Trim(redacteur.Text)) = 0 Or Len(Trim(signature_electronique.Text)) = 0 Then
    Essai = Essai + 1
ElseIf Len(Trim(redacteur.Text)) > 0 And Len(Trim(signature_electronique.Text)) > 0 Then
    If controlerNomPreNometSignature(redacteur.Text, signature_electronique.Text) = False Then
        signature_electronique = ""
        Essai = Essai + 1
        MsgBox "Erreur! le nom & prénom ne correspond pas à la signature essai n°: " & Essai, vbCritical, "Attention: " & Essai & " de 3"
    Else
        testnom = 1
        testcode = 1
        Essai = 0
    End If
End If

If Essai >= 3 Then
    MsgBox "Essai épuisé! Le fichier va se fermer. Au revoir!"
    GoTo exitSub
End If
If testnom = 1 And testcode = 1 Then
    sauvegarder = enregistrement_fiche_et_envoyermessage(testnom, testcode)
Else
    Exit Sub
End If
exitSub:
Unload ficheanalyse
Quitter_Excel askMe:=False
End Sub

Private Function enregistrement_fiche_et_envoyermessage(testnom As Integer, testcode As Integer) As Boolean
If testnom = 1 And testcode = 1 Then
    Application.Calculation = xlCalculationManual

    '*  Ettape 1:   passer les données de la ficheanalyse à la Fiche Vierge
    '*  nouvelle macro pour ecrire les donnees dasn la ficheanalyse à la fiche vierge
    '*  cette macro ce trouve dans la module 'fiche_analyse'
    ecriredonneesFicheAnalysealaFicheVierge

    '*  Ettappe 2:  passer les données de la Fiche Vierge à la feuille 'Données'
    '*  nouvelle macro pour ecrire les donnees dans la ficheanalyse à la fiche vierge
    '*  cette macro ce trouve dans la module 'fiche_analyse'
    ecrireFicheViergealaFeuilleDonnées

    Application.Calculation = xlCalculationAutomatic
    Calculate
    MsgBox "Merci, " & nom & " l'enregistrement de ta fiche à bien était prise en compte !"
    ficheanalyse.Hide
    Call EnvoyerMesageEmail(ficheanalyse.departement_metier.Value, ficheanalyse.redacteur.Value)         '*  <- ces ici qu'il faut invoker l'envoi d'email
    Call xxx_annee 'permet d'ecrire en colonne D le numeros de fiche
    enregistrement_fiche_et_envoyermessage = True
    sauvegarder = True
Else
    enregistrement_fiche_et_envoyermessage = False
End If
End Function

'alimentation de la raison
Private Sub securite_environnement_Change()
'renvoie les infos securite ou environnement dans fiche d'analyse vierge
Feuil2.securite_environnement = securite_environnement
Dim index As Integer
index = securite_environnement.ListIndex
raison.Clear
Select Case index
     Case Is = 0
         With raison
            .AddItem "ATAA"
            .AddItem "ATSA"
            .AddItem "SB.I"
            .AddItem "PA"
            .AddItem "RP"
            .AddItem "TR"
         End With
     Case Is = 1
         With raison
            .AddItem "ACCIDENT"
            .AddItem "PA"
            .AddItem "RP"
         End With
End Select
ficheanalyse.f_b_ok.Enabled = champsobligatoires           '*  si le résultat de champsobligatoires = TRUE le bouton Enregistrement será activé
End Sub

'renvoie la raison dans la fiche d'analyse vierge
Private Sub raison_Change()
Feuil2.raison = raison
ficheanalyse.f_b_ok.Enabled = champsobligatoires           '*  si le résultat de champsobligatoires = TRUE le bouton Enregistrement será activé
End Sub
'renvoie les infos machine
Private Sub machine_change()
Feuil2.machine = machine
End Sub

'genere les métiers en fonction du département
Private Sub departement_metier_Change()

'pour envoyer le département dans la textbox sur fiche vierge
Feuil2.departement = departement_metier

Dim index As Integer
index = departement_metier.ListIndex

metier.Clear

Select Case index

'poste pour la préparation matières
     Case Is = 0
     Feuil2.correspondant = "..."
         With metier
        .AddItem "Manager/AM/Technicien"
        .AddItem "Responsable de poste"
        .AddItem "Doseur"
        .AddItem "Mélangeur Interne"
        .AddItem "Mélangeur Suiveur"
        .AddItem "Calandreur"
        .AddItem "Peseur Bandes"
         End With

'poste pour l'injection
    Case Is = 1
    Feuil2.correspondant = "..."
         With metier
        .AddItem "Manager/AM/Technicien"
        .AddItem "Régleur"
        .AddItem "Presseur"
        .AddItem "Trieur"
         End With

   'poste pour la compression
     Case Is = 2
     Feuil2.correspondant = "..."
         With metier
        .AddItem "Manager/AM/Technicien"
        .AddItem "Sauteur"
        .AddItem "Presseur"
        .AddItem "Rectif des plaques vertes"
        .AddItem "Activités annexes"
        .AddItem "Nettoyage presses MacNeil"
        .AddItem "Trieur en plaques"
        .AddItem "Nettoyage presses Wickert DT"
         End With

     'poste pour la découpe
     Case Is = 3
     Feuil2.correspondant = "NA"
         With metier
        .AddItem "Manager"
        .AddItem "Responsable de poste"
        .AddItem "Monteur outil"
        .AddItem "Multicompétence"
        .AddItem "Découpeur/ Découpeuse"
        .AddItem "Tri-Perçage"
         End With

    'poste Finition
     Case Is = 4
     Feuil2.correspondant = "...."
         With metier
        .AddItem "Manager & coordinateur prod & responsable flux"
        .AddItem "Responsable de poste"
        .AddItem "Technicien"
        .AddItem "Laveur"
        .AddItem "Salle Propre et Semi Propre"
        .AddItem "Salle Propre VIS"
        .AddItem "Tri"
        .AddItem "Emballeur"
         End With

     'poste pour Nettoyage
     Case Is = 5
     Feuil2.correspondant = "..."
         With metier
        .AddItem "Encadrant"
        .AddItem "Opérateur de Nettoyage"
        .AddItem "Opératrice de Nettoyage"
        .AddItem "Gestionnaire des vêtements"
         End With

     'poste pour AQL
     Case Is = 6
     Feuil2.correspondant = "..."
         With metier
        .AddItem "Contrôle mélange"
        .AddItem "Agent qualité presse"
        .AddItem "Métrologie"
        .AddItem "Contrôle finition"
         End With

    'poste pour logistique
     Case Is = 7
     Feuil2.correspondant = "...."
         With metier
        .AddItem "Encadrants"
        .AddItem "Magasinier matières premières"
        .AddItem "Magasinier produits finis"
         End With

    'poste pour laboratoire
     Case Is = 8
     Feuil2.correspondant = "...."
         With metier
        .AddItem "Encadrants"
        .AddItem "Techniciens laboratoire"
         End With

    'poste pour outillage
     Case Is = 9
     Feuil2.correspondant = "...."
         With metier
        .AddItem "Manager/AM"
        .AddItem "Responsable de poste"
        .AddItem "Préparateur Monteur Moule"
        .AddItem "Outilleur"
         End With

    'poste pour maintenance
     Case Is = 10
     Feuil2.correspondant = "...."
         With metier
        .AddItem "Ingénieur travaux neufs/Encadrants"
        .AddItem "Technicien Préventif et Correctif"
        .AddItem "Technicien gestion des énergies"
        .AddItem "Technicien Bâtiments"
        .AddItem "Gestionnaire des pièces techniques"
         End With

         'poste pour sécurité
     Case Is = 11
     Feuil2.correspondant = "..."
         With metier
        .AddItem "Encadrant/Animateur/Apprenti HSE"
        .AddItem "Infirmière"
        .AddItem "Gestionnaire des déchets"
         End With

         'poste pour service & supports
     Case Is = 12
     Feuil2.correspondant = "..."
         With metier
        .AddItem "Administration"
        .AddItem "Développement Process & Lean"
        .AddItem "Codir"
         End With
End Select
ficheanalyse.f_b_ok.Enabled = champsobligatoires           '*  si le résultat de champsobligatoires = TRUE le bouton Enregistrement será activé
End Sub

'bouton qui permet de quitter
Private Sub quitter_Click()
If MsgBox("Êtes-vous sûr de vouloir quitter?", vbQuestion + vbYesNo + vbDefaultButton2, "QUITTER?") <> vbYes Then Exit Sub
CancelSortie = False
Unload ficheanalyse
clearFicheVierge
Quitter_Excel askMe:=False
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Feuil2.Visible = xlSheetVeryHidden
End Sub

'affichage plein ecran et centre le contenu
Private Sub UserForm_Layout()
Dim decalL  As Double
Dim decalH  As Double
Dim ctrl    As Object

decalL = (Application.Width - ficheanalyse.Width) / 2
decalH = (Application.Height - ficheanalyse.Height) / 2
ficheanalyse.Width = Application.Width
ficheanalyse.Height = Application.Height
ficheanalyse.Top = 0
ficheanalyse.Left = 0
For Each ctrl In ficheanalyse.Controls
    ctrl.Left = ctrl.Left + decalL
    ctrl.Top = ctrl.Top + decalH
Next
End Sub

'lance interface de connection
Private Sub Loginok_Click()
UserForm1.Show
End Sub

Ah oui j'avais pas fait attention que c'était un userform ...

Je ne pense pas que tu puisses diviser la macro d'un userform

ok :s

Bon courage

merci

Rechercher des sujets similaires à "qui plante"