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 :

Aide pour simplifier un code VBA Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Aide pour simplifier un code VBA Excel
    Bonjour à tous,

    Est-il possible de simplifier ce code. Si oui, pouvez-vous m'aider car je ne sais pas le faire.
    Je vous en remercie beaucoup.
    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
    Sub mef()
        Range("A1:K56").Select
        Range("K1").Activate
        ActiveSheet.PageSetup.PrintArea = "$A$1:$K$56"
        With ActiveSheet.PageSetup
            .PrintTitleRows = ""
            .PrintTitleColumns = ""
        End With
        ActiveSheet.PageSetup.PrintArea = "$A$1:$K$56"
        With ActiveSheet.PageSetup
            .LeftHeader = ""
            .CenterHeader = ""
            .RightHeader = ""
            .LeftFooter = ""
            .CenterFooter = ""
            .RightFooter = ""
            .LeftMargin = Application.InchesToPoints(0)
            .RightMargin = Application.InchesToPoints(0)
            .TopMargin = Application.InchesToPoints(0)
            .BottomMargin = Application.InchesToPoints(0)
            .HeaderMargin = Application.InchesToPoints(0)
            .FooterMargin = Application.InchesToPoints(0)
            .PrintHeadings = False
            .PrintGridlines = False
            .PrintComments = xlPrintNoComments
            .PrintQuality = 600
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlPortrait
            .Draft = False
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = 100
            .PrintErrors = xlPrintErrorsDisplayed
        End With
        Columns("I:I").Select
        Selection.ColumnWidth = 9.14
        Range("A12").Select
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    Salut a toi,

    il est clair que tu ne dois pas avoir besoin de tous ces parametres d'impression mais le probleme est que nous ne savons pas lesquels te sont utiles.

    La premiere simplification pourrait etre a suivante :

    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
     
    Sub mef()
        ActiveSheet.PageSetup.PrintArea = "$A$1:$K$56"
        With ActiveSheet.PageSetup
            .PrintTitleRows = ""
            .PrintTitleColumns = ""
            .LeftHeader = ""
            .CenterHeader = ""
            .RightHeader = ""
            .LeftFooter = ""
            .CenterFooter = ""
            .RightFooter = ""
            .LeftMargin = Application.InchesToPoints(0)
            .RightMargin = Application.InchesToPoints(0)
            .TopMargin = Application.InchesToPoints(0)
            .BottomMargin = Application.InchesToPoints(0)
            .HeaderMargin = Application.InchesToPoints(0)
            .FooterMargin = Application.InchesToPoints(0)
            .PrintHeadings = False
            .PrintGridlines = False
            .PrintComments = xlPrintNoComments
            .PrintQuality = 600
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlPortrait
            .Draft = False
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = 100
            .PrintErrors = xlPrintErrorsDisplayed
        End With
        Columns("I:I").ColumnWidth = 9.14
    End Sub
    donne nous plus de details sur les parametres dont tu as besoin...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    En fait, lorsque j'enregistre la feuille, je souhaite que la mise ne page soit faite, la zone d'impression sélectionnée. Je fais cela car si un utilisateur veut rééditer la feuille (c'est un bon de commande) il n'est pas à faire toutes ces manipulations.
    Merci pour ton aide
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Points : 68
    Points
    68
    Par défaut
    ceci devrait etre suffisant alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub mef()
        ActiveSheet.PageSetup.PrintArea = "$A$1:$K$56"
        With ActiveSheet.PageSetup
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
            .Zoom = 100
        End With
        Columns("I:I").ColumnWidth = 9.14
    End Sub

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    ça marche à ceci près que les marges ne sont pas à zéro. Comment faire ?

    Bonjour,

    Pour les marges, j'ai trouvé. Par contre la colonne I ne se met pas à la largeur désirée.
    Voici le code tel qu'il est dans mon application, merci pour vos suggestions.
    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
    Private Sub CmbSave_Click()
    Cells.Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.Dialogs(xlDialogSaveAs).Show ("S:\FORMULAIRES\BON DE COMMANDE\BC 2008")
        ActiveSheet.PageSetup.PrintArea = "$a$1:$k$56"
        With ActiveSheet.PageSetup
        Columns("i:i").ColumnWidth = 8.71
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4
            .Zoom = 100
            .LeftMargin = Application.InchesToPoints(0)
            .RightMargin = Application.InchesToPoints(0)
            .TopMargin = Application.InchesToPoints(0)
            .BottomMargin = Application.InchesToPoints(0)
            .HeaderMargin = Application.InchesToPoints(0)
            .FooterMargin = Application.InchesToPoints(0)
        End With
    Windows("Factures.xls").Activate
    Sheets("FormulCD").Select
    Range("g6,h14,k11,k15,d24,d25,a28:j42").Select
    Range("a28").Activate
    Selection.ClearContents
    Range("L11").Select
    Sheets("FormulCD").Visible = False
    Sheets("Engagements").Activate
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  6. #6
    Membre averti Avatar de J.Michel
    Inscrit en
    Septembre 2007
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations forums :
    Inscription : Septembre 2007
    Messages : 279
    Points : 323
    Points
    323
    Par défaut
    Bonjour,

    Je pense qu'il faut sortir la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("i:i").ColumnWidth = 8.71
    du bloc With

    Place la après le End With

    Amicalement
    (\ _ /)
    (='.'=)
    L'erreur est humaine. Mais pour une véritable catastrophe il faut un ordinateur
    (")-(") Lorsque votre problème est solutionné, merci de cliquer sur

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par J.Michel Voir le message
    Bonjour,

    Je pense qu'il faut sortir la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("i:i").ColumnWidth = 8.71
    du bloc With

    Place la après le End With

    Amicalement
    Bonjour,
    Ok merci. Mais cela ne change rien, la colonne garde sa largeur d'origine
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Est-ce qu'il serait possible lors de la sauvegarde, de sauvagarder également tous les formas de la feuille originale.
    Comment dois-je faire ?
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  9. #9
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour, une autre proposition pour les mise en page, l'utilisation des macros XL4
    L'utilisation des macros excel4 apporte un plus en terme de rapidité

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

    Pour la mise en page les arguments sont les suivants :
    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
     
    'Arg1 En-tête
    'Arg2    Pied de page
    'Arg3    Marge Gauche en pouce (diviser par 2.54, avec le point (.) en séparateur décimal
    'Arg4    Marge Droite en pouce (diviser par 2.54, avec le point (.) en séparateur décimal
    'Arg5    Marge Haut en pouce (diviser par 2.54, avec le point (.) en séparateur décimal
    'Arg6    Marge Bas en pouce (diviser par 2.54, avec le point (.) en séparateur décimal
    'Arg7    Titre FALSE= sans, TRUE =
    'Arg8    Grille FALSE ou TRUE
    'Arg9    Centré Horizontalement = 1, sinon 0
    'Arg10    Centré Verticalement = 1, sinon 0
    'Arg11 Orientation - 1 = Portrait, 2 = Paysage
    'Arg12 Type de papier - une constante XlPaperSize
    'Arg13   Echelle - nombre < 400
    'Arg14  Départ numérotation
    'Arg15  Ordre d'impression - 1 = haut en bas, 2 = Gauche à droite
    'Arg16  Couleur - 0 = avec couleur, 1 = Noir et Blanc
    'Arg17  Qualité
    'Arg18  En-tête en pouce (diviser par 2.54, avec le point (.) en séparateur décimal
    'Arg19  Pied de page en pouce (diviser par 2.54, avec le point (.) en séparateur décimal
    'Arg20  Commentaire - 0 = sans, 1 = avec
    'Arg21  Brouillon - 0 ou 1
     
    Application.ExecuteExcel4Macro "PAGE.SETUP(Arg1,Arg2,,,,,,,,,,,,,,,,,,Arg20,Arg21)"
     
    ----------------------------------------------------------------
    les arguments dont tu n'as pas besoin peuvent être omis, place juste les virgules.

    cordialement

  10. #10
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Est-ce que je dois taper toute la liste des arguments qui sont grisés ?
    Je connais pas cette façon de faire
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  11. #11
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    les arguments dont tu n'as pas besoin peuvent être omis, place juste les virgules.
    cordialement

  12. #12
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Ce code est-il bon ? Est-ce la bonne manière de faire ?
    Merci pour votre aide.

    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
    Private Sub CmbSave_Click()
    Cells.Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.Dialogs(xlDialogSaveAs).Show ("S:\FORMULAIRES\BON DE COMMANDE\BC 2008")
        ActiveSheet.PageSetup.PrintArea = "$a$1:$k$57"
        With ActiveSheet.PageSetup
    Application.ExecuteExcel4Macro "Page.SETUP(arg3 = 0, arg4 = 0, arg5 = 0, arg6 = 0, arg9 = 1, arg10 = 1, arg11 = 1, arg12 = XlPaperSize, arg13 = 100, arg18 = 0, arg19 = 0)"
    End With
    Windows("Factures.xls").Activate
    Sheets("FormulCD").Select
    Range("g6,h14,k11,k15,d24,d25,a28:H42").Select
    Range("a28").Activate
    Selection.ClearContents
    Range("L11").Select
    Sheets("FormulCD").Visible = False
    Sheets("Engagements").Activate
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  13. #13
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ExecuteExcel4Macro "Page.SETUP(,, 0,  0,  0, 0, ,  false, 1, XlPaperSize, 100, ,,,,0,  0)"
    @+

  14. #14
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    J'ai fait comme indiqué, mais ça ne marche pas.

    Erreur d'éxécution 438
    Propriété ou méthode non géré par cet objet.

    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
    Private Sub CmbSave_Click()
    Cells.Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.Dialogs(xlDialogSaveAs).Show ("S:\FORMULAIRES\BON DE COMMANDE\BC 2008")
        ActiveSheet.PageSetup.PrintArea = "$a$1:$k$57"
        With ActiveSheet.PageSetup
            Application.ExecuteExcel4Macro page.setup(,,0,0,0,0,false,false,1,1,1,xlpapersize,100,,,,,0,0,0,0)
            End With
            Columns("I:I").ColumnWidth = 9.13
    Windows("Factures.xls").Activate
    Sheets("FormulCD").Select
    Range("g6,h14,k11,k15,d24,d25,a28:H42").Select
    Range("a28").Activate
    Selection.ClearContents
    Range("L11").Select
    Sheets("FormulCD").Visible = False
    Sheets("Engagements").Activate
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  15. #15
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      'With ActiveSheet.PageSetup
            Application.ExecuteExcel4Macro page.setup(,,0,0,0,0,false,false,1,1,1,xlpapersize,100,,,,,0,0,0,0)
           ' End With


    enlève les lignes With et End with

    @+

  16. #16
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Pour la partie que tu m'as indiqué, ça marche, la mise en page se fait correctement. Par contre, je souhaite que la colonne L1:C9 (colonne I) soit à 9.13, ça je n'y arrive pas. Est-il possible d'avoir encore un petit coup de main ? Merci beaucoup

    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
    Private Sub CmbSave_Click()
    Cells.Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    Application.Dialogs(xlDialogSaveAs).Show ("S:\FORMULAIRES\BON DE COMMANDE\BC 2008")
        ActiveSheet.PageSetup.PrintArea = "$a$1:$k$57"
        Application.ExecuteExcel4Macro "PAGE.SETUP(,,0.00,0.00,0.00,0.00,false,false,1,1,1,,100,,,1,,0.00,0.00,,)"
        Application.ExecuteExcel4Macro "column.width(1,""L1:C9"",9.13)"
    Windows("Factures.xls").Activate
    Sheets("FormulCD").Select
    Range("g6,h14,k11,k15,d24,d25,a28:H42").Select
    Range("a28").Activate
    Selection.ClearContents
    Range("L11").Select
    Sheets("FormulCD").Visible = False
    Sheets("Engagements").Activate
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  17. #17
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re
    Ton code simplifié

    Dans la mesure du possible, évite les Select et Selection
    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 Sub CmbSave_Click()
    
    ActiveSheet.Copy
    Columns("I").ColumnWidth = 9.14
    Application.Dialogs(xlDialogSaveAs).Show ("S:\FORMULAIRES\BON DE COMMANDE\BC 2008")
        ActiveSheet.PageSetup.PrintArea = "$a$1:$k$57"
        Application.ExecuteExcel4Macro "PAGE.SETUP(,,0.00,0.00,0.00,0.00,false,false,1,1,1,,100,,,1,,0.00,0.00,,)"
        'Application.ExecuteExcel4Macro "column.width(1,""L1:C9"",9.13)"
    Windows("Factures.xls").Activate
    Sheets("FormulCD").Range("g6,h14,k11,k15,d24,d25,a28:H42").ClearContents
    
    Sheets("FormulCD").Visible = False
    Sheets("Engagements").Activate
    End Sub
    cordialement

  18. #18
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    ça marche beaucoup mieux, à ceci près que seule la zone a1:k57 doit être copiée et enregistrée (il y a des boutons sur la feuille qui ne doivent pas paraitre à la copie). Voici le code avec les corrections que tu m'a donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CmbSave_Click()
    ActiveSheet.Copy
    Columns("i").ColumnWidth = 9.13
    Application.Dialogs(xlDialogSaveAs).Show ("S:\FORMULAIRES\BON DE COMMANDE\BC 2008")
        ActiveSheet.PageSetup.PrintArea = "$a$1:$k$57"
        Application.ExecuteExcel4Macro "PAGE.SETUP(,,0.00,0.00,0.00,0.00,false,false,1,1,1,,100,,,1,,0.00,0.00,,)"
        Application.ExecuteExcel4Macro "column.width(9.13,""L1:C9"")"
    Windows("Factures.xls").Activate
    Sheets("FormulCD").Range("g6,h14,k11,k15,d24,d25,a28:H42,i28:j42").ClearContents
    Sheets("FormulCD").Visible = False
    Sheets("Engagements").Activate
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  19. #19
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    remplace
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A1:K57").Copy
        Workbooks.Add
        ActiveSheet.Paste
    ce que tu avais mis sans les select

    est ce que cette ligne est utile?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ExecuteExcel4Macro "column.width(9.13,""L1:C9"")"
    @+

  20. #20
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Merci pour toutes les aides apportées
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

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

Discussions similaires

  1. Aide pour simplifier un code et comprendre le mécanisme
    Par nicdodo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/04/2015, 15h50
  2. Aide pour complément de code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/09/2013, 07h53
  3. [XL-MAC 2011] L'aide pour rajouter le code VBA
    Par Gogia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/08/2011, 14h07
  4. Simplifier un code vba excel
    Par cedill23 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2011, 15h06
  5. [XL-2003] Aide pour complèter un code Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/09/2010, 15h34

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