Erreur 9 incompréhensible

Bonjour,

J'ai un code qui ma foi fonctionne avec plusieurs feuille et puis pour une d'entre elle, il ne fonctionne pas et je n'y comprends vraiment rien. Pouvez-vous m'aider?(Soyez indulgent, je suis encore Novice en VBA ^^)

Voici le code :

'variables pour compter les lignes et identifier les feuilles de travail
Dim iA&, iB&, iC&, Id&, iE&, iFa&, iG&, iH&, iI&
Dim WsA As Worksheet, WsB As Worksheet, WsC As Worksheet, WsD As Worksheet, WsE As Worksheet, WsFa As Worksheet, WsG As Worksheet, WsH As Worksheet, WsI As Worksheet

Sub temps_Fette3()
Application.ScreenUpdating = False

'Variables pour boucle
   Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer, g As Integer, h As Integer

'Variables réponses
   Dim x&, X1&, X2&, X3&

'Variables temps
   Dim temps_prod As Double, temps_tot As Double
   Dim heure_fin As Date, heure_depart As Date, TB, Resultat As Single
   Dim Demain As Date, Ap_demain As Date
   Dim Hour As Integer, Minute As Integer
   Dim Heure_Minute As String

'Initialisation des variables
   Set WsE = Sheets("Fette3")
WsE.Activate
   iE = WsE.Cells(Rows.Count, 1).End(xlUp).Row

   Regl.Plaq_min = Regl.TextBox1.Value

   Demain = CDate(Date) + 1
   Ap_demain = CDate(Demain) + 1
'------------------------------------------------------------------------
'Nettoyage des colonnes
Range("I2:K" & iE).Select
Selection.ClearComments
Selection.ClearContents

Range("N2:O" & iE).Select
Selection.ClearComments
Selection.ClearContents
'------------------------------------------------------------------------
'Temps de production
For a = 2 To iE
    temps_prod = (WsE.Cells(a, 5).Value / Regl.Plaq_min) / 60
    WsE.Cells(a, 9) = temps_prod
Next a
'------------------------------------------------------------------------
'Temps réglage
For b = 2 To iE
    x = WsE.Cells(b, 3).Value = WsE.Cells(b + 1, 3).Value And WsE.Cells(b, 4).Value = WsE.Cells(b + 1, 4).Value

    X1 = WsE.Cells(b, 3).Value = WsE.Cells(b + 1, 3).Value And WsE.Cells(b, 4).Value <> WsE.Cells(b + 1, 4).Value

    X2 = WsE.Cells(b, 3).Value <> WsE.Cells(b + 1, 3).Value And WsE.Cells(b, 4).Value = WsE.Cells(b + 1, 4).Value

    X3 = WsE.Cells(b, 3).Value <> WsE.Cells(b + 1, 3).Value And WsE.Cells(b, 4).Value <> WsE.Cells(b + 1, 4).Value

    If x Then
        WsE.Cells(b, 10).Value = 5 / 60
        Else
    If X1 Then
        WsE.Cells(b, 10).Value = 15 / 60
        Else
    If X2 Then
        WsE.Cells(b, 10).Value = 20 / 60
        Else
    If X3 Then
        WsE.Cells(b, 10).Value = 30 / 60
    End If
    End If
    End If
    End If
Next b
'------------------------------------------------------------------------
'Temps total
For c = 2 To iE
    temps_tot = (WsE.Cells(c, 9).Value + WsE.Cells(c, 10).Value)
    WsE.Cells(c, 11) = temps_tot
Next c
    Range("I2:K" & iE).Select
    Selection.NumberFormat = "0.00"
'-----------------------------------------------------------------------
'heure de départ(initialisation)
WsE.Cells(2, 14).Value = Time
heure_depart = WsE.Cells(2, 14).Value
Range("N2").Select
Selection.NumberFormat = "h:mm;@"
'------------------------------------------------------------------------
'calcul temps
    TB = Split(heure_depart, ":")
    Resultat = TB(0) + ((TB(1) * 100) / 60) / 100
    WsE.Cells(2, 14).Value = Resultat
    WsE.Cells(2, 14).Select
    Selection.NumberFormat = "General"

'Heure finie(initialisation)
    WsE.Cells(2, 15).Select
    Selection.NumberFormat = "General"
    WsE.Cells(2, 15).Value = WsE.Cells(2, 14).Value + WsE.Cells(2, 11).Value
    heure_fin = WsE.Cells(2, 15).Value
    TB = Split(heure_fin, ":")

'------------------------------------------------------------------------
Range("N3:O" & iE).Select
Selection.NumberFormat = "General"

For d = 3 To Id
    WsE.Cells(d, 14).Value = WsE.Cells(d - 1, 15).Value
    WsE.Cells(d, 15).Value = WsE.Cells(d, 14).Value + WsE.Cells(d, 11).Value
