OVH Cloud OVH Cloud

Aide sur formule (VBA)

11 réponses
Avatar
cyril254
Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement des
stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" & vbNewLine
& "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur a 1,
exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a
.offset(0,3) et quand .Offset (0.3) et a zero il me marque un message "stock
insuffisant voulez vous continuer, oui, non"et si je marque oui, il
recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.

10 réponses

1 2
Avatar
michdenis
bonjour cyril254,

Voici j'ai réécrit la procédure...mais c'est loin d'être sûr que j'ai compris ce que tu désirais faire !!

Pas tester .... n'oublie pas de te faire une copie de sauvegarde avant de tester ...
'----------------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'---------------------------------------------


Salutations!




"cyril254" a écrit dans le message de news:
Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement des
stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" & vbNewLine
& "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur a 1,
exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a
.offset(0,3) et quand .Offset (0.3) et a zero il me marque un message "stock
insuffisant voulez vous continuer, oui, non"et si je marque oui, il
recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.
Avatar
CYRIL254
Bonsoir,
Sa a l'air bien parti mais parcontre sa me marque une erreur with sans if
j'essai de modifier un peu mais je trouve pas l'erreur :s
"michdenis" a écrit dans le message de
news:uJv%
bonjour cyril254,

Voici j'ai réécrit la procédure...mais c'est loin d'être sûr que j'ai
compris ce que tu désirais faire !!


Pas tester .... n'oublie pas de te faire une copie de sauvegarde avant de
tester ...

'----------------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'---------------------------------------------


Salutations!




"cyril254" a écrit dans le message de
news:

Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement des
stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" &
vbNewLine

& "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo
Then

Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur a 1,
exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a
.offset(0,3) et quand .Offset (0.3) et a zero il me marque un message
"stock

insuffisant voulez vous continuer, oui, non"et si je marque oui, il
recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.





Avatar
michdenis
Essaie ceci :

'------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub
End If

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'------------------------


Salutations!





"CYRIL254" a écrit dans le message de news:
Bonsoir,
Sa a l'air bien parti mais parcontre sa me marque une erreur with sans if
j'essai de modifier un peu mais je trouve pas l'erreur :s
"michdenis" a écrit dans le message de
news:uJv%
bonjour cyril254,

Voici j'ai réécrit la procédure...mais c'est loin d'être sûr que j'ai
compris ce que tu désirais faire !!


Pas tester .... n'oublie pas de te faire une copie de sauvegarde avant de
tester ...

'----------------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'---------------------------------------------


Salutations!




"cyril254" a écrit dans le message de
news:

Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement des
stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" &
vbNewLine

& "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo
Then

Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur a 1,
exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a
.offset(0,3) et quand .Offset (0.3) et a zero il me marque un message
"stock

insuffisant voulez vous continuer, oui, non"et si je marque oui, il
recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.





Avatar
CYRIL254
Cette fois si aucun message d'erreur mais parcontre le stock ne change pas.
il reste toujours a la quantité indiqué.
Si jamais je t'ai ajouté a ma liste messenger de msn, car je pense que je
ne pourrais jamais trouver tout seul.
Merci encore de ton aide si precieuse.


"michdenis" a écrit dans le message de
news:%
Essaie ceci :

'------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub
End If

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'------------------------


Salutations!





"CYRIL254" a écrit dans le message de
news:

Bonsoir,
Sa a l'air bien parti mais parcontre sa me marque une erreur with sans if
j'essai de modifier un peu mais je trouve pas l'erreur :s
"michdenis" a écrit dans le message de
news:uJv%
bonjour cyril254,

Voici j'ai réécrit la procédure...mais c'est loin d'être sûr que j'ai
compris ce que tu désirais faire !!


Pas tester .... n'oublie pas de te faire une copie de sauvegarde avant
de


tester ...
'----------------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'---------------------------------------------


Salutations!




"cyril254" a écrit dans le message de
news:

Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement des
stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" &
vbNewLine

