Erreur 9 incompréhensible
U
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 SubL'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
p
Bonjour,
bien il semble que ta cellule :
WsE.Cells(g, 14).Valuene contienne pas de virgule....
U
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 dJ'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