XL 2010 Transfert de quantité

issam salem

XLDnaute Junior
Bonjour;

Alors j'ai un projet de gestion du stock, je veux faire une option de transfert du stock entre magasin (voir photo userforme transfert) à partir de tableau inventaire (photo inventaire)
J’ai commencé a programmé le userforme transfert par exemple le remplit de combobox le recherche par magasin (code article+prévenance) etc...
Actuellement je veux programmé le commandeboutton transfert du stock (voir photo userforme transfert) pour le but de transfert la quantité transférée saisie sur le textbox de prévenance sélectionner vers la destination sélectionnes avec bien sur le mise à jour du quantité

Exemple sur photo userforme transfert:

J’ai le code article SM004.0032 de prévenance TE01 avec un stock prévenance de 200 kg, et la destination KH01
Alors je veux transferer la quantité 25 kg sur la destination KH01 avec la mise ajour sur le tableau inventaire
Alors le résultat fini c'est
Le stock actuel d'article SM004.0032 de magasin TE01 sera 200-25=175
Et le stock actuel d'article SM004.0032 de magasin kh01 sera 25 (la quantité transférée)
 

Pièces jointes

  • Capture userforme transfert.PNG
    Capture userforme transfert.PNG
    107 KB · Affichages: 198
  • Capture inventaire.PNG
    Capture inventaire.PNG
    70.6 KB · Affichages: 52

soan

XLDnaute Barbatruc
Inactif
Bonjour issam,

bonne nouvelle : cette fois, tout est fait ! 😊 ça a été très long car c'est assez complexe
à cause de nombreuses interdépendances entre subs, et parc'qu'y'a beaucoup d'choses
qui sont très étroitement liées entre elles.

--------------------------------------------------------------------------------------------------

sur la feuille "Transfert", la dernière colonne est pour : "STOCK DES" ; au début,
j'savais pas c'qu'il fallait mettre ; maint'nant, j'ai bien compris ! du coup, c'est
bien plus simple que la macro commence par la feuille "Inventaire" !

ça m'a obligé à faire de très nombreuses modifs dans ce que j'avais fait avant ;
aussi, pour le code VBA du UF Transfer : tu ne devras rien garder du tout, et le
remplacer par le nouveau code qui est dans le fichier joint. (mais plus tard !)

j'ai aussi beaucoup modifié le code VBA de UF_Saisie_Auto ; tu devras donc
remplacer entièrement le code déjà existant par le nouveau. (plus tard !)

--------------------------------------------------------------------------------------------------

lien fichier : https://mon-partage.fr/f/y10ZC8z2/

--------------------------------------------------------------------------------------------------

sur la feuille "Transfert", clique sur le bouton avec une double flèche dans un cercle ;
le UF Transfer s'affiche ; il a un peu rétréci au lavage, et pendant l'essorage, le gros
bouton bleu de ton blue-jean s'est détaché (oui, je parle de ton bouton Recherche,
celui qui était dans le coin haut droit) ; mais t'inquiètes pas, c'est pas grave : c'est
juste une de mes lubies, j'adore supprimer tout c'qui est inutile ! 😜 tu vas bientôt
voir que ça fonctionne très bien sans, mais pas tout d'suite.

bien sûr, le message d'erreur suivant est devenu inutile (donc je l'ai supprimé) :

"Veuillez cliquer sur le bouton bleu « Recherche.
(dans le coin supérieur droit du formulaire)
»"

tu seras d'accord avec moi qu'on ne peut pas raisonnablement demander
à l'utilisateur de cliquer sur un bouton inexistant, n'est-ce pas ? :p

--------------------------------------------------------------------------------------------------

ne fais rien sur le UF ; ferme-le ; puis sélectionne la feuille "Inventaire" ; ouvre de
nouveau le UF ; comment ? tu ne le peux pas, car il faudrait pouvoir cliquer sur le
bouton qui est sur l'autre feuille "Transfert" ? ah oui, c'est bien vrai, ça ! bon, alors
comme tu peux pas cliquer sur le bouton de la feuille "Transfert" au travers de la
feuille active "Inventaire", j'ai mis une solution pour toi : fais simplement Ctrl t
(T minuscule, comme transfert)➯ ça y'est ! ton UF est affiché ! :)