& "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo
Then

Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur a
1,


exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a
.offset(0,3) et quand .Offset (0.3) et a zero il me marque un message
"stock

insuffisant voulez vous continuer, oui, non"et si je marque oui, il
recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.










Avatar
michdenis
Bonjour CYRIL254,

Les échanges se passent ici , au niveau du groupe de discussion. Si tu n'as pas obtenu satisfaction à partir de la
"traduction" que j'ai faite de ta procédure, relance tout en donnant des explications précises sur ce que tu tentes
d'exécuter ... il y a sûrement quelqu'un dans ce groupe capable de te répondre ! Sans ces informations, il n'est pas
évident d'essayer les "intentions" de l'auteur à partir seulement d'un bout de code que l'auteur a fignolé et qui ne
fait pas le travail désiré.


Salutations!



"CYRIL254" a écrit dans le message de news:OIYWv6$
Cette fois si aucun message d'erreur mais parcontre le stock ne change pas.
il reste toujours a la quantité indiqué.
Si jamais je t'ai ajouté a ma liste messenger de msn, car je pense que je
ne pourrais jamais trouver tout seul.
Merci encore de ton aide si precieuse.


"michdenis" a écrit dans le message de
news:%
Essaie ceci :

'------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub
End If

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'------------------------


Salutations!





"CYRIL254" a écrit dans le message de
news:

Bonsoir,
Sa a l'air bien parti mais parcontre sa me marque une erreur with sans if
j'essai de modifier un peu mais je trouve pas l'erreur :s
"michdenis" a écrit dans le message de
news:uJv%
bonjour cyril254,

Voici j'ai réécrit la procédure...mais c'est loin d'être sûr que j'ai
compris ce que tu désirais faire !!


Pas tester .... n'oublie pas de te faire une copie de sauvegarde avant
de


tester ...
'----------------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'---------------------------------------------


Salutations!




"cyril254" a écrit dans le message de
news:

Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement des
stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" &
vbNewLine

& "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo
Then

Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur a
1,


exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a
.offset(0,3) et quand .Offset (0.3) et a zero il me marque un message
"stock

insuffisant voulez vous continuer, oui, non"et si je marque oui, il
recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.










Avatar
sabatier
bonsoir cyril
je n'ai pas la réponse à ta question mais ce dont je suis sûr, c'est que
tu peux remettre ton fichier .zip dans son kibboutz car personne ne
l'ouvrira ; les fichiers joints ne sont pas admis sur le forum et même
si confucius a dit qu'une image valait 10 000 mots, il faudra reprendre
tes explications de la façon la plus claire ; et ne t'en fais pas, les
cracks que tu vas trouver ici sont assez malins pour lire, même entre
les lignes, parfois...
jps


CYRIL254 a écrit:
Bonsoir,
Je vous donne un classeur avec un exemple de ce que je veux faire
avec des explications plus claires.
Ce que je veux exactement c deduire les stocks qui sont dans les feuilles
STOCKBRUN et STOCK BLANC Automatiquement.
mais aussi quand ça arrive à zero dans la cellule reserve que ça decompte la
cellule expo.
ex : j'en ai deux a decompte il m'en reste un en expo et un en reserve ça
doit arriver à zero apres la deduction et si j'en ai 3 alors ca me marque 0
dans la cellule expo et -1 dans la cellule reserve.
Voila j'espere que vous allez trouver ca plus clair.

Merci et desolé si je me suis mal fait comprendre.


"michdenis" a écrit dans le message de
news:%

Bonjour CYRIL254,

Les échanges se passent ici , au niveau du groupe de discussion. Si tu


n'as pas obtenu satisfaction à partir de la

"traduction" que j'ai faite de ta procédure, relance tout en donnant des


explications précises sur ce que tu tentes

d'exécuter ... il y a sûrement quelqu'un dans ce groupe capable de te


répondre ! Sans ces informations, il n'est pas

évident d'essayer les "intentions" de l'auteur à partir seulement d'un


