Appel de macro fait planter Excel
Bonjour,
A partir d'une macro d'un premier classeur, j'ouvre un autre classeur et j'appelle des macros de ce second classeur. Hors la plupart de ces macros fonctionnent mais au moins une fait planter excel sans message d'erreur lors de son appel. J'ai vérifié la syntaxe qui est exacte.
J'ai besoin de vos lumières pour essayer de comprendre ce qui ne va pas puisque je n'ai aucun message d'erreur.
Merci d'avance
Sans fichier ni code cela sera difficile de voir ce qui ne marche pas
Je fais appel aux macro de du second classeur avec ces lignes de code :
Case "F"
TDS.Sheets(x).Cells(Ligne, j).Select
Application.Run "'" & TDSNom & "'!Form"
Case "CA", "RC", "ATA", "Mat", "ASA", "JAS", "TP"
TDS.Activate
TDS.Sheets(x).Cells(Ligne, j).Select
Application.Run "'" & TDSNom & "'!" & Planning.Sheets(FeuilPlan).Cells(i, j).ValueCela fonctionne très très bien pour tous les cas sauf le cas "RC"
Dans l'autre classeur, voici le code des macros impliquées
'Applique le motif Couleur, avec ou sans hachure, et ajoute la valeur Texte à la cellule
'Si Texte vaut Suppr, le contenu de la cellule est supprimé
'Si ContrôleColonne vaut faux, on peut modifier les colonnes A à C
Sub Couleur(Texte As String, Couleur As Integer, Hachure As Boolean, ContrôleColonne As Boolean, CouleurTexte As Integer, TaillePolice As Integer, Efface As Boolean)
Dim Cellule As Range
Application.ScreenUpdating = False
'Vérifie que l'on est dans une cellule correspondant à une date et une position de travail
'Si ContrôleColonne est vrai on interdit la modification des colonnes A à C, s'il est faux on autorise
If ((ContrôleColonne = True) And (Selection.Column >= PremièreColonneJours) And (Selection.Column + Selection.Columns.Count - 1 <= Range(NomPremièreColonneJours & LigneTitres).End(xlToRight).Column - NombreColonnesTotaux) And (Selection.Row >= PremièreLigne) And (Selection.Row + Selection.Rows.Count - 1 <= Range("A60000").End(xlUp).Row - 1 - LignesDeFin)) Or ((ContrôleColonne = False) And (Selection.Column + Selection.Columns.Count - 1 <= Range(NomPremièreColonneJours & LigneTitres).End(xlToRight).Column - NombreColonnesTotaux) And (Selection.Row >= PremièreLigne) And (Selection.Row + Selection.Rows.Count - 1 <= Range("A60000").End(xlUp).Row - 1 - LignesDeFin)) Then
ActiveSheet.Unprotect Password:=MotDePasse
'Effectue la boucle sur toutes les cellules sélectionnées
For Each Cellule In Selection
'Si la cellule est verrouillé, on ne fait rien, sauf si c'est la colonne de l'identifiant pour Local1 et Local2
If (Cellule.Locked = False) Or (Cellule.Column = ColonneIdentifiant) Then
'Si la cellule ne correspond pas à un numéro de PT, la taille de la police est de 10, sauf pour colis
If (Texte <> "") Then
Cellule.FormulaR1C1 = Texte
Cellule.Font.Size = TaillePolice
End If
'Si Efface vaut vrai, on efface le contenu de la cellule
If (Efface = True) Then
Cellule.ClearContents
End If
Cellule.Font.ColorIndex = CouleurTexte
'Met des hachures si c'est un Rep déjà Rep (donc rose) ou les enlève si elles y sont déjà
If (Texte = "Rep") And (Cellule.Interior.ColorIndex = Couleur) Then
If (Cellule.Interior.Pattern = xlLightUp) Then
Cellule.Interior.Pattern = xlSolid
Else
Cellule.Interior.Pattern = xlLightUp
Cellule.Interior.PatternColorIndex = 2
End If
Else
'Définit la couleur du motif en fonction du paramètre Couleur
Cellule.Interior.ColorIndex = Couleur
Cellule.Interior.Pattern = xlSolid
End If
'Supprime le gras
Cellule.Font.Bold = False
'Applique un hachuré si le paramètre Hachure est vrai
Selection.NumberFormat = "General"
If (Hachure = True) Then
Cellule.Interior.Pattern = xlUp
Cellule.Interior.PatternColorIndex = 2
End If
ElseIf (Texte = "RCY") And EstJourFérié(Range(NomColonne(Cellule.Column) & LigneTitres)) Then
Cellule = "RCY"
Cellule.Interior.ColorIndex = 16
End If
Next Cellule
'Lance la macro qui refait les encadrements horizontaux
RefaitEncadrement
ActiveSheet.Protect Password:=MotDePasse
Else
MsgBox "La sélection n'est pas bonne !", vbOKOnly + vbCritical, "Erreur"
End If
End Sub
'Procédures associées aux boutons en haut des feuilles mensuelles pour définir le contenu et la couleur des cellules
'Congés d'Affaires bleu
Sub CA()
Call Couleur("CA", 15, False, True, 1, 10, False)
End Sub
'Congés d'Affaires avec point d'interrogation bleu hachuré
Sub CAq()
Call Couleur("CA?", 15, True, True, 1, 10, False)
End Sub
'Repos Compensateur gris
Sub RC()
Call Couleur("RC", 37, False, True, 1, 10, False)
End Subessaie d'appeler ta macro à partir d'une macro de test
sub test()
call RC()
end sub
excel se plante-il aussi ?
Bonsoir,
comme dit sylchat : Sans fichier ni code cela sera difficile de voir ce qui ne marche pas
Des fichiers réduits au minimum nécessaires seraient les bienvenus.
Sinon met un Stop au début de ta macro appellée et fais en pas à pas avec F8 pour trouver la ligne en cause.
D'autre part je vois beaucoup de variables d'utilisée dans cette macro (PremièreColonneJours etc). Sont-elles bien créées et visibles par la macro ?
eric