tu peux voir que la nouvelle taille plus petite du UF n'a pas qu'un côté esthétique :
ça a aussi un côté très pratique, car en arrière-plan, sur la feuille "Inventaire",
on voit très bien les 4 premières colonnes A à D. (ce sera très utile plus tard !)

tout c'qu'on va voir sur le UF sera pareil que si on l'avait ouvert depuis "Transfert",
à part justement la possibilité d'avoir en arrière-plan les infos sus-mentionnées ;
le résultat sera identique : écriture à la fois sur "Inventaire" et sur "Transfert".

--------------------------------------------------------------------------------------------------

(note : tu viens de faire Ctrl t, et le UF Transfer est affiché)

sans rien changer, clique en bas sur la flèche bas de « Destination : » ; tu peux voir
que la liste est vide ; un bug ? non, pas du tout ; c'est normal, car ce n'est plus la
sub Initialize() qui crée cette liste ; tu comprendras bientôt pourquoi.

clique sur la flèche bas de « Provenance : » ; il n'y a que « Magasin » : ça aussi,
c'est normal (et c'est comme avant).

clic / bouton bas (Transfert du stock) ➯ « Veuillez choisir un Code article » ;
clic / bouton OK ; note que le focus est sur CB_Pièce.

regarde la liste Destination : inchangée, elle est toujours vide, n'est-ce pas ?
le message d'erreur ci-dessus n'y a pas touché : la liste est la même : vide.

sélectionne le Code article "FV001.0006" ; oh ! non seulement Provenance = OA01,
mais en plus ça a rempli automatiquement les 5 labels en dessous ! et sans devoir
cliquer inutilement sur un bouton Recherche !
c'est-y pas mieux, ça ? j't'avais bien
dit qu'ton bouton Recherche est inutile ! 😊

--------------------------------------------------------------------------------------------------

clique sur bouton bas ; message d'erreur possible si Stock provenance = 0 :
« Stock provenance vide => retrait impossible ! » ; c'est pas le cas ➯
« Veuillez choisir un Magasin de destination. »

essaye de choisir la Destination "OA01" ; tu vas dire : « c'est pas possible car la liste
est vide » ; non, plus maintenant, alors essaye de choisir "OA01" ; oh ! ça alors !
la liste
Destination n'est plus vide ! et y'a pas OA01 !!!
c'est devenu impossible
de choisir un magasin de Destination identique au
magasin Provenance !!! 😊

eh oui : désormais, la liste est dynamique et ne contient plus le magasin de
provenance ; c'est pourquoi j'ai supprimé ce message d'erreur, devenu
inutile : « Le Magasin de destination doit être différent de la provenance ».

--------------------------------------------------------------------------------------------------

juste pour info, ne fais RIEN de c'qui est ici entre les 2 lignes de tirets !
(sinon, ça va gêner la démo en cours !)


* la recherche est faite à la fin de la sub CB_Pièce_Change() ; c'est donc cette sub
qui écrit les infos des 5 labels.

* toujours à la fin de la sub CB_Pièce_Change(), il y a un .ListIndex qui dépend
de ComboBox1, et qui fait un appel implicite à ComboBox1_Change() ; cette
sub ComboBox1_Change() appelle la sub ListMagD(), qui construit la liste
Destination ; donc la liste des magasins de destination a été construite quand
tu as sélectionné le Code article "FV001.0006", avant même que tu cliques sur
bouton bas pour pouvoir vérifier que s'affiche bien le message d'erreur :
« Veuillez choisir un Magasin de destination. ».

* attention : la liste ListMagD est supprimée si tu changes Code article :
1ère instruction de la sub CB_Pièce_Change() :
ComboBox2.Clear

