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