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 :

fermer sans sauvegarder sans fenêtre et sans afficher toutes les fenêtres épileptiques.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 93
    Par défaut fermer sans sauvegarder sans fenêtre et sans afficher toutes les fenêtres épileptiques.
    Bonjour à tous

    je fais un programme là qui ouvre constamment des classeurs excels pour en récupérer certaines donnée. Mon soucis c'est que je dois modifier les classeurs que j'ouvre (modifier les points en virgules) pour exploiter les données nécessaires, et du coup quand ils se ferment ils me demandent si je veux sauvegarder. ça ouvre 13 classeurs, j'aimerai pouvoir faire autre chose en même temps. J'ai essayé beaucoup de codes différents mais rien ne fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ActiveWorkbook.Saved = False
        ActiveWorkbook.Close
     
     
        ActiveWorkbook.Close SaveChanges:=False
     
     
    application.displayalert=false
    activeworkbook.close

    Si vous pouviez m'indiquer une manière s'il vous plait de fermer automatiquement sans demander de sauvegarder ça m'arrangerez beaucoup. Je ne souhaite pas sauvegarder les modifications chaque fois.

    J'aimerai aussi savoir une autre astuce, s'il était possible d'empêcher l'affichage des nouveaux classeurs qui s'ouvre, car ça fait mal aux yeux si on reste devant, et il y a un sérieux risque de crise d'épilepsie ^^. Je vous explique mon programme vite fait, j'ouvre un classeur excel, je selectionne une plage nécessaire, je la copie, ensuite j'active mon classeur de base, je colle les données et je recommence avec une autre plage, puis je ferme mon classeur et j'en ouvre un autre et ainsi de suite, donc vous pouvez facilement imaginer l'écran bouger dans tous les sens ^^. Je vous copie une partie du code pour que vous voyez et peut être quelqu'un va me dire que je peux faire plus simple ^^ :

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    ActiveSheet.Range("A1:BB200").Select
        Selection.Replace what:=".", replacement:=",", lookat:=xlPart, searchorder:= _
        xlByRows, MatchCase:=False, searchformat:=False, ReplaceFormat:=False
     
        j = 0
        While Range("A2").Offset(j, 0) <> ""
     
            If Range("B2").Offset(j, 0) = "VMOB" Or Range("B2").Offset(j, 0) = "FUTU" Or Range("B2").Offset(j, 0) = "TRES" Then
     
                ActiveSheet.Range("A2").Offset(j, 0).Copy
                    Windows("VL.xlsm").Activate
                    Sheets("actif").Activate
                     Sheets("actif").Range("P3").Offset(m, 0).Select
                     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
     
            Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
     
                ActiveSheet.Range("C2").Offset(j, 0).Copy
                    Windows("VL.xlsm").Activate
                    Sheets("actif").Activate
                     Sheets("actif").Range("K3").Offset(m, 0).Select
                     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
     
            Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
     
                ActiveSheet.Range("N2").Offset(j, 0).Copy
                    Windows("VL.xlsm").Activate
                    Sheets("actif").Activate
                     Sheets("actif").Range("M3").Offset(m, 0).Select
                     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
     
            Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
     
                ActiveSheet.Range("O2").Offset(j, 0).Copy
                    Windows("VL.xlsm").Activate
                    Sheets("actif").Activate
                     Sheets("actif").Range("R3").Offset(m, 0).Select
                     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
     
     
            Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
     
                ActiveSheet.Range("U2").Offset(j, 0).Copy
                    Windows("VL.xlsm").Activate
                    Sheets("actif").Activate
                     Sheets("actif").Range("N3").Offset(m, 0).Select
                     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
     
            Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
     
                ActiveSheet.Range("AR2").Offset(j, 0).Copy
                    Windows("VL.xlsm").Activate
                    Sheets("actif").Activate
                     Sheets("actif").Range("O3").Offset(m, 0).Select
                     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
     
            Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
     
                ActiveSheet.Range("G2").Offset(j, 0).Copy
                    Windows("VL.xlsm").Activate
                    Sheets("actif").Activate
                     Sheets("actif").Range("S3").Offset(m, 0).Select
                     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
     
                    Range("Q3").Offset(i, 0) = PTF
     
            Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
     
                If Range("AU2").Offset(j, 0) <> "" Then
     
                    ActiveSheet.Range("AU2").Offset(j, 0).Copy
                        Windows("VL.xlsm").Activate
                        Sheets("actif").Activate
                         Sheets("actif").Range("L3").Offset(m, 0).Select
                         Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                    SkipBlanks:=False, Transpose:=False
                        Application.CutCopyMode = False
                Else
     
                    ActiveSheet.Range("G2").Offset(j, 0).Copy
                        Windows("VL.xlsm").Activate
                        Sheets("actif").Activate
                         Sheets("actif").Range("L3").Offset(m, 0).Select
                         Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                    SkipBlanks:=False, Transpose:=False
                        Application.CutCopyMode = False
                End If
            m = m + 1
            End If
     
        Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
        j = j + 1
        Wend
        Windows("JOUROP_" & Format(Now() - JOUR_TEST, "yyyymmdd") & "_" & ID & "_" & PTF & ".xls").Activate
        ActiveWorkbook.Saved = False
        ActiveWorkbook.Close  
    End If
    En tout cas le plus urgent c'est la non demande de sauvegarde à la fermeture automatique des fichiers


    Merci beaucoup pour vos aides .

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    pour fermer un classeur sans l'enregistrer, ou pour l'enregistrer dans la foulée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    set Wb = Workbooks("Classeur1")
     
    ' ferme sans enregistrer
    Wb.Close False
     
    ' ferme en enregistrant
    Wb.Close True
     
    set Wb = Nothing

    pour désactiver le stromboscope des ouvertures et fermetures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Sub UneMacro()
     
    Application.ScreenUpdating = False
     
    ' ton code
     
    Application.ScreenUpdating = True
     
    End Sub

    En outre, ton code mérite un peu de ménage, il est inutile de sélectionner tes plages pour y faire des opérations
    par exemple, la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ActiveSheet.Range("A2").Offset(j, 0).Copy
                    Windows("VL.xlsm").Activate
                    Sheets("actif").Activate
                     Sheets("actif").Range("P3").Offset(m, 0).Select
                     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
                                SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
    peut se réduire en une seule ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks("Nom du classeur").Worksheets("Nom de la feuille").Range("A2").Offset(j, 0).Value.Copy Workbooks("VL.xlsm").Worksheets("actif").Range("P3").Offset(m, 0)
    et en utilisant des variables Classeur, Feuille, Plage, tu obtiens un code simple, lisible et qui ne jongle pas entre les classeurs en terme d'affichage

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 93
    Par défaut bravo
    C'est bon updatescreening fonctionne bien ainsi que la fermeture sans sauvegarder sans initialisé un wb. Par contre le fait de copier directement sans activer les fenêtres ne fonctionne pas mais ça c'est pas grave...Merci beaucoup en tout cas c'est plus agréable comme ça.

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

Discussions similaires

  1. [VxiR2] Afficher toutes les dates même sans données
    Par blackdespe dans le forum Designer
    Réponses: 2
    Dernier message: 02/09/2014, 06h44
  2. [Toutes versions] Fermer toutes les fenêtres VBA
    Par loufab dans le forum Contribuez
    Réponses: 0
    Dernier message: 23/02/2010, 22h52
  3. Réponses: 2
    Dernier message: 23/12/2009, 12h05
  4. Débogage : fenêtre console n'affiche pas les messages
    Par pierrepo dans le forum Eclipse C & C++
    Réponses: 2
    Dernier message: 20/06/2009, 14h51
  5. Fermer toutes les fenêtres filles ayant pour origine une même session
    Par [DreaMs] dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 10/04/2009, 22h01

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