End with without With

Résolu/Fermé
Mouaffak_Mohammed Messages postés 19 Date d'inscription vendredi 20 mars 2015 Statut Membre Dernière intervention 25 mars 2015 - 23 mars 2015 à 19:09
Mouaffak_Mohammed Messages postés 19 Date d'inscription vendredi 20 mars 2015 Statut Membre Dernière intervention 25 mars 2015 - 24 mars 2015 à 23:42
Bonjour,
je trouve pas l'erreur dans mon code. Aidez moi SVP
Merci.

Public Function StockSecurite(Depot, Base_Oil, Transaction, Year, Week)
Dim i As Long
Dim j As Long
Dim w As Worksheet
Dim Sum As Double
Dim Max As Double
Set w = Worksheets("Donnees")
i = 0
j = 0
With w
While .Range("I2").Offset(i, 0) <> ""
If .Range("I2").Offset(i, -8) = Depot And .Range("I2").Offset(i, -7) = Base_Oil And .Range("I2").Offset(i, -5) = Transaction And .Range("I2").Offset(i, -2) = Year And .Range("I2").Offset(i, 0) = Week Then
While .Range("J2").Offset(i, 0) <> ""
'determiner le stock d'une semaine
While .Range("J2").Offset(j, 0) <> .Range("J2").Offset(i, 0) And .Range("J2").Offset(j, 0) <> ""
If .Range("J2").Offset(i, 0) = .Range("J2").Offset(j, 0) Then
Sum = Sum + .Range("J2").Offset(j, 0)
End If
j = j + 1
Wend
' determiner le max de la consommation journaliere
If Abs(.Range("J2").Offset(i, 0)) > Abs(.Range("J2").Offset(i + 1, 0)) Then
Max = Abs(.Range("J2").Offset(i, 0))
Else
Max = Abs(.Range("J2").Offset(i + 1, 0))
End If
i = i + 1
Wend
End With
StockSecurite = (Max - Sum / 7) * 7
End Function

3 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
23 mars 2015 à 20:00
Salut le Forum

Code corrigé
Public Function StockSecurite(Depot, Base_Oil, Transaction, Year, Week)
Dim i As Long
Dim j As Long
Dim w As Worksheet
Dim Sum As Double
Dim Max As Double
Set w = Worksheets("Donnees")
i = 0
j = 0
With w
While .Range("I2").Offset(i, 0) <> ""
If .Range("I2").Offset(i, -8) = Depot And .Range("I2").Offset(i, -7) = Base_Oil And .Range("I2").Offset(i, -5) = Transaction And .Range("I2").Offset(i, -2) = Year And .Range("I2").Offset(i, 0) = Week Then
While .Range("J2").Offset(i, 0) <> ""
'determiner le stock d'une semaine
While .Range("J2").Offset(j, 0) <> .Range("J2").Offset(i, 0) And .Range("J2").Offset(j, 0) <> ""
If .Range("J2").Offset(i, 0) = .Range("J2").Offset(j, 0) Then
Sum = Sum + .Range("J2").Offset(j, 0)
End If
j = j + 1
Wend
' determiner le max de la consommation journaliere
If Abs(.Range("J2").Offset(i, 0)) > Abs(.Range("J2").Offset(i + 1, 0)) Then
Max = Abs(.Range("J2").Offset(i, 0))
Else
Max = Abs(.Range("J2").Offset(i + 1, 0))
End If
i = i + 1
Wend
End If
Wend
End With
StockSecurite = (Max - Sum / 7) * 7
End Function

Mytå
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
23 mars 2015 à 20:00
Bonjour

Peut être comme ça

Public Function StockSecurite(Depot, Base_Oil, Transaction, Year, Week)
Dim i As Long
Dim j As Long
Dim w As Worksheet
Dim Sum As Double
Dim Max As Double
Set w = Worksheets("Donnees")
i = 0
j = 0
With w
  While .Range("I2").Offset(i, 0) <> ""
    If Range("I2").Offset(i, -8) = Depot _
       And .Range("I2").Offset(i, -7) = Base_Oil _
       And .Range("I2").Offset(i, -5) = Transaction _
       And .Range("I2").Offset(i, -2) = Year _
       And .Range("I2").Offset(i, 0) = Week Then
         While .Range("J2").Offset(i, 0) <> ""
           'determiner le stock d'une semaine
            While .Range("J2").Offset(j, 0) <> .Range("J2").Offset(i, 0) And .Range("J2").Offset(j, 0) <> ""
              If .Range("J2").Offset(i, 0) = .Range("J2").Offset(j, 0) Then
                Sum = Sum + .Range("J2").Offset(j, 0)
              End If
              j = j + 1
            Wend
           ' determiner le max de la consommation journaliere
           If Abs(.Range("J2").Offset(i, 0)) > Abs(.Range("J2").Offset(i + 1, 0)) Then
             Max = Abs(.Range("J2").Offset(i, 0))
           Else
             Max = Abs(.Range("J2").Offset(i + 1, 0))
           End If
           i = i + 1
         Wend
    End If
  Wend
End With
StockSecurite = (Max - Sum / 7) * 7
End Function

Cdlmnt
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
23 mars 2015 à 20:26
Re le Forum

Des fractions de secondes de décalages.
Mytå 23 mars 2015 à 20:00 vs ccm 23 mars 2015 à 20:00

Mytå
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
23 mars 2015 à 22:45
Bonjour à tous,

Tu devrais installer Smart Indenter, ça permet de voir ces types d'erreurs très facilement.
Bien que ça ne soit pas écrit fonctionne très bien jusqu'à excel 2013.

Je ne vais pas te mettre le code corrigé, c'est déjà fait. Mais ton code avec erreurs bien indenté :
Public Function StockSecurite(Depot, Base_Oil, Transaction, Year, Week)
    Dim i As Long
    Dim j As Long
    Dim w As Worksheet
    Dim Sum As Double
    Dim Max As Double
    Set w = Worksheets("Donnees")
    i = 0
    j = 0
    With w
        While .Range("I2").Offset(i, 0) <> ""
            If .Range("I2").Offset(i, -8) = Depot And .Range("I2").Offset(i, -7) = Base_Oil And .Range("I2").Offset(i, -5) = Transaction And .Range("I2").Offset(i, -2) = Year And .Range("I2").Offset(i, 0) = Week Then
                While .Range("J2").Offset(i, 0) <> ""
                    'determiner le stock d'une semaine
                    While .Range("J2").Offset(j, 0) <> .Range("J2").Offset(i, 0) And .Range("J2").Offset(j, 0) <> ""
                        If .Range("J2").Offset(i, 0) = .Range("J2").Offset(j, 0) Then
                            Sum = Sum + .Range("J2").Offset(j, 0)
                        End If
                        j = j + 1
                    Wend
                    ' determiner le max de la consommation journaliere
                    If Abs(.Range("J2").Offset(i, 0)) > Abs(.Range("J2").Offset(i + 1, 0)) Then
                        Max = Abs(.Range("J2").Offset(i, 0))
                    Else
                        Max = Abs(.Range("J2").Offset(i + 1, 0))
                    End If
                    i = i + 1
                Wend
            End With
            StockSecurite = (Max - Sum / 7) * 7
        End Function

Tu vois tout de suite où sont les pb. : il manque un end if et un wend

eric

0
Mouaffak_Mohammed Messages postés 19 Date d'inscription vendredi 20 mars 2015 Statut Membre Dernière intervention 25 mars 2015
24 mars 2015 à 23:42
Un bon outil, Merci !
0