michaelexcel
XLDnaute Nouveau
Bonjour à tous,
J'ai un bug dans ma programmation que je ne comprends pas. Je n'arrive pas à faire un fichier à mettre dans le forum, je vais essayer de vous donner les infos dans le message.
Voici la page sur laquelle je travaille. Il s'agit de mettre une priorité sur chaque projet en cliquant sur l'étoile.
Quand on clique sur une étoile, on lance les macros suivantes (jusque là tout fonctionne...) :
Sub EtoileA1()
Application.ScreenUpdating = False
If [C4] <> "" Then
Sheets("Todolist").[H2] = 1
Call ImportanceA1
End If
End Sub
Sub ImportanceA1()
Sheets("PRIORITE").Shapes.Range(Array("5-Point Star 14")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = RGB(255, 0, 0)
End With
With Selection.ShapeRange.Line
.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ForeColor.Brightness = -0.25
End With
Sheets("PRIORITE").Shapes.Range(Array("5-Point Star 17", "5-Point Star 18")). _
Select
With Selection.ShapeRange.Fill
.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ForeColor.Brightness = -0.25
End With
With Selection.ShapeRange.Line
.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ForeColor.Brightness = -0.25
End With
Range("B1").Select
End Sub
J'ai également réalisé une macro quand on ouvre la page ou quand on la modifie et qui permet de sauver les choix. Je ne met que la programmation pour le premier projet.
Private Sub Worksheet_Activate()
If Sheets("Todolist").[G2] = 0 Then
Call ImportanceA0
End If
If Sheets("Todolist").[G2] = 1 Then
Call ImportanceA1
End If
If Sheets("Todolist").[G2] = 2 Then
Call ImportanceA2
End If
If Sheets("Todolist").[G2] = 3 Then
Call ImportanceA3
End If
End Sub
Les projets pouvant changer, j'ai besoin de copier coller deux colonnes dans ("Todolist") afin de sauver tous les changements. J'ajoute donc au début de la Private Sub Worksheet_Activate() :
Sheets("Todolist").Range("I2:I13").Copy
Sheets("Todolist").Range("E2:E13").PasteSpecial Paste:=xlPasteValues
Ces deux lignes fonctionnent toutes seules mais, quand elles se font dans Private Sub Worksheet_Activate(), alors ça bug et excel m'indique "la méthode range de l'objet worksheet a echoué" sur la ligne que j'ai mis en gras. Pour info, il s'avère que la colonne a bien été copiée pourtant..
Je ne sais même pas où chercher l'erreur... Je me demande s'il ne fait pas une boucle infini de qqch.
D'avance merci si vous trouvez...
J'ai un bug dans ma programmation que je ne comprends pas. Je n'arrive pas à faire un fichier à mettre dans le forum, je vais essayer de vous donner les infos dans le message.
Voici la page sur laquelle je travaille. Il s'agit de mettre une priorité sur chaque projet en cliquant sur l'étoile.
Quand on clique sur une étoile, on lance les macros suivantes (jusque là tout fonctionne...) :
Sub EtoileA1()
Application.ScreenUpdating = False
If [C4] <> "" Then
Sheets("Todolist").[H2] = 1
Call ImportanceA1
End If
End Sub
Sub ImportanceA1()
Sheets("PRIORITE").Shapes.Range(Array("5-Point Star 14")).Select
With Selection.ShapeRange.Fill
.ForeColor.RGB = RGB(255, 0, 0)
End With
With Selection.ShapeRange.Line
.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ForeColor.Brightness = -0.25
End With
Sheets("PRIORITE").Shapes.Range(Array("5-Point Star 17", "5-Point Star 18")). _
Select
With Selection.ShapeRange.Fill
.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ForeColor.Brightness = -0.25
End With
With Selection.ShapeRange.Line
.ForeColor.ObjectThemeColor = msoThemeColorAccent1
.ForeColor.Brightness = -0.25
End With
Range("B1").Select
End Sub
J'ai également réalisé une macro quand on ouvre la page ou quand on la modifie et qui permet de sauver les choix. Je ne met que la programmation pour le premier projet.
Private Sub Worksheet_Activate()
If Sheets("Todolist").[G2] = 0 Then
Call ImportanceA0
End If
If Sheets("Todolist").[G2] = 1 Then
Call ImportanceA1
End If
If Sheets("Todolist").[G2] = 2 Then
Call ImportanceA2
End If
If Sheets("Todolist").[G2] = 3 Then
Call ImportanceA3
End If
End Sub
Les projets pouvant changer, j'ai besoin de copier coller deux colonnes dans ("Todolist") afin de sauver tous les changements. J'ajoute donc au début de la Private Sub Worksheet_Activate() :
Sheets("Todolist").Range("I2:I13").Copy
Sheets("Todolist").Range("E2:E13").PasteSpecial Paste:=xlPasteValues
Ces deux lignes fonctionnent toutes seules mais, quand elles se font dans Private Sub Worksheet_Activate(), alors ça bug et excel m'indique "la méthode range de l'objet worksheet a echoué" sur la ligne que j'ai mis en gras. Pour info, il s'avère que la colonne a bien été copiée pourtant..
Je ne sais même pas où chercher l'erreur... Je me demande s'il ne fait pas une boucle infini de qqch.
D'avance merci si vous trouvez...