bout de code que l'auteur a fignolé et qui ne

fait pas le travail désiré.


Salutations!



"CYRIL254" a écrit dans le message de


news:OIYWv6$

Cette fois si aucun message d'erreur mais parcontre le stock ne change


pas.

il reste toujours a la quantité indiqué.
Si jamais je t'ai ajouté a ma liste messenger de msn, car je pense que je
ne pourrais jamais trouver tout seul.
Merci encore de ton aide si precieuse.


"michdenis" a écrit dans le message de
news:%

Essaie ceci :

'------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub
End If

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'------------------------


Salutations!





"CYRIL254" a écrit dans le message de


news:

Bonsoir,
Sa a l'air bien parti mais parcontre sa me marque une erreur with sans


if


j'essai de modifier un peu mais je trouve pas l'erreur :s
"michdenis" a écrit dans le message de
news:uJv%

bonjour cyril254,

Voici j'ai réécrit la procédure...mais c'est loin d'être sûr que j'ai


compris ce que tu désirais faire !!

Pas tester .... n'oublie pas de te faire une copie de sauvegarde avant


de


tester ...

'----------------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'---------------------------------------------


Salutations!




"cyril254" a écrit dans le message de


news:

Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement


des



stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" &


vbNewLine

& "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo


Then

Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur


a



1,

exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a
.offset(0,3) et quand .Offset (0.3) et a zero il me marque un message


"stock

insuffisant voulez vous continuer, oui, non"et si je marque oui, il
recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.


















Avatar
Philippe.R
Bonsoir,
En un mot comme en mille :
http://www.excelabo.net/mpfe/extra-gif/fichiers-joints.gif
--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002

"CYRIL254" a écrit dans le message de news:
Bonsoir,
Je vous donne un classeur avec un exemple de ce que je veux faire
avec des explications plus claires.
Ce que je veux exactement c deduire les stocks qui sont dans les feuilles
STOCKBRUN et STOCK BLANC Automatiquement.
mais aussi quand ça arrive à zero dans la cellule reserve que ça decompte la
cellule expo.
ex : j'en ai deux a decompte il m'en reste un en expo et un en reserve ça
doit arriver à zero apres la deduction et si j'en ai 3 alors ca me marque 0
dans la cellule expo et -1 dans la cellule reserve.
Voila j'espere que vous allez trouver ca plus clair.

Merci et desolé si je me suis mal fait comprendre.


"michdenis" a écrit dans le message de
news:%
Bonjour CYRIL254,

Les échanges se passent ici , au niveau du groupe de discussion. Si tu
n'as pas obtenu satisfaction à partir de la

"traduction" que j'ai faite de ta procédure, relance tout en donnant des
explications précises sur ce que tu tentes

d'exécuter ... il y a sûrement quelqu'un dans ce groupe capable de te
répondre ! Sans ces informations, il n'est pas

évident d'essayer les "intentions" de l'auteur à partir seulement d'un
bout de code que l'auteur a fignolé et qui ne

fait pas le travail désiré.


Salutations!



"CYRIL254" a écrit dans le message de
news:OIYWv6$

Cette fois si aucun message d'erreur mais parcontre le stock ne change
pas.

il reste toujours a la quantité indiqué.
Si jamais je t'ai ajouté a ma liste messenger de msn, car je pense que je
ne pourrais jamais trouver tout seul.
Merci encore de ton aide si precieuse.


"michdenis" a écrit dans le message de
news:%
Essaie ceci :

'------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub
End If

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'------------------------


Salutations!





"CYRIL254" a écrit dans le message de
news:

Bonsoir,
Sa a l'air bien parti mais parcontre sa me marque une erreur with sans
if


j'essai de modifier un peu mais je trouve pas l'erreur :s
"michdenis" a écrit dans le message de
news:uJv%
bonjour cyril254,

Voici j'ai réécrit la procédure...mais c'est loin d'être sûr que j'ai
compris ce que tu désirais faire !!


