• Initiateur de la discussion Initiateur de la discussion FREESURF
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

FREESURF

XLDnaute Occasionnel
Dernier probleme avant de terminer mon projet.
Je voudrais que depuis le feeuille "RECAP", les vetement livrés soit directement déduit de la feuille "stock" colonne "solde"
Merci pour votre aide.
 

Pièces jointes

Re : deduction

re salut porcinet
La macro fonctionne mais...
apres deux ou trois essai, la collone stock se met en négatif sans aucune raison de plus , la deduction se fait sur n'importe quelle ligne de la colonne solde de la feuille stock......
Ma joie à ete spontannée, mais je sent qu'ont tiens le bon bout

Merci à toi
 
Re : deduction

re,

Je n'avais pas pensé que tu modiefierais ta feuille plusieurs fois, j'ai encore ete trop vite.
Donc 2 possibilitées s'offre a toi, soit tu utilises le code que je t'ai filé mais tu le mets dans un Sub normal et non pas dans un Sub de macro evenementielle, ce qui donnerait :
PHP:
Sub test()
Dim cel As Range, c As Range
For Each cel In Range("C2:C" & Range("A65536").End(xlUp).Row)
With Sheets("stock")
For Each c In .Range("A8:A" & .Range("A65536").End(xlUp).Row)
If cel.Value = c.Value Then
If cel.Offset(0, 1).Value = c.Offset(0, 1).Value Then
c.Offset(0, 2).Value = c.Offset(0, 2).Value - cel.Offset(0, 2).Value
End If
End If
Next c
End With
Next cel
End Sub

Seulement, il faut que tu mettes un bouton ou que tu appela la macro dans ton code.

Sinon, je te propose a nouveau une macro evenementielle, mais qui va traité seulement la cellule modifiée de la feuille RECAP (j'ai rajouter une condition afin que la macro ne soit executer que si la colonne E de la feuille RECAP est modifiée) :
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Not Intersect(Target, Range("E2:E" & Range("A65536").End(xlUp).Row)) Is Nothing Then
With Sheets("stock")
For Each c In .Range("A8:A" & .Range("A65536").End(xlUp).Row)
If Cells(Target.Row, 3).Value = c.Value Then
If Cells(Target.Row, 3).Offset(0, 1).Value = c.Offset(0, 1).Value Then
c.Offset(0, 2).Value = c.Offset(0, 2).Value - Cells(Target.Row, 3).Offset(0, 2).Value
End If
End If
Next c
End With
End If
End Sub

Dans tout les cas, supprime la première macro que je t'avais proposé.

@+
 
Re : deduction

Nous y sommes porcinet

avec la nouvelle macro événementielle, cela semble marcher tres bien.
J'ai entre-temps modifié l'userform livraison de maniere à vider les textbox apres chaque validation de commande.

Merci enore pour cette aide tres precieuse
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
212
  • Question Question
XL 2019 B
Réponses
10
Affichages
658
Réponses
2
Affichages
194
W
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
663
Réponses
3
Affichages
199
Réponses
5
Affichages
402
Réponses
18
Affichages
607
Retour