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 :

commande Si alors sinon


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Par défaut commande Si alors sinon
    Bonjour à tous
    je souhaiterais insérer une fonction dans une macro VBA. Cette commande traduirait :


    Si le fichier X est ouvert alors sauvegarder X sinon ouvrir le fichier X.
    chemin d'accès de X = U:\Tram\20130304_SCH_DEX_Plan de remisage.xlsm

    Je pense qu'il faut utiliser IF, THEN et ELSE mais je ne trouve pas la solution.

    merci de votre aide
    bonne journée

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour art_bras_cames,

    A quel moment souhaites-tu que cette macro se lance ? Depuis un autre fichier ?
    Quelles sont les interactions entre ton fichier "20130304_SCH_DEX_Plan" et le fichier dans laquelle la macro se trouve ?

    Pour ma part, je n'aime pas gérer les erreurs sous Excel (peu prudent d'après moi).
    Pour ton problème, je ferais quelque chose de la sorte, sous réserve que j'ai bien compris :
    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
    Sub close_save()
    Dim x As String
    Dim flag As Boolean
     
    x = "C:\Chemin\TEST.xls"
    flag = True
     
    For Each Wkb In Workbooks
        If Wkb.FullName = x Then
            flag = False
            Wkb.Close True
            'MsgBox "Fermé"
            Exit For
        End If
    Next Wkb
     
    If flag Then
        Workbooks.Open Filename:=x
        'MsgBox "Ouvert"
    End If
     
    End Sub
    Tiens moi au courant !

    Cordialement,
    Kimy

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Par défaut
    bonjour, merci de ta rapidité

    En effet cela fait partie d'une macro plus complète qui est lancée depuis un autre fichier et dans lequel je viens copier des cellules de cet autre fichier.

    A+

    Voici la partie de la macro existante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sheets("semaine1").Select
    
        ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
            IgnorePrintAreas:=False
    
    
        Workbooks.Open Filename:="U:\TRAM\20130304_SCH_DEX_Plan de remisage.xlsm"
        Windows("20130304_SCH_DEX_Plan de remisage.xlsm").Activate
        Sheets("Sortie semaine").Select
        ActiveSheet.Unprotect
        
        Windows("Tableau PDS.xlsm").Activate


    Je souhaite remplacer ce qui est en bleu par ce que je recherche.

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Essaye quelque chose comme cela :
    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
    Sub close_save()
    Dim x As String
    Dim flag As Boolean
     
    Sheets("semaine1").Select
     
    ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
    IgnorePrintAreas:=False
     
    x = "U:\TRAM\20130304_SCH_DEX_Plan de remisage.xlsm"
    flag = True
     
    For Each Wkb In Workbooks
        If Wkb.FullName = x Then
            flag = False
            Wkb.Close True
            Exit For
        End If
    Next Wkb
     
    If flag Then
        Workbooks.Open Filename:=x
     
        With Workbooks("20130304_SCH_DEX_Plan de remisage").Worksheets("Sortie semaine")
            .Unprotect
     
            'etc...
        End With
    End If
     
    End Sub
    Tiens moi au courant !

    Cordialement,
    Kimy

  5. #5
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut commande si alors sinon
    bonjour Kimy-Ire,

    Ne serait-ce pas plutôt cela que souhaite art_bras_cames ?

    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
     
    Sub close_save()
    Dim x As String
    Dim flag As Boolean
     
    Sheets("semaine1").Select
     
    ActiveWindow.SelectedSheets.PrintOut Copies:=2, Collate:=True, _
    IgnorePrintAreas:=False
     
    x = "U:\TRAM\20130304_SCH_DEX_Plan de remisage.xlsm"
    flag = True
     
    For Each Wkb In Workbooks
        If Wkb.FullName = x Then
            Workbooks.Save    'Filename:=x
            flag = False
            Exit For
        End If
    Next Wkb
     
    If flag Then
       Workbooks.Open Filename:=x
    End If
     
    With Workbooks("20130304_SCH_DEX_Plan de remisage").Worksheets("Sortie semaine")
        .Unprotect
     
        'etc...
    End With
    End Sub
    Cordialement,

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour nibledispo,

    Si je me réfère au premier commentaire de art_bras_cames qui suit :
    Si le fichier X est ouvert alors sauvegarder X sinon ouvrir le fichier X.
    chemin d'accès de X = U:\Tram\20130304_SCH_DEX_Plan de remisage.xlsm
    je dirais que l'exécution ne dois se réaliser que si le fichier est fermé. Cependant, je peux ne pas avoir compris.

    Cordialement,
    Kimy

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Par défaut
    Bonjour à vous
    je tenais dans un premier temps à vous remercier pour toute l'attention que vous portez à mon projet.

    Kimy dans ta solution, lorsque mon fichier x est ouvert la commande le sauve bien mais le ferme ensuite. Par contre quand x est fermé il n'y a pas de pb la macro l'ouvre bien.
    Pourrais-tu voir pour qu'après l'enregistrement il reste ouvert ?

    Nibledispo lorsque je lance ta solution, j'ai une erreur de compilation sur la ligne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Workbooks.Save  'filename=x
    Bonne journée

  8. #8
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut commande si alors sinon
    Bonjour,

    Et si tu enleves l'apostrophe devant filename ?

    Cordialement,

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Par défaut
    bonjour Paul,
    non cela ne fonctionne pas, j'ai essayé de mettre activeworkbook.save il n'y a plus de pb de compilation. Mais cela ne fonctionne pas car je ne suis pas sur le fichier X je suis sur le fichier d'origine.
    Bonne journée

  10. #10
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut commande si alors sinon
    re....,

    Alors je ne comprends plus rien. Je me demande pourquoi le wbk.close de Kimy marche et pas mon wbk.save.

    Kimy saura peut-être expliquer ce mystère.

    Cordialement

  11. #11
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour à tous !

    Alors, pour le coup, je ne comprends pas non plus.
    Ma sauvegarde fonctionne bien de la sorte :

    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
    x = "C:\Users\...\Desktop\VBA\supertest.xlsm"
    flag = True
     
    For Each Wkb In Workbooks
        If Wkb.FullName = x Then
            flag = False
            Wkb.Save 'True
            Exit For
        End If
    Next Wkb
     
    If flag Then
        Workbooks.Open Filename:=x
     
        With Workbooks("20130304_SCH_DEX_Plan de remisage").Worksheets("Sortie semaine")
            .Unprotect
     
            'etc...
        End With
    End If
    A mettre les bonnes parties aux bons endroits...

    N'hésitez pas à me faire un retour.

    Cordialement,
    Kimy

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2014
    Messages : 35
    Par défaut
    Bonjour Kimy

    Je m'étais absenté quelques jours et me revoilà.
    J'ai essayé ta commande mais elle ne fonctionne pas correctement. Si mon fichier X est ouvert mais qu'il n'a pas été sauvé avant, j'ai une boite de dialogue qui m'indique que le fichier est déjà ouvert et que si je l'ouvre à nouveau , je risque de perdre les données.
    Je pense que la sauvegarde ne fonctionne pas.

    Pourrais-tu m'aider ?

Discussions similaires

  1. Si Alors Sinon
    Par b_lob dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 26/02/2008, 16h01
  2. Si Alors Sinon + Valeur Null
    Par matybouch dans le forum Débuter
    Réponses: 2
    Dernier message: 12/07/2007, 17h04
  3. Problème de syntaxe de "Si Alors Sinon".
    Par byrdo dans le forum Deski
    Réponses: 8
    Dernier message: 19/04/2007, 17h15
  4. Si Alors Sinon
    Par naut95 dans le forum Débuter
    Réponses: 4
    Dernier message: 04/09/2006, 15h22
  5. SQL Server : ISNULL avec Si/Alors/Sinon
    Par Goldorak2 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/06/2006, 16h36

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