Test existence d'une feuille

Résolu
jeanluc065
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007
- 20 nov. 2006 à 13:14
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
- 21 nov. 2006 à 12:20
Bonjour à toutes et tous,

En access2002, catégorie débutant,  
Je veux importer des fichiers .xls en vrac et j'utilise un code ( écrit par JMO ) qui vérifie la structure de  5 feuilles et au besoin, les renomme ainsi que des colonnes.
Tout fonctionne bien sauf si un fichier  comporte moins de 5 feuilles.
Qui peut m'aider pour le code ?
Merci d'avance
JL

Ma question :

Vérifier l'existence de la feuille ( 3 ) pour l'exemple 
Si oui, la renommer "nouveau nom "
Si non, la créer et la nommer "nouveau nom "
*****************************
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



'c'est ici que devrait intervenir le test     

  'Rename du 3ème onglet
              objClasseur.Sheets(3).Name = "nouveau nom"
      

'Rename du 4ème onglet
              objClasseur.Sheets(4).Name = "nouveau nom2"

10 réponses

jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
60
20 nov. 2006 à 15:02
Salut,
Il te faut utiliser le parametre After de la procédure Add lorsque tu ajoutes les feuilles
remplace la ligne
objClasseur.Worksheets.Add
par

Call ObjClasseur.Worksheets.Add(After:=ObjClasseur.Worksheets(i - 1))

Ceci devrait te les ajouter dans l'ordre souhaité
@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
60
20 nov. 2006 à 13:23
Salut,
Si tu essaies de les ajouter:

Dim i As Integer 
Dim ShCount As Integer 
ShCount = objClasseur.Worksheets.Count 
If ShCount <> 5 Then 
    For i = ShCount + 1 To 5 
        objClasseur.Worksheets.Add
      'Au besoin renomme les => ActiveSheet.Name = "plpl"

   Next 
End If 

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
20 nov. 2006 à 13:27
 Bonjour à tous....

Salut jean-luc,

Tu te disperses dans ton project....c'est bien laborieux.... !!!!
Apparemment, tu régresses.... ton topic contient - de lines....
Je regarde ce soir, si possible, en sachant que je n'y connais (presque) rien en vbs/excel.
D'ici là, tu auras bien des réponses positives à ton topic ....espoir et courage....

jean-marc
0
jeanluc065
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

20 nov. 2006 à 14:22
Bonjour à vous deux,

Merci pour les réponses.
1- je vais essayer et je te tiens au courant.
2- oui, mais dès le départ, je n'avais pas imaginé que les classeurs se présentaient de façons différentes donc, je dois essayer de contourner le problème.

Mais à part çà, je suis hyper content de l'aide que j'ai pu trouver via ce site ainsi que de la compétence et de l'amabilité des contributeurs.
JL
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeanluc065
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

20 nov. 2006 à 14:50
Re bonjour  Julien,

J'ai essayé mais hélas, çà plante car,

Si moins de 5 feuilles, il ajoute les feuilles manquantes .... OK mais ....la 1ère feuille vierge ajoutée est intercalée avant la dernière plutôt qu'en dernière position.
De ce fait, les feuilles suivantes sont décalées ( dans la numérotation ) et ......plus rien ne va.
Merci
JL
0
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
20 nov. 2006 à 18:21
 Bonsoir à tous....

Salut jean-luc,

Ton problème devrait se résoudre avec:

Select Case  objClasseur.Sheets.Count
Case 2:
       'Ajout d'une feuille
       objExcel.ActiveWorkbook.Sheets.Add
       'Renamme de la feuille
       objClasseur.Sheets(3).Name = "création de la feuill3"      
Case Else
       'Renamme de la feuille
      objClasseur.Sheets(3).Name = "rename de la feuill3"
End Select

jean-marc
0
jeanluc065
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

20 nov. 2006 à 18:44
Bonsoir,

La solution proposée par Julien, semble focntionner, encore faut-il que je teste les différentes éventualités ( 2 ou 3 ou 4 ou 5 feuilles ).
Je pense que je vais pouvoir m'en sortir grâce à vos précieux conseils.
Merci à vous deux.
JL
0
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
20 nov. 2006 à 19:56
 Re,

Un petit bonsoir à Julien dont je n'avais pas vu le post.
J'ai sensiblement (!) le même code que toi, Jean-Luc.
At home (vbs), la proposition de notre ami Julien ne fonctionne pas.
Est-ce une solution vbs ou vb6 ??? 
Ou Access permit-il cette largesse de synthaxe ???

jean-marc
0
jeanluc065
Messages postés
134
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
1 juin 2007

21 nov. 2006 à 06:35
Bonjour Jean-Marc,

Oui, effectivement , çà fonctionne mais ne me demande pas en quel language ? Et ustement, tu te rappelles que l'on avait eu ce problème avec l'ajout d'une feuille qui s'insérait à l'avant dernière place ?
Avec cette commande c'est résolu mais il faut placer un compteur. Voilà.
Bonne journée
A+
JL
Dim i As Integer 
Dim ShCount As Integer 
ShCount = objClasseur.Worksheets.Count 
If ShCount <> 5 Then 
    For i = ShCount + 1 To 5 
        objClasseur.Worksheets.Add
      'Au besoin renomme les => ActiveSheet.Name = "plpl"

   Next 
End If 

Call ObjClasseur.Worksheets.Add(After:=ObjClasseur.Worksheets(i - 1))
0
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
21 nov. 2006 à 12:20
 Bonjour à tous....

Salut jean-luc,
Cette synthaxe n'est valable qu'en vb6.
Donc:
- ok pour toi;
- ko pour moi !

jean-marc
0