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 :

Simplifier mon code ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Simplifier mon code ?
    Bonjour,

    Encore moi... après vos aides.
    j'ai fais ce code, je suis un novice complet en vba !
    donc désolé d'avance pour mes erreurs...

    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
     
    Private Sub CommandButton2_Click()
     
     
    pmcopie = Application.WorksheetFunction.VLookup(Range("B3").Value, Sheets("Liste").Range("A2:L51"), 9, 0)
    pmdate = Application.WorksheetFunction.VLookup(Range("B3").Value, Sheets("Liste").Range("A2:L51"), 11, 0)
    pmjustif = Application.WorksheetFunction.VLookup(Range("B3").Value, Sheets("Liste").Range("A2:L51"), 12, 0)
    pment = Application.WorksheetFunction.VLookup(Range("B3").Value, Sheets("Liste").Range("A2:L51"), 2, 0)
     
    If pmcopie = "o" Then
        Monfichier = Application.WorksheetFunction.VLookup(Range("B3").Value, Sheets("Liste").Range("A2:L51"), 10, 0)
        Rep = "Z:\Suivi dossiers PM-LS\Dossiers PP\"
        Set wb = Workbooks.Open(Filename:=Rep & Monfichier)
     
            If wb.ReadOnly Then
            MsgBox "Fichier" & Monfichier & " déjà ouvert !"
            wb.Close False
            Else
     
    Dim NewLig As Long
    Dim Sh As Worksheet
    Set Sh = Workbooks("Teste Pochette dossier PM.xlsm").Sheets("Mutual.")
     
    With Workbooks(Monfichier).Sheets("2011c")
        NewLig = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
        If NewLig < 20 Then NewLig = 20
     
        If pment = "101" Then
        .Range("A" & NewLig).Value = Sh.Range("F1").Value
        .Range("B" & NewLig).Value = Sh.Range("C10").Value
        .Range("C" & NewLig).Value = IIf(Val(Sh.Range("B13").Value) <> 0, Sh.Range("B13").Value, "")
        .Range("D" & NewLig).Value = IIf(Val(Sh.Range("B14").Value) <> 0, Sh.Range("B14").Value, "")
        .Range("E" & NewLig).Value = IIf(Val(Sh.Range("D19").Value) <> 0, Sh.Range("D19").Value, "")
        .Range("G" & NewLig).Value = IIf(Val(Sh.Range("E19").Value) <> 0, Sh.Range("E19").Value, "")
        .Range("K" & NewLig).Value = IIf(Val(Sh.Range("G19").Value) <> 0, Sh.Range("G19").Value, "")
        .Range("L" & NewLig).Value = IIf(Val(Sh.Range("F19").Value) <> 0, Sh.Range("F19").Value, "")
        .Range("M" & NewLig).Value = IIf((Sh.Range("H33").Value) = "x" Or (Sh.Range("H33").Value) = "X", "F", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("M" & NewLig).Value = IIf((Sh.Range("H34").Value) = "x" Or (Sh.Range("H34").Value) = "X", "R", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("M" & NewLig).Value = IIf((Sh.Range("H35").Value) = "x" Or (Sh.Range("H35").Value) = "X", "E", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("S" & NewLig).Value = "Accepté"
        .Range("U" & NewLig).Value = IIf((Sh.Range("D36").Value) = "x" Or (Sh.Range("D36").Value) = "X", "", "x")
        .Range("V" & NewLig).Value = IIf((Sh.Range("D35").Value) = "x" Or (Sh.Range("D35").Value) = "X", "", "x")
        .Range("X" & NewLig).Value = IIf((Sh.Range("D37").Value) = "x" Or (Sh.Range("D37").Value) = "X", "", "x")
        .Range("Y" & NewLig).Value = IIf((Sh.Range("D38").Value) = "x" Or (Sh.Range("D38").Value) = "X", "", "x")
     
        ElseIf pment <> "101" And pmdate = "n" And pmjustif = "0" Then
        .Range("A" & NewLig).Value = Sh.Range("F1").Value
        .Range("B" & NewLig).Value = Sh.Range("C10").Value
        .Range("C" & NewLig).Value = IIf(Val(Sh.Range("D19").Value) <> 0, Sh.Range("D19").Value, "")
        .Range("E" & NewLig).Value = IIf(Val(Sh.Range("E19").Value) <> 0, Sh.Range("E19").Value, "")
        .Range("I" & NewLig).Value = IIf(Val(Sh.Range("G19").Value) <> 0, Sh.Range("G19").Value, "")
        .Range("J" & NewLig).Value = IIf(Val(Sh.Range("F19").Value) <> 0, Sh.Range("F19").Value, "")
        .Range("K" & NewLig).Value = IIf((Sh.Range("H33").Value) = "x" Or (Sh.Range("H33").Value) = "X", "F", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("K" & NewLig).Value = IIf((Sh.Range("H34").Value) = "x" Or (Sh.Range("H34").Value) = "X", "R", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("K" & NewLig).Value = IIf((Sh.Range("H35").Value) = "x" Or (Sh.Range("H35").Value) = "X", "E", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("N" & NewLig).Value = "Accepté"
        .Range("P" & NewLig).Value = IIf((Sh.Range("D36").Value) = "x" Or (Sh.Range("D36").Value) = "X", "", "x")
        .Range("Q" & NewLig).Value = IIf((Sh.Range("D35").Value) = "x" Or (Sh.Range("D35").Value) = "X", "", "x")
        .Range("S" & NewLig).Value = IIf((Sh.Range("D37").Value) = "x" Or (Sh.Range("D37").Value) = "X", "", "x")
        .Range("T" & NewLig).Value = IIf((Sh.Range("D38").Value) = "x" Or (Sh.Range("D38").Value) = "X", "", "x")
     
        Else
        .Range("A" & NewLig).Value = Sh.Range("F1").Value
        .Range("B" & NewLig).Value = Sh.Range("C10").Value
        .Range("C" & NewLig).Value = IIf(Val(Sh.Range("D19").Value) <> 0, Sh.Range("D19").Value, "")
        .Range("E" & NewLig).Value = IIf(Val(Sh.Range("E19").Value) <> 0, Sh.Range("E19").Value, "")
        .Range("I" & NewLig).Value = IIf(Val(Sh.Range("G19").Value) <> 0, Sh.Range("G19").Value, "")
        .Range("J" & NewLig).Value = IIf(Val(Sh.Range("F19").Value) <> 0, Sh.Range("F19").Value, "")
        .Range("K" & NewLig).Value = IIf((Sh.Range("H33").Value) = "x" Or (Sh.Range("H33").Value) = "X", "F", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("K" & NewLig).Value = IIf((Sh.Range("H34").Value) = "x" Or (Sh.Range("H34").Value) = "X", "R", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("K" & NewLig).Value = IIf((Sh.Range("H35").Value) = "x" Or (Sh.Range("H35").Value) = "X", "E", Workbooks(Monfichier).Sheets("2011c").Range("M" & NewLig).Value)
        .Range("N" & NewLig).Value = "Accepté"
     
        End If
     
    End With
        wb.Save
        wb.Close
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="infotec  ISC 4045 RPCS"
        Workbooks("Teste Pochette dossier PM.xlsm").Sheets("Mutual.").Range("F1").MergeArea.ClearContents
    End If
    MsgBox "Clic encore une fois le fichier était ouvert !"
    ElseIf pmcopie = "n" Then
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="infotec  ISC 4045 RPCS"
    Workbooks("Teste Pochette dossier PM.xlsm").Sheets("Mutual.").Range("F1").MergeArea.ClearContents
    End If
    Set Sh = Nothing
    Set wb = Nothing
    End Sub
    En gros il doit regarder si il y a bien un code de fichier (pm copie = o)
    Si le fichier est ouvert tu referme et tu fais rien sur ma page, just tu indique qu'il faut recommencer le clic plus tard.
    Si le fichier n'est pas ouvert alors tu copie les données suivant des conditions, tu ferme, tu sauvegarde, tu imprime et ensuite tu met à blanc une case pour montrer que ta bien fait ton travail !

    si (pm copie = n) alors tu imprime tu met à blanc la case

    et voilà

    Du coup j'ai sortie ce code qui je pense doit être possible de simplifier ou pas ?

    d'avance encore merci !

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Enfin ma question c'était surtout il y a des erreurs de novice dans mon code je pense. Alors si c'était possible de me les corriger ou optimiser le code ?

    pour l'instant il fonctionne pour moi... Il est juste un peu lent quand il vérifie si le fichier est déjà ouvert.

    Enfin encore merci.

Discussions similaires

  1. [XL-2007] Comment simplifier mon code VBA SVP?
    Par anthooooony dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2012, 10h59
  2. Comment pourrais-je simplifier mon code
    Par pierrot10 dans le forum jQuery
    Réponses: 1
    Dernier message: 28/08/2010, 09h30
  3. Simplifier mon code
    Par pierre987321 dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2010, 12h49
  4. Simplifier mon code "Majuscule/Minuscule"
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 17h05

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