End with without With

Résolu
Mouaffak_Mohammed Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
Mouaffak_Mohammed Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   953
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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   Statut Contributeur Dernière intervention   953
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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   Statut Membre Dernière intervention  
 
Un bon outil, Merci !
0