Bonjour à tous,
J'ai repris une macro qui fonctionnait plus ou moins bien, et je me trouve devant une erreur récurrente sans que je ne puisse comprendre où est le souci.
La macro est extrêmement longue (pour mon niveau) et pour résumer, il s'agit pour la partie me posant souci, de récupérer dans la cellule C2 la valeur maxi de la table. Cette table peut varier en longueur et en largeur. J'ai donc utilisé une boucle sur chaque ligne.
Le bug vient de la ligne suivante :
Sheets("Defect").Range("C2").Offset(i, 0).Value = Application.Max(Worksheets("Defect").Range("D2:zz2l").Offset(i, 0))
Je ne peux vous donner que la partie suivante de la macro. Merci d'être indulgent, je débute.
D = Sheets("Data").Range("D6").Value
t = Sheets("Data").Range("D7").Value
SMYS = Sheets("Data").Range("D8").Value
MOP = Sheets("Data").Range("D9").Value
Sflow = 69 + SMYS
Lng = WorksheetFunction.Count(Worksheets("Defect").Columns(2)) ' Détermine le nombre de d'incréments dans la colonne longueur
LastCol = Cells(2, Columns.Count).End(xlToLeft).Column
maxlng = Application.Max(Sheets("Defect").Columns(2)) 'Détermine valeur max de la longueur
maxdpth = Application.Max(Sheets("Defect").Columns(3)) 'Détermine valeur max de la perte de métal de la série
serie = WorksheetFunction.Count(Worksheets("Defect").Rows(3)) - 2 'Détermine le nombre de colonnes non vides à partirde la colonne C
Sheets("Defect").Unprotect ("pobp7xkn")
For i = 1 To Lng - 1 'Boucle pour renvoyer en colonne 2, le max des génératrices entrées dans les colonnes suivantes en fonction des lignes'
Sheets("Defect").Range("C2").Value = Application.Max(Worksheets("Defect").Range("D2:LastCol+2"))
Sheets("Defect").Range("C2").Offset(i, 0).Value = Application.Max(Worksheets("Defect").Range("D2:zz2").Offset(i, 0))
If Range("B2").Offset(i, 0) = 0 Then
Range("B2").Offset(i, 0) = ""
End If
Next i
Sheets("defect").Protect ("pobp7xkn")
Dpth = WorksheetFunction.Count(Worksheets("Defect").Columns(3)) ' Détermine le nombre d'incrément colonne profondeur
If Lng <> Dpth Then
MsgBox "Attention, le nombre de données entrées en colonne B et en colonne D est différent. Merci de vérifier vos données saisies." & Chr(10) & "Le calcul va être arrêté", 0, "Information", vbInformation, vbOKOnly + vbInformation
Exit Sub
End If
Sheets("Defect").Activate
Merci d'avance
J'ai repris une macro qui fonctionnait plus ou moins bien, et je me trouve devant une erreur récurrente sans que je ne puisse comprendre où est le souci.
La macro est extrêmement longue (pour mon niveau) et pour résumer, il s'agit pour la partie me posant souci, de récupérer dans la cellule C2 la valeur maxi de la table. Cette table peut varier en longueur et en largeur. J'ai donc utilisé une boucle sur chaque ligne.
Le bug vient de la ligne suivante :
Sheets("Defect").Range("C2").Offset(i, 0).Value = Application.Max(Worksheets("Defect").Range("D2:zz2l").Offset(i, 0))
Je ne peux vous donner que la partie suivante de la macro. Merci d'être indulgent, je débute.
D = Sheets("Data").Range("D6").Value
t = Sheets("Data").Range("D7").Value
SMYS = Sheets("Data").Range("D8").Value
MOP = Sheets("Data").Range("D9").Value
Sflow = 69 + SMYS
Lng = WorksheetFunction.Count(Worksheets("Defect").Columns(2)) ' Détermine le nombre de d'incréments dans la colonne longueur
LastCol = Cells(2, Columns.Count).End(xlToLeft).Column
maxlng = Application.Max(Sheets("Defect").Columns(2)) 'Détermine valeur max de la longueur
maxdpth = Application.Max(Sheets("Defect").Columns(3)) 'Détermine valeur max de la perte de métal de la série
serie = WorksheetFunction.Count(Worksheets("Defect").Rows(3)) - 2 'Détermine le nombre de colonnes non vides à partirde la colonne C
Sheets("Defect").Unprotect ("pobp7xkn")
For i = 1 To Lng - 1 'Boucle pour renvoyer en colonne 2, le max des génératrices entrées dans les colonnes suivantes en fonction des lignes'
Sheets("Defect").Range("C2").Value = Application.Max(Worksheets("Defect").Range("D2:LastCol+2"))
Sheets("Defect").Range("C2").Offset(i, 0).Value = Application.Max(Worksheets("Defect").Range("D2:zz2").Offset(i, 0))
If Range("B2").Offset(i, 0) = 0 Then
Range("B2").Offset(i, 0) = ""
End If
Next i
Sheets("defect").Protect ("pobp7xkn")
Dpth = WorksheetFunction.Count(Worksheets("Defect").Columns(3)) ' Détermine le nombre d'incrément colonne profondeur
If Lng <> Dpth Then
MsgBox "Attention, le nombre de données entrées en colonne B et en colonne D est différent. Merci de vérifier vos données saisies." & Chr(10) & "Le calcul va être arrêté", 0, "Information", vbInformation, vbOKOnly + vbInformation
Exit Sub
End If
Sheets("Defect").Activate
Merci d'avance