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 :

Améliorer une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut Améliorer une macro
    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
    Sub nouveau()
    
        Sheets("interface").Select
        Range("A1").Select
    End Sub
    Sub produit() 'bouton VALIDER
    
    
        Sheets("interface").Select
        'test Additif 744-940U
        Range("f26").Select
        If Trim(UCase(ActiveCell)) = "ATTENTION" Then
        Dim TExte As String
            TExte = "NE PAS PROGRAMMER A LA SUITE :" & Chr$(13)
            TExte = TExte & "MF 135-1 U" & Chr$(13)
             TExte = TExte & "MF 40 U" & Chr$(13)
             TExte = TExte & "MF 60 U" & Chr$(13)
             TExte = TExte & "MF 8160 U" & Chr$(13)
             TExte = TExte & "MF 8160 USP" & Chr$(13)
             TExte = TExte & "MF 8360 U" & Chr$(13)
              TExte = TExte & "1732 P45" & Chr$(13)
               TExte = TExte & "MF 8170 U" & Chr$(13)
                TExte = TExte & "MF 8370 u" & Chr$(13)
            reponse = MsgBox(TExte, vbCritical + vbOKOnly, "ATTENTION AU PROGRAMME")
        End If
        
        Range("F25:G25").Copy
    
        Sheets("PLANFAB").Select
        If ActiveCell.Column = 3 Or ActiveCell.Column = 9 Then
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
        End If
        
    For l = 4 To 58
    
        If Cells(l, 3).Value <> "" Then
            j = l - 1
            While j >= 4 And Cells(j, 3).Value <> Cells(l, 3).Value
                j = j - 1
            Wend
        
            If j = 3 Then
                Cells(l, 5).Value = 1
                Cells(l, 6).Value = Cells(1, 14).Value & Cells(1, 6).Value & " 2001"
                
            Else
                Cells(l, 5).Value = Cells(j, 5).Value + 1
                If Cells(l, 5).Value <= 9 Then
                    Cells(l, 6).Value = Cells(1, 14).Value & Cells(1, 6).Value & " 200" & Cells(l, 5).Value
                Else: Cells(l, 6).Value = Cells(1, 14).Value & Cells(1, 6).Value & " 20" & Cells(l, 5).Value
                End If
            End If
        End If
    
    Next
    For l = 4 To 58
    
        If Cells(l, 9).Value <> "" Then
            j = l - 1
            While j >= 4 And Cells(j, 9).Value <> Cells(l, 9).Value
                j = j - 1
            Wend
        
            If j = 3 Then
                Cells(l, 11).Value = 1
                Cells(l, 12).Value = Cells(1, 14).Value & Cells(1, 6).Value & " 3001"
            Else
                Cells(l, 11).Value = Cells(j, 11).Value + 1
                If Cells(l, 11).Value <= 9 Then
                    Cells(l, 12).Value = Cells(1, 14).Value & Cells(1, 6).Value & " 300" & Cells(l, 11).Value
                Else: Cells(l, 12).Value = Cells(1, 14).Value & Cells(1, 6).Value & " 30" & Cells(l, 11).Value
                End If
            End If
        End If
    
    Next
    End Sub
    Sub retour()
        Sheets("PLANFAB").Select
    End Sub

    Voici mon code
    le soucis que j'ai c'est que je voudrais empecher un enchainement de produit (voir en rouge ce sont des contraintes)
    Je voudrais verifier la case d'avant de les comparer a mes contraintes et si c'est pas bon je dois verouiller la possibiliter a l'utilisateur d'effectuer l'enchainement

    par exemple

    j'ai un produit X je peux pas enchainer X et Y a la suite
    donc comment je peut faire pour empecher que l'utilisateur ne puisse pas enchainer cette operation


    Merci pour votre aide

  2. #2
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Bonjour,
    Je ne suis pas trop sur d'avoir compris ce que tu veux faire mais peut etre que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    reponse = MsgBox(TExte, vbCritical + vbOKOnly, "ATTENTION AU PROGRAMME")
    exit sub
    marcherait ? Exit Sub permet de quitter la procedure une fois que la boite de dialogue a ete fermee.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    oui je comprends que tu es mal compris

    j'ai oublier un truc dans mon code justement
    je voudrais verifier la case precedente pour voir si l'enchainement est correcte
    et si il n'est pas correcte ca refuse a l'utilisateur de mettre cette enchainement


    moi le seul truc que j'ai fait en rouge c'est de prevenir l'utilisateur

    ce que je dois faire et de verifier la case d'avant voir si cette case peut enchainer avec la case suivant si c'est pas possible elle ne fait pas l'enchainement



    desoler de pas l'avoir dis avant

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    merci pour l'astuce #
    tu aurais une idée pour mon probleme

    c'est a dire verifier la case d'avant et la comparer a mes contraintes

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Difficile à comprendre... C'est quoi cette "case d'avant" ? Quelle sont tes contraintes
    If quoi ? then exit sub ?
    A+

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Par défaut
    j'ai un programme qui gere un planning de fabrication
    sur un tableau excel
    j'utilise une macro pour ecrire les produits les lots les numero d'ordre et les numeros de produits
    par exemple

    Mardi je fait 5 produits differents
    mf 100
    mf250
    mf 654
    mf456
    mf987

    le probleme c'est que je dois respecter un odre de fabrication

    et pour respecte cette ordre je voudrais rajouter dans ma macro
    1er idée

    une fonction qui verifie la case au dessus et la case que je vient de faire
    pour savoir si l'ordre est correcte selon mes contraintes d'enchainement
    (EX:interdit d'enchainer le mf654 apres un mf100 ou un mf987)

    si ce n'est pas bon je ne peux pas mettre le produit


    ou 2eme idée

    je fais une fonction qui verifie le produit que je viens de mettre et qui m'interdit d'enchainer avec d'autres produits c'est a dire ca verrouille mes choix quand je fais le planning


    ou 3eme idée

    je lance une fonction qui verifie que mes enchainements sont bon
    si c'est pas bon ca me colorie la case en rouge par exemple


    dans tous les cas il faut que je trouve une fonction qui verifie l'ordre des enchainements des produits

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

Discussions similaires

  1. Améliorer une macro de commentaires
    Par arisToT dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/01/2011, 14h38
  2. améliorer une macro de classement de joueurs
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/11/2008, 18h04
  3. améliorer une macro
    Par jacfld49 dans le forum Excel
    Réponses: 2
    Dernier message: 03/11/2008, 23h39
  4. Recherche de l'aide pour améliorer une macro excel
    Par Yul80 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2008, 10h21
  5. améliorer une macro
    Par casavba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2007, 06h02

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