Pas tester .... n'oublie pas de te faire une copie de sauvegarde avant
de


tester ...
'----------------------------------
Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer
Dim Trouve As Range, Critere As Variant

Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" _
& vbNewLine & "Cette opération est irréversible.", _
vbYesNo + vbExclamation) = vbNo Then
Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub
Critere = sH.Cells(l, 1)
With sh1.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With

With sh2.Range("A6:A2000")
Set Trouve = .Find(What:=Critere, _
LookIn:=xlFormulas, lookat:=xlWhole)
If Not Trouve Is Nothing Then
With Trouve
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With
Else
On Error GoTo 0
End If
End With
Next
End Sub
'---------------------------------------------


Salutations!




"cyril254" a écrit dans le message de
news:

Bonjour,
J'ai un petit probleme avec une formule pour deduire automatiquement
des



stock.
J'ai cette formule qui fonctionne mais j'aimerais l'optimisé :

Sub Impression()
Dim l As Integer
Dim sH, sh1, sh2 As Worksheet
Dim Stk As Integer


Set sH = Sheets("FACTURE-SAISIE")
Set sh1 = Sheets("STOCKBLANC")
Set sh2 = Sheets("STOCKBRUN")

If MsgBox("Voulez-vous mettre à jour automatiquement le stock ?" &
vbNewLine

& "Cette opération est irréversible.", vbYesNo + vbExclamation) = vbNo
Then

Exit Sub

For l = 13 To 22
If sH.Cells(l, 1) = "" Then Exit Sub

On Error Resume Next
With sh1.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

With sh2.Range("A6:A2000").Find(sH.Cells(l, 1))
If .Offset(0, 4) > 0 Then
.Offset(0, 4) = .Offset(0, 4) - sH.Cells(1, 7)
Else
.Offset(0, 3) = .Offset(0, 3) - sH.Cells(1, 7)
End If
End With

On Error GoTo 0
Next
End Sub

Le probleme que je rencontre c quand je deduit une quantité superieur
a



1,
exemple 2 et que en stock il ne m'en reste 2,
il me marque -1 sans passer sur la cellule suivante (.offset(0, 3)
pour deduire cela me fausse le stock.
ce que j'aimerais c que arriver a zero sur .offset(0, 4) il passe a
.offset(0,3) et quand .Offset (0.3) et a zero il me marque un message
"stock

insuffisant voulez vous continuer, oui, non"et si je marque oui, il
recommence a me deduire dans .offset(0.4), -1 ;-2; -3 ect...
J'espere que j'ai bien formuler pour que tout le monde comprenne.

Merci par avance de votre aide.




















Avatar
sabatier
j'ai dit en 10 000...tu vois bien que tout est bon pour toi, philippe,
pour me contrarier...
jps

Philippe.R a écrit:
Bonsoir,
En un mot comme en mille :
http://www.excelabo.net/mpfe/extra-gif/fichiers-joints.gif


Avatar
Philippe.R
Tu as vraiment failli être Marseillais Jean Paul, à tout ezagérer ainsi !
--
Amicales Salutations

"sabatier" a écrit dans le message de
news:
j'ai dit en 10 000...tu vois bien que tout est bon pour toi, philippe,
pour me contrarier...
jps

Philippe.R a écrit:
Bonsoir,
En un mot comme en mille :
http://www.excelabo.net/mpfe/extra-gif/fichiers-joints.gif





Avatar
CYRIL254
DSL pour le fichier joint :)

"Philippe.R" a écrit dans le message de
news:
Tu as vraiment failli être Marseillais Jean Paul, à tout ezagérer ainsi !
--
Amicales Salutations

"sabatier" a écrit dans le
message de

news:
j'ai dit en 10 000...tu vois bien que tout est bon pour toi, philippe,
pour me contrarier...
jps

Philippe.R a écrit:
Bonsoir,
En un mot comme en mille :
http://www.excelabo.net/mpfe/extra-gif/fichiers-joints.gif









1 2