Erreur 1004 boucle ?

zadwarf

XLDnaute Nouveau
Bonjour,

J'ai un soucis d'erreur 1004 "erreur définie par l'application ou par l'objet", j'essaye de faire une boucle qui parcourrais toutes les feuilles d'un classeur et d'effectuer un traitement :

Code:
Private Sub Workbook_Open()

Nb_feuilles = Sheets.Count
Feuille_actuelle = 2

For i = Feuille_actuelle To Nb_feuilles - 1

'Sheets(i).EnableOutlining = True
'Sheets(i).EnableAutoFilter = True
'Sheets(i).Protect Password:="Ilfaitbeau8", UserInterfaceOnly:=True

Next i

Application.EnableEvents = True

For feuille = Feuille_actuelle To Nb_feuilles - 1
    
    Worksheets(feuille).Activate
    nom_feuille = ActiveSheet.Name

For n = 11 To 114
'Worksheets(nom_feuille).Cells(n, 5).Select
If (Worksheets(nom_feuille).Cells(6, 3).Value = 0) And (Worksheets(nom_feuille).Cells(n, 6).Value = "X") Then
Worksheets(nom_feuille).Cells(n, 5).Value = "X"
ElseIf ((Worksheets(feuille).Cells(6, 3).Value = 1) And (Worksheets(nom_feuille).Cells(n, 7).Value = "X")) Then
Worksheets(nom_feuille).Cells(n, 5).Value = "X"
ElseIf ((Worksheets(nom_feuille).Cells(6, 3).Value = 2) And (Worksheets(nom_feuille).Cells(n, 8).Value = "X")) Then
Worksheets(nom_feuille).Cells(n, 5).Value = "X"
ElseIf ((Worksheets(nom_feuille).Cells(6, 3).Value = 3) And (Worksheets(nom_feuille).Cells(n, 9).Value = "X")) Then
Worksheets(nom_feuille).Cells(n, 5).Value = "X"
ElseIf ((Worksheets(nom_feuille).Cells(6, 3).Value = 4) And (Worksheets(nom_feuille).Cells(n, 10).Value = "X")) Then
Worksheets(nom_feuille).Cells(n, 5).Value = "X"
ElseIf ((Worksheets(nom_feuille).Cells(6, 3).Value = 5) And (Worksheets(nom_feuille).Cells(n, 11).Value = "X")) Then
Worksheets(nom_feuille).Cells(n, 5).Value = "X"
ElseIf ((Worksheets(nom_feuille).Cells(6, 3).Value = "6 à 9") And (Worksheets(nom_feuille).Cells(n, 12).Value = "X")) Then
Worksheets(nom_feuille).Cells(n, 5).Value = "X"
ElseIf ((Worksheets(nom_feuille).Cells(6, 3).Value = 10) And (Worksheets(nom_feuille).Cells(n, 13).Value = "X")) Then
Worksheets(nom_feuille).Cells(n, 5).Value = "X"
End If

Next n

Next feuille


End Sub

l'erreur viendrait de cette portion de code :

Code:
If (Worksheets(nom_feuille).Cells(6, 3).Value = 0) And (Worksheets(nom_feuille).Cells(n, 6).Value = "X") Then
[COLOR="red"]Worksheets(nom_feuille).Cells(n, 5).Value = "X"[/COLOR]

Pourtant dans nom_feuille a bien pour valeur 'roadmap' et n=11 donc dans la logique c'est bon.

Bon là il n'y a qu'un seul onglet 'roadmap' mais normalement il devrait y en avoir plusieurs, qui ne porteraient pas le nom de 'roadmap'.

Du coup j'avais deux boutons macro et il ne fonctionnent plus.

J'aimerais bien savoir d'où vient l'erreur, je bloque là -_-'

Merci d'avance.
 

Pièces jointes

  • Road map V6 _VE_.zip
    223.6 KB · Affichages: 27
Dernière édition:
G

Guest

Guest
Re : Erreur 1004 boucle ?

Bonjour,

ta macro entraîne un changement de valeur qui entraîne l'évènement Worksheet_Change dans lequel tu fais une action interdite quand ta feuille est protégée.

