IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro validation depuis une même commande


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Macro validation depuis une même commande
    Bonjour à tous les internautes et cracks d'excel!!

    je sollicite votre aide pour le problème de macro suivant:
    j'ai un fichier de gestion des stocks qui à l'origine devait permettre la mise à jour de stock dans la feuille "produits référencés" depuis un bouton de commande dénommé "validé" et intégrer dans le module 1.

    j'ai voulu intégrer une fonction supplémentaire à ce bouton de commande afin que chaque mouvement de stock (entrée, sortie) apparaisse dans la feuille "mouvements quotidiens".

    et là problème!! si les mouvements quotidiens de stocks se font bien sur la feuille "mouvements quotidiens' (sauf pour le fournisseur - cellule B8 de la feuille "saisie"), le stock ne se met plus du tout à jour dans la feuille "produits référencés" !!

    j'en appelle ainsi à l'aide des internautes de ce site.

    d'avance merci beaucoup!!!!

    mon fichier est joint au présent message et le le code à l'origine se présentait comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    Sub Bouton2_QuandClic()
     
    pprod = Range("b4").Value
    op = Range("b5").Value
    vvaleur = Range("b6").Value
    ddate = Range("b7").Value
    vdiff = Range("b10").Value
     
     
    If op = "" Or vvaleur = "" Or ddate = "" Or pprod = "" Then
    MsgBox ("Toutes les zones doivent être renseignées")
    Exit Sub
    End If
     
    If op <> "Commande" Then
     
        rep = MsgBox("Vous allez mettre à jour le stock, Voulez vous contiuer ?", vbYesNo)
     
        If rep = vbYes Then
        Range("b5:b6").ClearContents
            Worksheets("Produits Référencés").Select
            Cells.Find(What:=pprod, After:=ActiveCell, LookIn:=xlFormulas, _
                lookat:=xlWhole, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False).Activate
     
            If op = "Inventaire" Then
            Cells(ActiveCell.Row, 6).Value = vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
                   End If
     
            If op = "Entrée" Then
            Cells(ActiveCell.Row, 6).Value = Cells(ActiveCell.Row, 6).Value + vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
     
            End If
     
            If op = "Sortie" Then
            Cells(ActiveCell.Row, 6).Value = Cells(ActiveCell.Row, 6).Value - vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
     
            End If
     
        End If
        Worksheets(2).Select
     
    Else
     
        rep2 = MsgBox("Vous allez mettre à jour les commandes, Voulez vous contiuer ?", vbYesNo)
        If rep2 = vbYes Then
            Range("b5:b6").ClearContents
            Worksheets("Commande").Select
            Range("a1").Activate
     
            Cells.Find(What:=pprod, After:=ActiveCell, LookIn:=xlValues, _
            lookat:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
     
            Cells(ActiveCell.Row, 2).Value = ddate
            Cells(ActiveCell.Row, 3).Value = vvaleur
            Cells(ActiveCell.Row, 4).Value = "Non"
          End If
    End If
     
     
     
    End Sub
     
    Sub Bcomm_QuandClic()
    Range("d3:d500").Select
     
    For Each cece In Selection
    If cece.Value = "Oui" Then
        dquant = Cells(cece.Row, cece.Column - 1).Value
        ddate = Range("b1").Value
        dprod = Cells(cece.Row, cece.Column - 3).Value
        lili1 = cece.Row - 1
        lili2 = cece.Row + 500 - 1
     
    Worksheets("Produits Référencés").Select
    Cells(lili1, 6).Value = Cells(lili1, 6).Value + dquant
     
    Worksheets("Commande").Select
    Cells(cece.Row, cece.Column - 2).ClearContents
    Cells(cece.Row, cece.Column - 1).ClearContents
    Cells(cece.Row, cece.Column).ClearContents
     
    End If
     Next
     
    Range("a1").Select
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    bonsoir à tous!

    une solution à mon problème a été trouvée. ci-joint le code du module 1 corrigé (sauf pour le cas de la retranscription de la cellule B8 dans la colonne F de la feuille "mouvements quotidiens") :

    Alex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Dim pprod As String
    Sub Bouton2_QuandClic()
    Dim ddate As Date
    Dim op As String
    Dim vvaleur As Integer
     
    pprod = Range("b4").Value
    op = Range("b5").Value
    vvaleur = Range("b6").Value
    ddate = Format(Range("b7").Value, "dd/mm/yyyy")
    vdiff = Range("b10").Value
     
     
    If op = "" Or vvaleur = 0 Or ddate = 0 Or pprod = "" Then
    MsgBox ("Toutes les zones doivent être renseignées")
    Exit Sub
    End If
    Select Case op
        Case "Commande"
                rep2 = MsgBox("Vous allez mettre à jour les commandes, Voulez vous continuer ?", vbYesNo)
                    If rep2 = vbYes Then
                        Range("b5:b6").ClearContents
                        Worksheets("Commande").Range("a1").Activate
     
                        Cells.Find(What:=pprod, After:=ActiveCell, LookIn:=xlValues, _
                        lookat:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                        MatchCase:=False, SearchFormat:=False).Activate
     
                        Cells(ActiveCell.Row, 2).Value = ddate
                        Cells(ActiveCell.Row, 3).Value = vvaleur
                        Cells(ActiveCell.Row, 4).Value = "Non"
                        Call maj(ddate, pprod, op, vvaleur, "")
                    End If
     
        Case "Inventaire"
            If message1 = 0 Then Exit Sub
            Cells(ActiveCell.Row, 6).Value = vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
            Call maj(ddate, pprod, op, vvaleur, "")
     
        Case "Entrée"
            If message1 = 0 Then Exit Sub
            Cells(ActiveCell.Row, 6).Value = Cells(ActiveCell.Row, 6).Value + vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
            Call maj(ddate, pprod, op, vvaleur, "")
     
        Case "Sortie"
            If message1 = 0 Then Exit Sub
            Cells(ActiveCell.Row, 6).Value = Cells(ActiveCell.Row, 6).Value - vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
            Call maj(ddate, pprod, op, vvaleur, "")
        End Select
    Worksheets(2).Select
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Function message1()
    message1 = 0
    rep = MsgBox("Vous allez mettre à jour le stock, Voulez vous continuer ?", vbYesNo)
     
        If rep = vbYes Then
        Range("b5:b6").ClearContents
            Worksheets("Produits Référencés").Select
            Cells.Find(What:=pprod, After:=Cells(1, 1), LookIn:=xlValues, _
                        lookat:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                        MatchCase:=False, SearchFormat:=False).Activate
        message1 = 1
        End If
     
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub maj(£ddate As Date, £pprod As String, £op As String, £vvaleur As Integer, fournisseur As String)
    'date    produits    mouvement   quantité
    Dim dl1 As Long ' dernière ligne
    With Sheets("Mouvements quotidiens")
     
    dl1 = .Range("b65536").End(xlUp).Row + 1
    .Range("b" & dl1) = £ddate
    .Range("c" & dl1) = £pprod
    .Range("d" & dl1) = £op
    .Range("e" & dl1) = £vvaleur
    '.Range("f" & dl1) = fournisseur
    End With
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Sub Bouton2_QuandClic2()
     
    pprod = Range("b4").Value
    op = Range("b5").Value
    vvaleur = Range("b6").Value
    ddate = Range("b7").Value
    vdiff = Range("b10").Value
     
     
    If op = "" Or vvaleur = "" Or ddate = "" Or pprod = "" Then
    MsgBox ("Toutes les zones doivent être renseignées")
    Exit Sub
    End If
     
    If op <> "Commande" Then
     
        rep = MsgBox("Vous allez mettre à jour le stock, Voulez vous contiuer ?", vbYesNo)
     
        If rep = vbYes Then
        Range("b5:b6").ClearContents
            Worksheets("Produits Référencés").Select
            Cells.Find(What:=pprod, After:=Cells(1, 1), LookIn:=xlValues, _
                        lookat:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
                        MatchCase:=False, SearchFormat:=False).Activate
     
            If op = "Inventaire" Then
            Cells(ActiveCell.Row, 6).Value = vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
                   End If
     
            If op = "Entrée" Then
            Cells(ActiveCell.Row, 6).Value = Cells(ActiveCell.Row, 6).Value + vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
     
            End If
     
            If op = "Sortie" Then
            Cells(ActiveCell.Row, 6).Value = Cells(ActiveCell.Row, 6).Value - vvaleur
            lili1 = ActiveCell.Row
            lili2 = ActiveCell.Row + 151
     
            End If
     
        End If
        Worksheets(2).Select
     
    Else
     
        rep2 = MsgBox("Vous allez mettre à jour les commandes, Voulez vous contiuer ?", vbYesNo)
        If rep2 = vbYes Then
            Range("b5:b6").ClearContents
            Worksheets("Commande").Select
            Range("a1").Activate
     
            Cells.Find(What:=pprod, After:=ActiveCell, LookIn:=xlValues, _
            lookat:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
     
            Cells(ActiveCell.Row, 2).Value = ddate
            Cells(ActiveCell.Row, 3).Value = vvaleur
            Cells(ActiveCell.Row, 4).Value = "Non"
          End If
    End If
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub Bcomm_QuandClic()
    Range("d3:d500").Select
     
    For Each cece In Selection
    If cece.Value = "Oui" Then
        dquant = Cells(cece.Row, cece.Column - 1).Value
        ddate = Range("b1").Value
        dprod = Cells(cece.Row, cece.Column - 3).Value
        lili1 = cece.Row - 1
        lili2 = cece.Row + 500 - 1
     
    Worksheets("Produits Référencés").Select
    Cells(lili1, 6).Value = Cells(lili1, 6).Value + dquant
     
    Worksheets("Commande").Select
    Cells(cece.Row, cece.Column - 2).ClearContents
    Cells(cece.Row, cece.Column - 1).ClearContents
    Cells(cece.Row, cece.Column).ClearContents
     
    End If
     Next
     
    Range("a1").Select
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JDialog modale sans bouton avec validation depuis une Liste
    Par pcouas dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 21/01/2009, 08h33
  2. Gérer l'ordre des controles de validation sur une même page
    Par slideveloppeur2006 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/04/2008, 14h26
  3. Lancer une macro excel depuis une macro powerpoint
    Par toma65 dans le forum VBA PowerPoint
    Réponses: 7
    Dernier message: 12/06/2007, 09h41
  4. Piloter une macro/Excel depuis une application VB
    Par pjbou dans le forum Windows Forms
    Réponses: 1
    Dernier message: 24/04/2007, 16h01
  5. lancer une macro excel depuis une appli access
    Par LostIN dans le forum Access
    Réponses: 1
    Dernier message: 22/08/2006, 11h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo