Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro VBA et les .xls / .xlsx

GuillaumA

XLDnaute Occasionnel
Bonjour,
J'ai le code suivant pour envoyer des mails:

Code:
Sub EnvoyerMail()

Dim i As Integer
Dim NomDeLaFeuille As String
Dim NomDesClasseurs(1 To 11)

Dim ZonePJ As Range
Dim ZoneD As Range
Dim ZoneCC As Range
Set ZonePJ = Range("C19:C29")

Dim chemin As String
chemin = CreateObject("WScript.Shell").specialFolders("Desktop")
Dim debutnom As String
debutnom = Range("C38")

Answer = MsgBox(Range("C39"), vbYesNo)
If Answer = vbYes Then

    For i = 19 To 29
        If Not IsEmpty(Range("C" & i)) Then
        NomDeLaFeuille = Range("C" & i)
        [COLOR="red"]NomDesClasseurs(i - 19 + 1) = chemin & "\" & debutnom & NomDeLaFeuille & ".xls"[/COLOR]
        Sheets(NomDeLaFeuille).Visible = True
        ThisWorkbook.Sheets(NomDeLaFeuille).Copy
        ActiveWorkbook.SaveAs (chemin & "\" & debutnom & NomDeLaFeuille)
        ActiveWorkbook.Close
        Sheets(NomDeLaFeuille).Visible = False
        End If

    Next i

    Call SendMailCDO(NomDesClasseurs)

    For i = 1 To 11
        If NomDesClasseurs(i) <> "" Then Kill NomDesClasseurs(i)
    Next

    ZonePJ.ClearContents

End If

End Sub

Ma question est: Comment faire pour qu'il crée des .xls lorsque la version de l'utilisateur est 2003 et en .xlsx lorsqu'il utilise 2007 ?
Si c'est possible bien entendu.

Amicalement,
Guillaume A.
 

Pierrot93

XLDnaute Barbatruc
Re : Macro VBA et les .xls / .xlsx

Bonjour,

peut être en précisant comme format de fichier le type "xlWorkbookNormal" :

Code:
ActiveWorkbook.SaveAs "classeur1", xlWorkbookNormal

A vérifier sous 2007, car non testé...

bon après midi
@+
 

job75

XLDnaute Barbatruc
Re : Macro VBA et les .xls / .xlsx

Rebonjour GuillaumA, James, Pierrot,

Il suffit de ne pas préciser l'extension du fichier dans NomDeLaFeuille.

Le fichier obtenu aura l'extension correspondant à la version en cours.

A+
 

GuillaumA

XLDnaute Occasionnel
Re : Macro VBA et les .xls / .xlsx

Dans mon cas, j'ai plusieurs macor qui vont rechercher les fichier .xls ou .xlsx . J'aurai voulu qu'il choisisse les deux et non pas seulement celle de la version en cour afin qu'un utilisateur de 2007 puisse utiliser des fichier 2003.
Ce qui n'est pas possible actuellement.

Tant pis. Je pense que EXCEL ne peut gérer ça, tout particulièrement si je programme en 2003.


Merci quand même pour vos réponses !

Amicalement,
Guillaume
 

Pierrot93

XLDnaute Barbatruc
Re : Macro VBA et les .xls / .xlsx

Re,

pas tout compris, mais à priori c'est plutôt le contraire, un utilisateur travaillant sous 2003 ne pourra pas ouvrir un ficher version 2007, sauf a avoir installé le convertisseur.... enfin me semble t'il...

bonne soirée
@
 

James007

XLDnaute Barbatruc
Re : Macro VBA et les .xls / .xlsx

Re,

Je viens de vérifier ce que je disais plus haut sur Application.Version, c'est juste ...
De plus, depuis Excel 2007-2010, le paramètre fileformat est codé comme suit :
51 = xlsx
52 = xlsm
50 = xlsb
56 = xls

A +
 

Pierrot93

XLDnaute Barbatruc
Re : Macro VBA et les .xls / .xlsx

Re,

Je viens de vérifier ce que je disais plus haut sur Application.Version, c'est juste ...
De plus, depuis Excel 2007-2010, le paramètre fileformat est codé comme suit :
51 = xlsx
52 = xlsm
50 = xlsb
56 = xls

A +

Re,

Aarf, complètement différents des constantes ./ valeurs présentes dans 2003, ci-dessous la liste que donne l'aide vba :
 

GuillaumA

XLDnaute Occasionnel
Re : Macro VBA et les .xls / .xlsx

Re bonjour, je reviens vers vous en ce qui concerne ce sujet
J'ai trouvé comme solution de n'enregistrer qu'en format 2003 pour la macro suivante:

Code:
    For i = 19 To 29
        If Not IsEmpty(Range("C" & i)) Then
        NomDeLaFeuille = Range("C" & i)
        NomDesClasseurs(i - 19 + 1) = chemin & "\" & debutnom & NomDeLaFeuille & ".xlsx"
        Sheets(NomDeLaFeuille).Visible = True
        ThisWorkbook.Sheets(NomDeLaFeuille).Copy
        ActiveWorkbook.SaveAs (chemin & "\" & debutnom & NomDeLaFeuille)
        ActiveWorkbook.Close
        Sheets(NomDeLaFeuille).Visible = False
        End If

et plus exactement ici:
Code:
 ActiveWorkbook.SaveAs (chemin & "\" & debutnom & NomDeLaFeuille)

Je voudrai écrire:
Code:
 ActiveWorkbook.SaveAs (chemin & "\" & debutnom & NomDeLaFeuille, fileFormat:=xl2003
)
Cette dénomination n'est pas bonne. Quelqu'un saurait-il me dire la dénomination exacte ?

Merci de votre considération.

GuillaumA.
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…