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 :

Ouverture / Activation de classeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 120
    Par défaut Ouverture / Activation de classeurs
    Bonjour,

    Mon problème est évidemment très simple mais je n'arrive pas à le résoudre par manque de compréhension des fonction "Open" "Close" "Activate" sur les classeurs malgré de longues recherches sur la toile. Peut-être pouvez-vous me suggérer des sites qui me permettront d'évacuer cette difficulté. Ceux que j'ai trouvé ne m'ont pas permis de comprendre.

    Néanmoins voici ce que je veux faire :
    Mon classeur Origine (Actif) dans lequel se trouve mes macros, s'appelle "HOTELIER"
    La macro doit faire :
    1) Copier la feuille "Impression" dans le dossier "FICHIERS-JCB" d'une clé USB donc par le chemin "F:\FICHIERS-JCB\" & NomFichier & ".xlsx" où NomFichier se trouve en cellule B1 de la Feuille "Impression"
    Pour cela, pas de problème, le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub HOTELIER_FICHIER_PRESIDENT()
    Sheets("Impression").Select
    NomFichier = Range("B1").Value
    ThisWorkbook.Sheets("Impression").Copy
    ActiveWorkbook.SaveAsFilename:="F:\FICHIERS-JCB\" & NomFichier& ".xlsx"
    . . . . . . 
    . . . . . .
    Mais d'après ce que je crois avoir compris, c'est le classeur "F:\FICHIERS-JCB\" & NomFichier& ".xlsx" qui est alors devenu actif.
    Comment faire pour :
    2) fermer et sauvegarder le classeur créé dans la clé USB
    3) Retourner dans mon classeur initial (celui où se trouve la macro) pour afficher un message de bonne exécution
    4) fermer et sauvegarder ce classeur initial.

    Je n'arrive pas après 1) à retourner dans le classeur initial pour faire 3 et 4

    Merci de votre aide

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Ajoute après l'étape 6 si tu n'as plus rien à faire dans le nouveau classeur

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Un conseil : mets les références de chaque dossier que tu utilises dans une variable de type Workbook.
    Que ce soit soit le fichier actif au début de l'exécution (en utilisant ActiveWorkbook ou ThisWorkbook) ou tout fichier que tu ouvres en cours d'exécution (en mettant un "Set variable =" devant le Open).
    Ca rendra bien plus facile leurs manipulations.

    A lire :
    https://msdn.microsoft.com/library/6...ice.15%29.aspx
    https://msdn.microsoft.com/library/0...ice.15%29.aspx
    https://docs.microsoft.com/fr-fr/off.../set-statement

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    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
    Sub test()
        Dim nomfichier$, rep
        With ThisWorkbook
            ' creation du classeur copie du sheet impression
            With .Sheets("Impression")
                nomfichier = .Range("B1").Value
                .Copy
            End With
            ActiveWorkbook.SaveAs Filename:="F:\FICHIERS-JCB\" & nomfichier & ".xlsx": .Close
     
            'message demandant si on ferme mantenant le classeur maitre
            rep = MsgBox("voulez vous fermer le classeur maitre", vbYesNo)
            ' si la reponse est "oui"
            If rep = vbYes Then
                Application.DisplayAlerts = False    ' on bloque tout les message d'avertissemnt
                .Save    ' on sauve
                If Workbooks.Count = 1 Then    'si c'est le seul classeur ouvert dans cette instance  d'excel
                    Application.Quit
                Else    'si il y a encore d'autre classeurs ouverts dans cette instance
                    .Close
                End If
            End If
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 120
    Par défaut
    Merci de vos réponses
    mais les consultations des liens "explicatifs" ne m'ont pas permis de comprendre ce qui se passe de concret après les fonctions utilisées.
    La solution de patricktoulon fonctionne évidemment mais pas tout à fait comme je le souhaite . . . ce qui n'est pas le plus important, le plus important pour moi étant de comprendre comment et pourquoi ce qui me convient fonctionne et comment faire pour aboutir à ce que je souhaite :
    J'ai 2 cas à résoudre :
    1er cas : la feuille copiée n'a pas de version antérieure sur la clé USB.
    Le remplacement dans le classeur de la clé doit se faire automatiquement puis être fermé, ensuite, retour au Classeur Maître pour y effectuer un traitement et enfin, fermer ce classeur en enregistrant les modifications effectuées.
    2ème cas : la feuille copiée existe déjà dans une version antérieure sur la clé USB. La remplacer puis faire comme pour le 1er cas.
    J'ai essayé en "triturant" le code de patricktoulon, mais je n'arrive pas à un résultat correct.
    Par exemple dans le 1er cas :
    Je place Application.DisplayAlerts = False juste après ActiveWorkbook.SaveAs Filename:="F:\FICHIERS-JCB\" & nomfichier & ".xlsx": .Close.
    J'ai quand même la demande automatique "Voulez-vous enregistrer les modifications apportées à "HOTELIER.xlsm" malgré le DisplayAlerts = False mais surtout, après la réponse "oui" j'ai l'affichage de la feuille copiée dans le classeur 'USB" et le système me laisse la main dans cette feuille alors que ce que je veux, c'est revenir dans le classeur "HOTELIER".

    Respectueusement et cordialement

Discussions similaires

  1. [XL-2007] Ouverture d'un classeur si non ouvert / ou activation
    Par Kimy_Ire dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/01/2013, 17h37
  2. éviter avertissement activation ActiveX à l'ouverture d'un classeur
    Par Ragmaxone dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/09/2008, 09h22
  3. Ouverture d'un classeur à une même feuille
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/08/2006, 20h13
  4. [VBA-E] ouverture d'un classeur
    Par sophie447 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/06/2006, 21h18
  5. [VBA-E] activer un classeur et rendre une page visible
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/05/2006, 14h34

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