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 :

Importer les feuilles d'un modèle dans le classeur actif [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 30
    Points
    30
    Par défaut Importer les feuilles d'un modèle dans le classeur actif
    Bonjour,

    Dans une macro complémentaire, j'ai programmé une fonction pour insérer les feuilles d'un classeur (Cover_Index.XLTX) au début de mon classeur actif.
    Cette fonction fonctionne très bine avec Excel 2007 et 2010, mais plante Excel 2013.

    Voici un extrait de la fonction qui est lancée depuis un UserForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub cmdOK_Click()
    on error resume next
    with activeworkbook
    .sheets("Cover").activate
    if err.number=0 then
    msgbox("La feuille ""Cover"" est déjà présente!")
    exit sub
    endif
    .sheets.add before:=sheets(1), Type:="C:\My Templates\Cover_Index.xltx"   'C'est ici que Excel 2013 plante
    '....
    end with
    end sub
    Je vous remercie pour votre aide.
    Charles

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Je pense que l'erreur vient du fait que ton fichier est en xltx ce qui n'est pas une extension de 2013.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 30
    Points
    30
    Par défaut
    Merci pour votre réponse, mais XLTX est bien une extension Excel 2013 (Microsoft Excel Template)

    Cordialement
    Charles

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    C'est quoi le message d'horreur ?

    Également, en enlevant ton:

    Tu augmentes tes chances qu'il plante sur la bonne ligne. Parce que là, tu ne sais pas combien de fois, il a "RESUMÉ" et où est vraiment l'erreur.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    A tester:
    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
    Private Sub cmdOK_Click()
     
        Dim bWsExist As Boolean
     
        ' ThisWorkbook ou ActiveWorkbook ?
        With ActiveWorkbook
     
    On Error Resume Next
            bWsExist = Not .Worksheets("Cover") Is Nothing
    On Error GoTo 0
     
            If bWsExist Then
                MsgBox ("La feuille ""Cover"" est déjà présente!")
                Exit Sub
            Else
                .Sheets.Add(Before:=.Sheets(1), Type:=XlSheetType.xlWorksheet).Name = "Cover"
            End If
     
            .Sheets("Cover").Activate
            '....
     
        End With
     
    End Sub

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2006
    Messages : 27
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    clementmarcotte:
    Excel plante sans message et doit redémarrer.
    Je reprend bien la gestion des erreurs après avoir vérifié l'existence de la feuille "Cover"
    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
     
    Private Sub cmdOK_Click()
        On Error Resume Next
        With ActiveWorkbook
            .Sheets("Cover").Activate
            If Err.Number = 0 Then
                If MsgBox("Les feuilles ""Cover"" et ""Index"" existent déjà!" & vbLf & vbLf & _
                        "Désirez-vous les remplacer ?", vbInformation + vbYesNo) = vbYes Then
                    Application.DisplayAlerts = False
                    .Sheets("Cover").Delete
                    .Sheets("Index").Delete
                    Application.DisplayAlerts = True
                Else
                    GoTo cmdOK_Click_Exit
                End If
            End If
     
            Err.Clear
     
            On Error GoTo cmdOK_Click_Error
     
            .Sheets.Add before:=Sheets(1), _
                Type:=GetSetting("XLFisc", "Parameter", "DirStart") & "Templates\Income Tax Cover.xltx"
     
    ...
     
    cmdOK_Click_Exit:
        On Error Resume Next
        Unload Me
        On Error GoTo 0
        Exit Sub
     
    cmdOK_Click_Error:
     
        MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure cmdOK_Click of Feuille Uf_Cover"
        GoTo cmdOK_Click_Exit
    End Sub
    J'ai constaté qu'en enlevant le point avant Sheets.Add (Sheets.Add before:=Shetts(1), Type:="C:\My Templates\Cover_Index.xltx"), il n'y a plus de plantage et la procédure fonctionne.

    Cordialement
    Charles

  7. #7
    Invité
    Invité(e)
    Par défaut
    Salut,



    Tu viens de m'apprendre quelque chose.


    Ceci fonctionne parfaitement (avec XL-2013 du moins):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        With Excel.Workbooks("Classeur1")
            .Sheets.Add Before:=.Sheets(1), Type:=FichierXLTM
        End With
    Ici, Classeur1 est le classeur ouvert cible dans lequel on veut ajouter toutes les feuilles se trouvant dans le classeur fermé FichierXLTM.

  8. #8
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Apparemment excel 2013 a vite fait de se perdre dans les feuilles.
    Même sur une instruction simple il vaut mieux spécifier worksheets("Feuil1").xxx. Même si c'est la feuille active, même si on n'est pas dans un With.
    Peut-être se perd-il aussi dans workbooks (?)
    En même temps le With ActiveWorkbook est superflu puisqu'il est sensé s'adresser au classeur actif en l'absence d'autre désignation.
    Je crois que les surprises avec 2013 ne sont pas finies...

    eric

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

Discussions similaires

  1. [XL-MAC 2008] Création d'une feuille de calcul modèle dans un classeur
    Par manumars dans le forum Conception
    Réponses: 2
    Dernier message: 03/02/2014, 22h51
  2. Importer les valeurs d'une liste dans une autre feuille
    Par NewYork dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/03/2011, 11h35
  3. Importer les effets d'Anim-FX dans Flash ? possible ?
    Par LudovicBablon dans le forum Flash
    Réponses: 0
    Dernier message: 08/11/2008, 14h42
  4. Importer les données d'une table dans un MSFLEXGRID
    Par overdoze dans le forum Access
    Réponses: 1
    Dernier message: 27/08/2007, 17h10
  5. importer les noms de fichiers html dans une table access
    Par abane badis dans le forum Access
    Réponses: 3
    Dernier message: 14/11/2005, 17h25

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