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 :
Constante Valeur
xlCurrentPlatformText -4158
xlWorkbookNormal -4143
xlSYLK 2
xlWKS 4
xlWK1 5
xlCSV 6
xlDBF2 7
xlDBF3 8
xlDIF 9
xlDBF4 11
xlWJ2WD1 14
xlWK3 15
xlExcel2 16
xlTemplate 17
xlAddIn 18
xlTextMac 19
xlTextWindows 20
xlTextMSDOS 21
xlCSVMac 22
xlCSVWindows 23
xlCSVMSDOS 24
xlIntlMacro 25
xlIntlAddIn 26
xlExcel2FarEast 27
xlWorks2FarEast 28
xlExcel3 29
xlWK1FMT 30
xlWK1ALL 31
xlWK3FM3 32
xlExcel4 33
xlWQ1 34
xlExcel4Workbook 35
xlTextPrinter 36
xlWK4 38
xlExcel5 39
xlExcel7 39
xlWJ3 40
xlWJ3FJ3 41
xlUnicodeText 42
xlExcel9795 43
xlHtml 44
xlWebArchive 45
xlXMLSpreadsheet 46
xlXMLData 47
 

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.
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16