* pour "Quantité transférée", il y a toujours 3 messages d'erreur.
(les mêmes qu'avant).

--------------------------------------------------------------------------------------------------

reprenons la démo : tu avais essayé de choisir la Destination "OA01", mais c'était
impossible ! note bien que pour la Provenance "OA01" : Stock Provenance = 4 ;
c'est juste, car en A5 : "FV001.0006" ; en L5 : "OA01" ; en D5 : 4 (ici, tu vois bien que
mon petit formulaire est super pratique pour voir des infos sur la feuille de calcul ! mon écran large
de 17 pouces me permet de voir en entier les colonnes A à L ; mais sur un PC portable, c'est moins
évident !)
; pour Provenance, sélectionne KH01Stock Provenance : 50 ; les 4
autres labels sont restés inchangés ; là aussi, c'est l'appel implicite précédent
du .ListIndex à ComboBox1_Change() qui a fait ce qu'il faut : mise à jour de
Stock Provenance par appel de la sub MajStkProv(), appel qui est situé juste
à gauche de l'appel de ListMagD() :
Call MajStkProv: ListMagD ; vérifions sur
la feuille de calcul : en A6 : "FV001.0006" ; en L6 : "KH01" ; en D6 : 50 ; oui,
c'est juste là aussi ! 😊

si tu regardes la liste Destination, tu peux voir que cette fois, c'est "KH01" qui
manque ; normal, puisque Provenance est "KH01" ; la liste Destination a été
reconstruite par la sub ComboBox1_Change() ; mais cette fois par l'appel habituel et
non par l'appel implicite dû au .ListIndex de CB_Pièce_Change() ; et c'est toujours la même sub
ListMagD() qui a été appelée.


--------------------------------------------------------------------------------------------------

choisis la Destination "TE01" ; pour la Quantité transférée, saisis 2, mais ne
clique pas encore sur bouton bas !


regarde la ligne 6 de la feuille de calcul ; en A6 : "FV001.006" ; en L6 : "KH01" ;
c'est donc cette ligne 6 qui sera la source du prélèvement de stock ; en D6 : 50.

regarde la ligne 7 de la feuille de calcul ; en A7 : "FV001.006" ; en L7 : "TE01" ;
c'est donc cette ligne 7 qui recevra la quantité transférée ; en D7 : 150.

clic / bouton bas ➯ en D6 : 48 ; en D7 : 152 ;
sur le UF : Stock Provenance = 48

--------------------------------------------------------------------------------------------------

choisis la Destination "SA01".

clic / bouton bas ➯ en D6 : 46 ; ajout de la ligne 11 :

