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 :

Comment poursuivre un code identique sur un deuxième classeur [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut Comment poursuivre un code identique sur un deuxième classeur
    Bonsoir à tous,

    Je souhaiterai savoir s'il est possible de poursuivre l'exécution d'un code lancé sur un classeur A et le poursuivre sur un classeur B qui est une copie du classeur A, une fois le classeur A fermé par le code.

    Le but réside dans le fait d'incrémenter un classeur en faisant une copie du classeur source (existant), d'y faire des modifications d'ordre "hiérarchique" et d'importer des données du classeur source en format texte pour inhiber les formules correspondantes dans le classeur cible; cela, sans que l'utilisateur n'est a intervenir.

    Pour information, mes codes fonctionnes parfaitement indépendamment les uns des autres, mais impossible pour le moment une fois réunis de passer la fermeture du classeur source (A) car le module contenant le code en cours d'exécution est attaché justement à ce même classeur, ce qui interrompt le code. Il faudrait pouvoir basculer pendant l'exécution du code avant l'instruction de fermeture sur la code identique attaché au classeur cible (B).

    J'espère que vous aurez une solution à me proposer, même si la méthodologie est différente de celle que j'ai mise en place pour le moment.

    Merci par avance de votre assistance
    MacBook Pro 15" - Apple Cinema Thunderbolt 27" x2u - High Sierra - Office 2019 - Windows 10 Pro sous Parallels - MS Project 2019

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Bonsoir,

    Je te propose de laisser ton code dans le classeur A, de le dérouler sur l'ensemble des classeurs qui doivent passer le traitement puis de fermer le classeur A seulement à la fin. Bref, traite le classeur A en dernier.

    Qu'en penses-tu ?

    Bonne nuit
    DeaD

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut
    Bonjour Dead78 ou bonsoir et merci pour ta proposition,

    Sans ironie, trop simple !
    Le document final est destiné a être utilisé par d'autre que moi et je souhaite pour éviter toute confusion qu'il n'y ait qu'un fichier ouvert à la fois, c'est une contrainte absolue.
    Les utilisateurs doivent juste saisir des chiffres et il est impensable qu'ils puissent modifier par erreur le fichier précédent.
    De plus, la suite de mon code exécute des requêtes d'importation sur un classeur fermé et j'ai bien peur que cela perturbe également l'incrémentation de certaines variables.

    Donc, il me faudrait autre chose, une idée....?
    MacBook Pro 15" - Apple Cinema Thunderbolt 27" x2u - High Sierra - Office 2019 - Windows 10 Pro sous Parallels - MS Project 2019

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut
    Bonsoir,

    Je reviens vers vous car je n'ai pas progresser aujourd'hui et je me demande toujours si ce que je cherche à faire est possible.
    Pourriez-vous m'indiquer s'il existe une issue à cette difficulté ?

    Si vous trouvez ma description peu clair, pouvez-vous me le faire savoir afin que je l'améliore ?

    Dans l'attente, merci encore.
    MacBook Pro 15" - Apple Cinema Thunderbolt 27" x2u - High Sierra - Office 2019 - Windows 10 Pro sous Parallels - MS Project 2019

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut
    Bonsoir,

    Je me répond et je dois dire que la solution était très simple :
    - Découper le code en 2 parties distinctes
    - Attribuer au seconde des touches de raccourcis depuis les options de la macro : ex. : ctrl + t
    - Appeler la macro par ces mêmes touches depuis la première partie de code : ex. : SendKeys "^t"

    Voilà ce que cela donne avec une instruction de vérification de l'état du classeur car il ne doit pas avoir été modifié depuis son ouverture pour que la procédure ne s'interrompe pas par la boite de dialogue automatique de sauvegarde. Une deuxième instruction vérifie si un classeur ayant le même nom une fois incrémenté existe avant sa copie.

    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
    Sub NouveauEA()
     Dim Chemin2 As String, Fichier As String
     Dim Rep As Long
     Dim ltexte As String
     
    '------------------------------------------------------------------------
    '----------Copie + Incrémentation du Classeur et de la Feuille-----------
    '------------------------------------------------------------------------
     
    'Chemin variable de destination du fichier copié obtenu par la commande Concatener
    Chemin2 = Range("A11").Value
    'Nom variable du fichier à copier obtenu par la commande Concatener
    Fichier = Range("A15").Value & ".xls"
     
    'Texte rtf incluant la mise en forme servant à la boite de dialogue suivante
    ltexte = "{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fdecor\fprq2\fcharset0 Stencil;}{\f1\fswiss\fcharset0 Arial;}{\f2\fswiss\fprq2\fcharset0 Verdana;}{\f3\fnil\fprq2\fcharset2 SansSerif;}}" & _
        "{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;\red0\green255\blue0;}" & _
        "{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\qc\cf1\ul\b\f0\fs44 ATTENTION !\par" & _
        "\cf0\ulnone\b0\f1\fs20\par" & _
        "\f2\fs28 L'Etat d'Acompte servant de base \'e0 l'\'e9tablissement de la \par" & vbCrLf & _
        "prochaine situation de travaux a \'e9t\'e9 modifi\'e9 depuis son ouverture !\par" & vbCrLf & _
        "\par" & vbCrLf & _
        "\cf2\ul Vous devez le sauvegarder pr\'e9alablement pour pouvoir continuer.\par" & vbCrLf & _
        "\cf0\ulnone\par" & vbCrLf & _
        "\b Cette action sera irr\'e9versible,\par" & vbCrLf & _
        "\b0\par" & vbCrLf & _
        "En cas de doute, choisissez \b Non\b0  et controlez si les modifications doivent-\'eatre enregistr\'e9es.\par" & vbCrLf & _
        "\f3\par" & vbCrLf & _
        "\cf3\b\f0\fs40 ENREGISTRER ou NON ?\par" & vbCrLf & _
        "\par" & vbCrLf & _
        "}"
     
    'Vérifie que le fichier source a été modifié depuis son ouverture (largeur de la boite fixée à 700 pixels)
    If Not ThisWorkbook.Saved Then
        Rep = MsgBoxEx(ltexte, vbCritical + vbYesNo, , , , , 700)
         If Rep = vbNo Then
            Exit Sub
          Else
            ThisWorkbook.Save
        End If
    End If
     
    'Vérifie que le fichier cible n'existe pas et interroge l'utilisateur si Oui
    If Dir(Chemin2 & Fichier) <> "" Then  'le fichier existe
        If MsgBox("Ce fichier existe déjà ! Voulez vous le remplacer ?", vbYesNo) <> vbYes Then Exit Sub
        Application.DisplayAlerts = False 'Message de confirmation désactivé
    End If
        'Copie le fichier à l'emplacement spécifié
        ActiveWorkbook.SaveCopyAs Chemin2 & Fichier
        Application.DisplayAlerts = True
     
    'Ouvre le fichier copié
    Application.Workbooks.Open Chemin2 & Fichier
     
    'Incrémante le nom de la feuille de 1 sur le fichier copié
    Sheets(Range("A16").Value).Select
    Sheets(Range("A16").Value).Name = Range("A15").Value
     
    'Lance la macro affectée au raccourcis Crtl+t
    SendKeys "^t"
     
    'Ferme le fichier source (False : sans sauvegarde / True : avec sauvegarde)
    ThisWorkbook.Close
     
    End Sub
    MacBook Pro 15" - Apple Cinema Thunderbolt 27" x2u - High Sierra - Office 2019 - Windows 10 Pro sous Parallels - MS Project 2019

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

Discussions similaires

  1. comment excuter des codes matlab sur la carte dsp
    Par kadjuv dans le forum MATLAB
    Réponses: 4
    Dernier message: 20/02/2010, 00h35
  2. Comment cacher du code sur Dreamweaver
    Par xG-Hannibal dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 29/06/2006, 11h57
  3. VBA-E comment exécuter un code sur un classeur complet?
    Par djulegnome dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 13/06/2006, 12h29
  4. Comment faire Copier/Coller par code VBA sur INTERNET...
    Par GESCOM2000 dans le forum Access
    Réponses: 5
    Dernier message: 02/01/2006, 13h19
  5. Comment ecrire du code sur plusieurs lignes?
    Par tooneygirl dans le forum Access
    Réponses: 5
    Dernier message: 15/06/2005, 16h03

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