Macro comparaison de stock entre differents onglets

Niouf

XLDnaute Occasionnel
Bonsoir le Forum,

J’explique la chose :

Sur le fichier joint, j’ai deux onglets avec deux tableaux différents.
Le travail doit s’effectuer entre 5 colonnes :
- Colonne Material de l’onglet KARDEX (Colonne A)
- Colonne SAP Stk de l’onglet KARDEX (Colonne B)
- Colonne Kdx Stk de l’onglet KARDEX(Colonne C)
-Colonne Material de l’onglet GOODS OUT (Colonne D)
- Colonne Dlv qty de l’onglet GOODS OUT (Colonne E)

Concrètement, si mes colonnes A et D correspondent (Comparaison entre mêmes matériaux), je dois, soustraire ma colonne E à ma colonne B. Eventuellement créer une nouvelle colonne sur l’onglet Kardex et afficher le résultat de B-E. Ceci deviendrait ma nouvelle colonne B.
Si une différence subsiste entre ma nouvelle colonne B et C, je garde la ligne complète, alors que si le stock entre ma nouvelle colonne B et C est identique, je supprime la ligne entière (Plus de différence de stock= Plus de probleme)

J’ai essayé de simplifier au max les explications, j’ai une idée assez vague du code à mettre en place, c’est donc pour cela que je cherche l’aide d’un pro !

Grossièrement a main levé ca donnerait ca :
Code:
If A=D
	If A-C=B Then
	Delete Row
	Next If
	If A-C<>B Then
        Show A-C
        Next If
Next If

Merci d’avance à celui qui m’aidera, ne serait-ce qu’un peu 
 

Pièces jointes

  • Test comparaison stk.xlsx
    18.9 KB · Affichages: 49

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Macro comparaison de stock entre differents onglets

Bonjour Niouf,

Avec ce que j'en ai compris -> un essai par macro.

J'ai pris les hypothèses suivantes:

  • sur la feuille 'KARDEX', une marchandise n'apparait qu'une seule fois
  • sur la feuille 'GOODS OUT', plusieurs lignes peuvent concerner une même marchandise
  • je ne modifie pas la colonne 'SAP Stk' mais place le résultat dans la colonne 'O' ( 'New SAP Stk')
  • j'ai fait fi de la vitesse de traitement (pas bien ça! :()
  • les feuilles 'KARDEX (2)', 'GOODS OU (2)' et le bouton 'Données initiales ...' peuvent être supprimés

nb: Le traitement n'est à faire qu'une seule fois puisqu'on supprime des lignes sur la feuille 'KARDEX'. Pour permettre un nouveau traitement avec un nouveau jeu de données, il suffit d'effacer le contenu de la cellule P1 avant de lancer la macro.

Le code de la macro Bilan() dans Module1:
VB:
Sub Bilan()
Dim lastK&, lastG&
  With Sheets("KARDEX")
    If .Range("p1") Like "Already*" Then
      MsgBox "Le traitement a déjà été fait  -> Echec !", vbCritical
      Exit Sub
    Else
      .Range("o:p").Clear
    End If
    
    lastK = .Cells(.Rows.Count, "e").End(xlUp).Row
    If lastK < 2 Then
      MsgBox "Aucunne donnée dans 'KARDEX'  -> Echec !", vbCritical
      Exit Sub
    End If
    
    lastG = Sheets("GOODS OUT").Cells(.Rows.Count, "b").End(xlUp).Row
    If lastG < 2 Then
      MsgBox "Aucunne donnée dans 'GOODS OUT'  -> Echec !", vbCritical
      Exit Sub
    End If
    
    Application.ScreenUpdating = False
    .Range("o2").FormulaR1C1 = _
        "=RC[-7]-SUMIF( 'GOODS OUT'!C2,RC5,'GOODS OUT'!C4)"
    .Range("p2").FormulaR1C1 = _
        "=IF(RC[-1]=RC[-7],NA(),"""")"
    .Range("O2:P2").AutoFill Destination:=.Range("o2:p" & lastK)
    .Range("o2:p" & lastK) = .Range("o2:p" & lastK).Value
    
    On Error Resume Next
    .Range("p2:p" & lastK).SpecialCells(xlCellTypeConstants, xlErrors) _
        .EntireRow.Delete
    On Error GoTo 0
    
    With .Range("o1")
      .Value = "New SAP Stk"
      .Interior.Color = RGB(200, 255, 50)
      .HorizontalAlignment = xlCenter
      .Font.Bold = True
    End With
    
    .Range("p:p").Clear
    With .Range("p1")
      .Value = "Already processed"
      .Interior.Color = RGB(255, 116, 0)
      .HorizontalAlignment = xlCenter
      .Font.Bold = True
      .WrapText = True
    End With
    
    Application.Goto .[a1], True
    MsgBox "Le traitement des données est achevé." & vbLf & vbLf & _
        "Sur la feuille 'KARDEX', le traitement a supprimé " & _
       (lastK - Sheets("KARDEX").Range("a1").CurrentRegion.Rows.Count) & _
       " article(s)."
  End With
End Sub
 

Pièces jointes

  • Niouf-Test comparaison stk-v2a.xlsm
    62.2 KB · Affichages: 64
Dernière édition:

Niouf

XLDnaute Occasionnel
Re : Macro comparaison de stock entre differents onglets

Salut mapomme,

Merci, je ne m'attendais pas a une aide aussi avancee.

C'est exactement ce que je cherchais !

J'ai adapte em fonctione de mon fichier.
Pas trop besoin du Already, puisque j'execute cette macro une fois par semaine, en changeant tout le temps de fichier.

Et tu m'as fais decouvrir un truc trop important : Que l'on puisse trouver 2 fois le meme materiel sur la feuille GOODS OUT !
Chose que j'avais ecarte totalement.

Encore merci :)
 

Discussions similaires

Statistiques des forums

Discussions
312 114
Messages
2 085 432
Membres
102 889
dernier inscrit
monsef JABBOUR