* en A11 : "FV001.006"
* en B11 : "VISSERIE & BOULONNERIE"
* en C11 : rien (car pas de Stock initial en début d'exercice comptable)
* en D11 : 2 (= au seuil d'alerte article à commander rapidement !)
* en E11 : 2 (seuil d'alerte, le même que celui de la ligne source)
* en F11 : "CHEVILLE EN PLASTIQUE DIA 6"
* en G11 : "DIA 6"
* en H11 : "PE"
* en I11 : "Transfert"
* en J11 : rien (car c'est un transfert d'un magasin à un autre)
* en K11 : rien (car c'est un transfert d'un magasin à un autre)
* en L11 : "SA01"

sur le UF : Stock Provenance = 46

--------------------------------------------------------------------------------------------------

maintenant, sans fermer le UF, va sur la feuille "Transfert" ; impossible ? non, car
c'est maintenant « débloqué » : quand le UF est affiché, tu peux facilement passer
d'une feuille à une autre ; et sur "Transfert", tu peux voir que les 2 opérations de
transfert que tu viens de faire y sont bien notées ! 😊

* en E3 : "Stock avant transfert" (j'l'avais fait manuellement, avant exécution de la macro)
* en E4 : 50 (Stock avant transfert)
* en J4 : 2 (Quantité transférée)
* en K4 : 48 (STOCK PR = 50 - 2 = 48)
* en L4 : 152 (STOCK DES) ; et voilà le fautif ! c'est à cause de lui que c'est plus simple de
commencer par la feuille "Inventaire", puisque c'est là qu'on a calculé le nouveau stock de
destination (soit par modif d'une ligne déjà existante, soit par ajout d'une nouvelle ligne en
fin de tableau, selon que la ligne de destination existe déjà ou non).

(pour toutes les infos du tableau, je vais mettre une image dans le post suivant)


soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Image.jpg

soan
 

soan

XLDnaute Barbatruc
Inactif
quand tu ouvres le UF Transfer :

* si tu t'es trompé, tu peux appuyer sur la touche Echap pour le refermer.

* le contrôle actif est le petit bouton de recherche d'une pièce dans l'inventaire ;
tu peux appuyer sur la touche Espace pour ouvrir ce 2ème formulaire.


---------------------------------------------------------------------------------------

* dans le 1er UF Transfer, regarde comme c'est pratique d'utiliser la touche
TAB pour passer d'un champ au suivant ; fais Maj TAB pour retourner au
champ précédent.

* dans le 2ème UF, une recherche n'affiche plus de doublons inutiles.

---------------------------------------------------------------------------------------

regarde le code VBA de ces 2 UF, et aussi Module1.


soan
 

soan

XLDnaute Barbatruc
Inactif
code VBA complet du UF Transfer (204 lignes) :
VB:
Option Explicit

Dim TblInv, QT&, QD&, lgS&, lgD&, lgT&, flgAdd As Boolean

Private Sub Bouton_Recherche_Pièce_Click()
  ModeSaisieAuto = "Pièce Transfer"
  With UF_Saisie_Auto
    .Caption = "Recherche dans l'inventaire": .TB_Texte = "": .Show
  End With
End Sub

Private Sub Bouton_Recherche_Pièce_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If KeyAscii = 27 Then Unload Me
End Sub

Private Sub ListMagD()
  Dim n&, i&: ComboBox2.Clear
  With Worksheets("Compte magasin")
    n = .Cells(Rows.Count, 2).End(3).Row
    For i = 2 To n
      With .Cells(i, 2)
        If .Value <> ComboBox1 Then ComboBox2.AddItem .Value
      End With
    Next i
  End With
  ComboBox2.SetFocus
End Sub

Private Sub MajStkProv()
  Dim i&
  For i = 1 To UBound(TblInv)
    If TblInv(i, 1) = CB_Pièce Then
      If TblInv(i, 12) = ComboBox1 Then
        stocktr = TblInv(i, 4): Exit For
      End If
    End If
  Next i
End Sub

Private Sub CB_Pièce_Change()
  On Error Resume Next
  ComboBox2.Clear: Quantitetr = ""
  catetr = "": Desitr = "": reftr = "": stocktr = "": unitr = ""
  With ComboBox1
    .Clear
    If CB_Pièce = "Code article" Then
      .AddItem "Magasin": .ListIndex = 0: Exit Sub
    End If
    Dim i&
    For i = 1 To UBound(TblInv)
      If TblInv(i, 1) = CB_Pièce Then
        .AddItem TblInv(i, 12) 'crée la liste magasin Provenance
        'écrit les infos des 5 labels (seulement s'ils sont vides)
        If catetr = "" Then catetr = TblInv(i, 2)    'Catégorie
        If Desitr = "" Then Desitr = TblInv(i, 6)    'Désignation
        If reftr = "" Then reftr = TblInv(i, 7)      'Référence
        If stocktr = "" Then stocktr = TblInv(i, 4)  'Stock Provenance
        If unitr = "" Then unitr = TblInv(i, 8)      'Unité
      End If
    Next i
    .ListIndex = 0
  End With
End Sub

Private Sub ComboBox1_Change()
  Quantitetr = "": If catetr = "" Then Exit Sub
  Call MajStkProv: ListMagD
End Sub

Private Sub GetLig(Mag$, n&, lg2&)
  Dim i&
  For i = 1 To n
    If TblInv(i, 1) = CB_Pièce Then
      If TblInv(i, 12) = Mag Then lg2 = i + 2: Exit For
    End If
  Next i
End Sub

Private Sub MajInventaire()
  Dim QS&, n&
  With Worksheets("Inventaire")
    n = UBound(TblInv): lgS = 0: lgD = 0
    GetLig ComboBox1, n, lgS: If lgS = 0 Then Exit Sub
    GetLig ComboBox2, n, lgD: flgAdd = 0
    If lgD = 0 Then
      flgAdd = -1: lgD = n + 3
      If lgD = 26 Then '26 = n° de la ligne en bleu clair (en bas)
        MsgBox "Le tableau en feuille Inventaire est plein !", 48
        lgD = 0: Exit Sub 'on fait rien, et on sort de la sub !
      End If
    End If
    Application.ScreenUpdating = 0: .Unprotect: QT = Val(Quantitetr)
    With .Cells(lgS, 4)
      QS = .Value - QT: .Value = QS: stocktr = QS
    End With
    With .Cells(lgD, 4)
      If flgAdd Then
        .Offset(, -3) = CB_Pièce           'Code article
        .Offset(, -2) = catetr             'Catégorie
        .Offset(, 1) = TblInv(lgS - 3, 5)  'Seuil d'alerte
        .Offset(, 2) = Desitr              'Descriptif
        .Offset(, 3) = reftr               'Référence
        .Offset(, 4) = unitr               'Unité de mesure
        .Offset(, 5) = "Transfert"         'Observations
        .Offset(, 8) = ComboBox2           'Magasin
      End If
      QD = Val(.Value) + QT: .Value = QD   'Stock actuel
    End With
    .Protect: Application.ScreenUpdating = -1
  End With
End Sub

Private Sub LigneTransfert()
  'remplir une ligne sur le tableau de la feuille "Transfert",
  'mais s'il n'y a plus de ligne libre, on ne fait rien !
  With Worksheets("Transfert")
    lgT = .Cells(Rows.Count, 1).End(3).Row + 1
    If lgT = 24 Then '24 = n° de la ligne en bleu clair (en bas)
      MsgBox "Le tableau en feuille Transfert est plein !", 48
      lgT = 0: Exit Sub 'on fait rien, et on sort de la sub !
    End If
    Dim Stock1&, Stock2&
    Application.ScreenUpdating = 0: .Unprotect
    Stock2 = Val(stocktr): Stock1 = Stock2 + QT
    With .Cells(lgT, 1)
      .Value = CB_Pièce          'Code article
      .Offset(, 1) = catetr      'Catégorie
      .Offset(, 2) = Desitr      'Désignation
      .Offset(, 3) = reftr       'Référence
      .Offset(, 4) = Stock1      'Stock actuel
      .Offset(, 5) = unitr       'Unité
      .Offset(, 6) = Date        'Date
      .Offset(, 7) = ComboBox1   'Provenance
      .Offset(, 8) = ComboBox2   'Destination
      .Offset(, 9) = QT          'Quantité transférée
      .Offset(, 10) = Stock2     'STOCK PR
      .Offset(, 11) = QD         'STOCK DES
    End With
    .Protect: Application.ScreenUpdating = -1
  End With
End Sub

Private Sub UndoOpInv()
  Application.ScreenUpdating = 0
  With Worksheets("Inventaire")
    .Unprotect
    With .Cells(lgS, 4): .Value = .Value + QT: End With
    With .Cells(lgD, 4)
      If flgAdd Then .Offset(, -3).Resize(, 12).ClearContents _
        Else .Value = .Value - QT
    End With
    .Protect
  End With
  Application.ScreenUpdating = -1
End Sub

Private Sub CommandButton1_Click()
  If CB_Pièce = "Code article" Then
    MsgBox "Veuillez choisir un Code article.", 64, "Article requis": CB_Pièce.SetFocus: Exit Sub
  End If
  If Val(stocktr) = 0 Then MsgBox "Stock provenance vide => retrait impossible !": Exit Sub
  If ComboBox2 = "" Then MsgBox "Veuillez choisir un Magasin de destination.": Exit Sub
  Dim T$, Qté&, chn$, b As Byte: T = "Contrôle Quantité"
  chn = Quantitetr: If chn = "" Then MsgBox "Veuillez saisir une Quantité.", 64, T: Quantitetr.SetFocus: Exit Sub
  chn = Replace$(chn, ",", "."): If InStr(chn, ".") > 0 Then b = 1 'ni « , » ni « . » car Qté : nombre entier !
  Qté = Val(chn): If Qté = 0 Then b = 1 'si chn est du texte ou 0, alors Qté = 0 => refusé !
  If b = 1 Then
    MsgBox "Veuillez entrer une quantité valide !", 64, T
    Quantitetr = "": Quantitetr.SetFocus: Exit Sub
  End If
  If Qté > Val(stocktr.Caption) Then
    MsgBox "Quantité supérieure au stock actuel !", 64, T
    Quantitetr = "": Quantitetr.SetFocus: Exit Sub
  End If
  'si y'a pas eu d'écriture sur "Inventaire", on quitte cette sub SANS
  Call MajInventaire: If lgD = 0 Then Exit Sub 'appeler LigneTransfert
  Call LigneTransfert: If lgT = 0 Then UndoOpInv
  'ci-dessus : si y'a pas eu d'écriture sur "Transfert", faut ANNULER
  'l'opération qui a été faite sur "Inventaire", car une opération de
  'transfert n'est PAS valable si on n'a pas pu l'écrire sur une des
  'deux feuilles "Inventaire" ou "Transfert".
End Sub

Private Sub UserForm_Initialize()
  Dim dik, dlg&, i&: Application.ScreenUpdating = 0
  Set dik = CreateObject("Scripting.Dictionary")
  With Worksheets("Inventaire")
    dlg = .Cells(Rows.Count, 1).End(3).Row
    If dlg = 3 Then MsgBox "Il n'y a aucun article.", 64, "Inventaire vide": Exit Sub
    TblInv = .Range("A3:L" & dlg)
  End With
  Datetr = Date: Mid$(TblInv(1, 1), 5, 1) = " "
  For i = 1 To UBound(TblInv)
    If TblInv(i, 1) <> "" Then dik(TblInv(i, 1)) = ""
  Next i
  With CB_Pièce
    .List = dik.Keys: .ListIndex = 0
  End With
End Sub

Private Sub UserForm_Activate()
  Left = 375: Top = 204
End Sub
soan
 

soan

XLDnaute Barbatruc
Inactif
code VBA complet de UF_Saisie_Auto (65 lignes) :
VB:
Option Compare Text 'pas de différence minuscule/majuscule

Public T1

Private Sub TB_Texte_Change()
  Dim T2(), dik, Indice As Integer, j As Long
  LB_Suggestions.Clear: If TB_Texte = "" Then Exit Sub
  Set dik = CreateObject("Scripting.Dictionary")
  For j = 2 To UBound(T1)
    If T1(j, 1) Like TB_Texte & "*" Then dik(T1(j, 1)) = ""
  Next j
  LB_Suggestions.List = dik.Keys
End Sub

Private Sub LB_Suggestions_Click()
  If LB_Suggestions = "(vide)" Then _
    MsgBox "Veuillez choisir une entrée valide": Exit Sub
  If LB_Suggestions.ListIndex = -1 Then _
    MsgBox "Veuillez choisir un nom": Exit Sub
  Select Case ModeSaisieAuto
    Case "Pièce Entrée":   UF_Entrées.CB_Pièce = LB_Suggestions
    Case "Pièce Sortie":   UF_Sorties.CB_Pièce = LB_Suggestions
    Case "Fournisseur":    UF_Entrées.CB_Fournisseur = LB_Suggestions
    Case "Technicien":     UF_Sorties.CB_Technicien = LB_Suggestions
    Case "Pièce Transfer": Transfer.CB_Pièce = LB_Suggestions
  End Select
  Transfer.ComboBox1.SetFocus: Unload Me
End Sub

Private Sub Bouton_Valider_Click()
  If LB_Suggestions.ListIndex = -1 Then _
    MsgBox "Veuillez choisir un nom": Exit Sub
  Select Case ModeSaisieAuto
    Case "Pièce Entrée":   UF_Entrées.CB_Pièce.Value = LB_Suggestions
    Case "Pièce Sortie":   UF_Sorties.CB_Pièce.Value = LB_Suggestions
    Case "Fournisseur":    UF_Entrées.CB_Fournisseur.Value = LB_Suggestions
    Case "Technicien":     UF_Sorties.CB_Technicien.Value = LB_Suggestions
    Case "Pièce Transfer": Transfer.CB_Pièce.Value = LB_Suggestions
  End Select
  Transfer.ComboBox1.SetFocus: Unload Me
End Sub

Private Sub Bouton_Effacer_Click()
  TB_Texte = "": TB_Texte.SetFocus
End Sub

Private Sub Bouton_Fermer_Click()
  Unload Me
End Sub

Private Sub UserForm_Activate()
  On Error GoTo Fin
  Application.ScreenUpdating = 0
  Select Case ModeSaisieAuto
    Case "Pièce Entrée":   T1 = Range("Liste_Pièces")
    Case "Pièce Sortie":   T1 = Range("Liste_Pièces")
    Case "Fournisseur":    T1 = Range("Liste_Fournisseurs")
    Case "Technicien":     T1 = Range("Liste_Techniciens")
    Case "Pièce Transfer": T1 = Range("Liste_Pièces")
  End Select
  Left = 420: Top = 282
  Application.ScreenUpdating = -1: Exit Sub
Fin: MsgBox Error$
End Sub
soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
code VBA complet de Module1 (j'ai laissé la 1ère sub telle qu'elle était,
et j'ai mis un long commentaire pour la 2ème sub) :

VB:
Option Explicit

Function DernièreSauvegarde()
  Application.Volatile
  DernièreSauvegarde = ThisWorkbook.BuiltinDocumentProperties("Last Save Time")
End Function


'ShowTransfert

'  affiche le UF Transfer UNIQUEMENT si la feuille active est
'  la feuille Transfert (a) OU la feuille "Inventaire" (b) ;
'  cette sécurité fait que le UF Transfer ne pourra pas être
'  affiché depuis une autre feuille du classeur.

'  (a) lancement par clic sur le bouton Transfert ou par Ctrl t
'  (b) lancement par le raccourci clavier Ctrl t uniquement

'  noter que c'est très pratique de pouvoir faire un transfert
'  depuis la feuille Inventaire, car lorsque le UF est affiché,
'  on peut voir en arrière-plan, sur la feuille de calcul, ces
'  4 éléments des colonnes A à D : Code article ; Catégorie ;
'  SI = Stock initial (en début d'année) ; Stock actuel (selon
'  les mouvements du stock) = SI + Entrées - Sorties

Sub ShowTransfert()
  Dim chn$: chn = ActiveSheet.Name
  If chn = "Transfert" Or chn = "Inventaire" Then Transfer.Show
End Sub
soan
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir issam,

pas de retour ? :confused:

* serais-tu fâché car j'ai supprimé le gros bouton bleu « Recherche » ? :p

* serais-tu vexé car ça affiche automatiquement les infos des 5 labels
sans devoir appuyer inutilement sur un bouton « Recherche » ? 😜

* peut-être est-ce tout simplement car il te faut du temps pour lire
toutes les infos de mes posts précédents ? (si oui, j'peux attendre)

* peut-être es-tu sidéré par les nouvelles possibilités de ton appli,
dont la facilité d'ergonomie s'est grandement accrue ? (y compris
la liste dynamique Destination et la liste de recherche d'articles
sans doublons)

* pour moi, l'transfert est ok, mais si t'as besoin d'une adaptation,
n'hésite pas à la demander. :)

* peut-être que tu es trop pris par des affaires persos pour
essayer le nouveau fichier ? (là aussi, prends ton temps)

* peut-être que cet exo ne t'intéresse plus ?


soan
 

issam salem

XLDnaute Junior
Bonjour cher @soan
Merci...c'est un mot trop simple. Ce que je souhaiterai exprimer est au dessus de cela. Je suis à la fois touché et reconnaissant pour l'aide que tu m'as apportée...et je ne pourrai jamais te remercier assez.
ici C'est un Excellent travail,Je m'excuse de ne pas avoir répondu rapidement à des circonstances indépendantes de ma volonté.🙏🙏🙏🙏
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Jean-marie,

j'ai dû m'absenter, et je viens seulement de lire ton dernier post #42.

je n'ai pas compris ta demande : tu as téléchargé mon fichier et tu l'as modifié : ok ;
mais le fichier qui est sur le site mon-partage.fr n'a pas changé ; donc si tu veux
de nouveau l'original, il te suffit de le télécharger à nouveau grâce au même lien,
n'est-ce pas ? 😜 (ou peut-être quelque chose m'a échappé, et que tu demandes autre chose
de très différent ?)


le lien du dernier fichier était dans mon post #32, juste sous la 2ème ligne de
tirets ; je n'ai pas mis de date de fin, donc le fichier est toujours disponible.


soan
 

soan

XLDnaute Barbatruc
Inactif
ajout pour @ChTi160

dans ton post #42, tu as écrit : « soan , pourrais tu me mettre un fichier modifié ! »

serait-ce que tu demandes une adaptation du fichier que j'ai fait pour issam ?

si oui, indique-moi quelle est la modification que tu voudrais, et je la ferai,
si c'est dans mes compétences.
😜


soan
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 695
dernier inscrit
acimi