Next d
'------------------------------------------------------------------------
'Première valeur supérieure à 24
For e = 2 To iE
    If WsE.Cells(e, 15).Value > 24 Then
        WsE.Cells(e, 15).AddComment
        WsE.Cells(e, 15).Comment.Visible = True
        WsE.Cells(e, 15).Comment.Text Text:="Programmé pour le: " & Demain
        WsE.Cells(e, 15).Comment.Shape.Select True
        WsE.Cells(e, 15).Comment.Text Text:="Programmé pour le: " & Demain
        Selection.ShapeRange.ScaleHeight 0.7, msoFalse, msoScaleFromTopLeft
        Selection.ShapeRange.ScaleWidth 0.96, msoFalse, msoScaleFromTopLeft
        Exit For
    End If
Next e
'------------------------------------------------------------------------
'Première valeur supérieure à 48
For f = 2 To iE
    If WsE.Cells(f, 15).Value > 48 Then
        WsE.Cells(f, 15).AddComment
        WsE.Cells(f, 15).Comment.Visible = True
        WsE.Cells(f, 15).Comment.Text Text:="Programmé pour le: " & Ap_demain
        WsE.Cells(f, 15).Comment.Shape.Select True
        WsE.Cells(f, 15).Comment.Text Text:="Programmé pour le: " & Ap_demain
        Selection.ShapeRange.ScaleHeight 0.7, msoFalse, msoScaleFromTopLeft
        Selection.ShapeRange.ScaleWidth 0.96, msoFalse, msoScaleFromTopLeft
        Exit For
    End If
Next f
'------------------------------------------------------------------------
'changement d'affichage des heures
    Range("N2:O" & iE).Select
    Selection.NumberFormat = "0.00"
    Range("S1").Select
'------------------------------------------------------------------------
For g = 2 To iE
    TB = Split(WsE.Cells(g, 14).Value, ",")
    WsE.Cells(g, 14).Value = Replace(WsE.Cells(g, 14).Value, ",", ":")
    Hour = TB(0)

    If TB(1) = 0 Then
        Minute = 0
    Else
        Minute = Left(TB(1), 2)
        Minute = ((Minute * 30) / 0.5) / 100
    End If

    Heure_Minute = Hour & ":" & Minute
    WsE.Cells(g, 14).Select
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM"
    WsE.Cells(g, 14).Value = Heure_Minute

    TB = Split(WsE.Cells(g, 15).Value, ",")
    WsE.Cells(g, 15).Value = Replace(WsE.Cells(g, 15).Value, ",", ":")
    Hour = TB(0)

    If TB(1) = 0 Then
        Minute = 0
    Else
        Minute = Left(TB(1), 2)
        Minute = ((Minute * 30) / 0.5) / 100
    End If

    Heure_Minute = Hour & ":" & Minute
    WsE.Cells(g, 15).Select
    Selection.NumberFormat = "[$-F400]h:mm:ss AM/PM"
    WsE.Cells(g, 15).Value = Heure_Minute
Next g
'------------------------------------------------------------------------
'Rajouter dans la colonne 19 (Colonne S), un calcul intermediaire
For h = 2 To iE
'temps total
    WsE.Cells(h, 19).Value = WsE.Cells(h, 15).Value - WsE.Cells(h, 14).Value
'temps réglage
    WsE.Cells(h, 20).Value = WsE.Cells(h, 10).Value / 23
'temps de production
    WsE.Cells(h, 21).Value = WsE.Cells(h, 19).Value - WsE.Cells(h, 20).Value
Next h
'Rendre invisible les valeurs
Range("S2:V" & iE).Select
Selection.NumberFormat = "0.00"
Selection.NumberFormat = ";;;"
End Sub

L'erreur est surligné dans le code, et c'est la suivante :

"Erreur 9, l'indice n'appartient pas à la sélection"

Merci beaucoup,

U_goffu

Bonjour,

bien il semble que ta cellule :

WsE.Cells(g, 14).Value

ne contienne pas de virgule....

Merci pour ton aide,

Je viens tout juste de trouver. C'était une erreur vraiment toute bête

For d = 3 To Id
    WsE.Cells(d, 14).Value = WsE.Cells(d - 1, 15).Value
    WsE.Cells(d, 15).Value = WsE.Cells(d, 14).Value + WsE.Cells(d, 11).Value
Next d

J'avais mis le mauvais indice de ce fait la boucle d'après ne pouvait pas prendre de valeur à "Spliter".

Merci en tout cas de d'être penché sur le sujet pierre.jy

Cordialement,

U_goffu

Rechercher des sujets similaires à "erreur incomprehensible"