Déprotège ta feuille en début de macro et reprotège là en fin.

Plus: simplification de l'écriture , utiliser les structure With....End With dans les macros (c'est plus rapide)

Dans évènement Worksheet_Change
Code:
        For i = 11 To 67
            With Worksheets(nom_feuille)
                Select Case .Cells(i, 14)
                Case 1
                    .Cells(i, 14).Interior.Pattern = xlPatternNone
                    .Cells(i, 14).Interior.Color = RGB(0, 128, 0)
                    .Cells(i, 14).Font.Color = RGB(0, 0, 0)
                Case 2
                    .Cells(i, 14).Interior.Pattern = xlPatternNone
                    .Cells(i, 14).Interior.Color = RGB(150, 150, 150)
                    .Cells(i, 14).Font.Color = RGB(255, 255, 255)
                Case 3
                    .Cells(i, 14).Interior.Pattern = xlPatternNone
                    .Cells(i, 14).Interior.Color = RGB(250, 204, 0)
                    .Cells(i, 14).Font.Color = RGB(0, 0, 0)
                Case 4
                    With .Cells(i, 14)
                        .Interior.Pattern = xlPatternNone
                        .Interior.Color = RGB(128, 0, 0)
                        .Font.Color = RGB(255, 255, 255)
                    End With
                Case 0
                    .Cells(i, 14).Interior.Pattern = xlPatternNone
                    .Cells(i, 14).Interior.Pattern = xlPatternLightUp
                Case ""
                    .Cells(i, 14).Interior.Pattern = xlPatternNone
                End Select
            End With
        Next i

WorkBook_Open:
Code:
        For n = 11 To 114
            'Worksheets(nom_feuille).Cells(n, 5).Select
            With Worksheets(nom_feuille)
                If .Cells(6, 3).Value = 0 And .Cells(n, 6).Value = "X" Then
                    .Cells(n, 5).Value = "X"
                ElseIf Worksheets(feuille).Cells(6, 3).Value = 1 And .Cells(n, 7).Value = "X" Then
                    .Cells(n, 5).Value = "X"
                ElseIf ((.Cells(6, 3).Value = 2) And (.Cells(n, 8).Value = "X")) Then
                    .Cells(n, 5).Value = "X"
                ElseIf ((.Cells(6, 3).Value = 3) And (.Cells(n, 9).Value = "X")) Then
                    .Cells(n, 5).Value = "X"
                ElseIf ((.Cells(6, 3).Value = 4) And (.Cells(n, 10).Value = "X")) Then
                    .Cells(n, 5).Value = "X"
                ElseIf ((.Cells(6, 3).Value = 5) And (.Cells(n, 11).Value = "X")) Then
                    .Cells(n, 5).Value = "X"
                ElseIf ((.Cells(6, 3).Value = "6 à 9") And (.Cells(n, 12).Value = "X")) Then
                    .Cells(n, 5).Value = "X"
                ElseIf ((.Cells(6, 3).Value = 10) And (.Cells(n, 13).Value = "X")) Then
                    .Cells(n, 5).Value = "X"
                End If
            End With
        Next n

A+
 

Staple1600

XLDnaute Barbatruc
Re : Erreur 1004 boucle ?

Bonjour zadwarf, Bonjour Hasco ;), le fil, le forum

Puisque que tu recommandes les endives

Pourquoi t'en plantes pas ici ? :rolleyes:
Code:
With .Cells(i, 14)
    With .Interior
        .Pattern = xlPatternNone
        .Color = RGB(0, 128, 0)
    End With
    .Font.Color = RGB(0, 0, 0)
End With
EDITION: Houps je viens de voir que tu l'as fait au Case 4 , je m'étais arrêté au Case 1
 
Dernière édition:
G

Guest

Guest
Re : Erreur 1004 boucle ?

Hello l'Agrafe:),

content de te croiser,

Pourquoi au case 4? Parce qu'au pas à pas c'était sur cette ligne que s'arrêtait le débogueur!!!

J'allais pas faire tout le boulot!!!:rolleyes:

A++
 

Statistiques des forums

Discussions
312 681
Messages
2 090 875
Membres
104 681
dernier inscrit
Gtcheumawe