jeanluc065
Messages postés134Date d'inscriptionsamedi 23 septembre 2006StatutMembreDernière intervention 1 juin 2007
-
22 nov. 2006 à 15:07
jeanluc065
Messages postés134Date d'inscriptionsamedi 23 septembre 2006StatutMembreDernière intervention 1 juin 2007
-
23 nov. 2006 à 04:43
Bonjour à toutes et tous,
En access2002, catégorie novice.
Depuis access, je souhaite importer des fichiers xls en vrac. Jusqu'ici, OK si toutes les fichiers ont le même nombre de feuilles. Hélas, ce n'est pas le cas.
J'avais déjà crié au secours ici, j'ai reçu une proposition de Julien et de Jean-Marc mais je n'arrive pas à mettre en application.
Qui pourrait m'aider pour le code ?
Merci d'avance.
JL
************************
Exposé :
en principe mes 5 feuilles se présentent dans l'ordre comme ceci : fp , caxx , idxx, ppxx, npxx
parfois : elles se présentent (max 4 feuilles ) comme ceci fp, idxx ,ppxx , npxx
et parfois : fp, idxx , ppxx
De plus, initialement, le nom de certaines feuilles est complété d'un chiffre xx.
En plus, je dois ajouter une feuille "TG" dans laquelle je vais récupérer une valeur de le cellule de la feuille FP.
Ma demande :
1- vérifier si il y a 5 feuilles,
- si oui : ajout d'une 6ème feuille "TG" renommer 3 id 4 pp 5=np 6=TG
- si non : 4 feuilles ou 3 feuilles : ajout de 1 feuille "TG" renommer 2 id 3 pp 4=np 5=TG
*******************************************************
ceci marche mais avec 5 feuilles obligatoirement
For Each fichier In fichiers
Set f = fso.GetFile(fichier)
If fso.GetExtensionName(fichier) = "xls" Then
Dim objExcel, objClasseur
Set objExcel = CreateObject("Excel.Application")
Set objClasseur = objExcel.Workbooks.Open(fichier)
'Display alerte => true=oui false=non
objExcel.DisplayAlerts = False
'Classeur visible => true=oui false=non
objExcel.Application.Visible = False
'Rename du 3ème onglet
objClasseur.Sheets(3).Name = "id"
'Rename du 4ème onglet
objClasseur.Sheets(4).Name = "pp"
objExcel.Application.Visible = False
'Rename du 5ème onglet
objClasseur.Sheets(5).Name = "np"
objExcel.Application.Visible = False
objExcel.ActiveWorkbook.Sheets("target").Select
objExcel.Cells(1, 1).Value = "CC"
********************************************************
Avec ceci, çà coince
For Each fichier In fichiers
Set f = fso.GetFile(fichier)
If fso.GetExtensionName(fichier) = "xls" Then
Dim objExcel, objClasseur
Set objExcel = CreateObject("Excel.Application")
Set objClasseur = objExcel.Workbooks.Open(fichier)
'Display alerte => true=oui false=non
objExcel.DisplayAlerts = False
'Classeur visible => true=oui false=non
objExcel.Application.Visible = False
Dim i As Integer
Dim ShCount As Integer
ShCount = objClasseur.Worksheets.Count
If ShCount <> 5 Then
For i = ShCount + 1 To 5
Call objClasseur.Worksheets.Add(After:=objClasseur.Worksheets(i - 1))
Next
End If
' test si Complet fp, ca, id, pp, np
If ShCount = 5 Or ShCount > 5 Then
objClasseur.Sheets(3).Name = "id"
objClasseur.Sheets(4).Name = "pp"
objClasseur.Sheets(5).Name = "np"
objClasseur.Sheets(6).Name = "TG"
End If
Dim ii As Integer
Dim ShCount1 As Integer
ShCount1 = objClasseur.Worksheets.Count
If ShCount1 <> 5 Then
For ii = ShCount1 + 1 To 5
Call objClasseur.Worksheets.Add(After:=objClasseur.Worksheets(ii - 1))
Next
End If
' test si incomplet fp, id, pp, et parfois np
If ShCount1 < 5 Then
objClasseur.Sheets(2).Name = "id"
objClasseur.Sheets(3).Name = "pp"
objClasseur.Sheets(4).Name = "np"
objClasseur.Sheets(5).Name = "TG"
End If