sebastien450
XLDnaute Occasionnel
Bonjour,
J'ai une macro, qui fonctionne bien mais un peu lente,
Je me demande comment l'optimiser pour eviter les boucles imbriquée "IF" et bien sur plus rapide en Set/with.
Merci de vos conseils.
PS: je n'ai pas trouvé comment éviter la fonction Feuil1.activate;;
J'ai une macro, qui fonctionne bien mais un peu lente,
Je me demande comment l'optimiser pour eviter les boucles imbriquée "IF" et bien sur plus rapide en Set/with.
Merci de vos conseils.
PS: je n'ai pas trouvé comment éviter la fonction Feuil1.activate;;
VB:
For X3 = 1 To 20 ' a partir de la premiere ligne je descend sur 20 ' a partir de la a vérifier les actions qui conduisent a indiquer ruptur
If Feuil5.Cells(x2 - 1 + X3, 4).Value <> cible Then Exit For
If Feuil5.Cells(x2 - 1 + X3, 8).Value >= 3 Then Feuil6.Cells(X, 12).Value = "DÉJÀ ALLOUÉ": Exit For
If Feuil5.Cells(x2 - 1 + X3, 6).Value - Feuil5.Cells(x2 - 1 + X3, 7).Value >= Feuil5.Cells(x2 - 1 + X3, 2).Value Then Feuil6.Cells(X, 12).Value = "OK"
If Feuil5.Cells(x2 - 1 + X3, 6).Value - Feuil5.Cells(x2 - 1 + X3, 7).Value < Feuil5.Cells(x2 - 1 + X3, 2).Value Then
Feuil6.Cells(X, 14).Value = Feuil5.Cells(x2 - 1 + X3, 5).Value ': MsgBox "marupture est le " & Feuil6.Cells(x, 14).Value
If Feuil6.Cells(X, 14).Value Like "A####-*" Or Feuil6.Cells(X, 14).Value Like "A###-*" Then ' je vais donc aller cherche cette cible
Feuil1.Activate
For R = 4 To Cells(5, 8000).End(xlToLeft).Column ' Sur toute les colonnes je cherche la colonne correspondante date du jour
If Feuil1.Cells(1, R).Value = CDate(Year(Now) & "/" & Month(Now) & "/" & Day(Now)) Then R2 = R: Exit For 'l2= date du jour
Next R
If R2 = "" Then MsgBox "LA DATE DU JOUR N'APPARAIT PAS SUR LE PLANNING": Exit Sub
Set plage = Range(Cells(6, R2 - 24), Cells(213, R2 + 60)) ' sur ma plage de R2-48h à R2 +1000
With plage 'defini le range de travail, qui va devenir variable
Set c = .Find(Feuil6.Cells(X, 14).Value, LookIn:=xlValues, lookat:=False) 'cherche le produit manquant désigné dans les articles (si pas de PS il trouvera rien bien sur)
If Not c Is Nothing Then
Add1 = c.Address
Do
For c2 = c.Column To c.Column - 24 Step -1 ' je vais donc lancer boucle col -1 jusqu'a -16 pour ma date de prod
If Feuil1.Cells(1, c2).Value <> "" Then Feuil6.Cells(X, 15) = "EN PROD LE " & Feuil1.Cells(1, c2).Value: Exit For ' je colle la colonne du jour de prod
Next c2
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> Add1
End If
End With
Exit For ' il me manque appro et je met quoi
End If 'je sort de la condition chaine de caractéere
End If 'je sort de l'écriture
Next X3