End if sans bloc if

Résolu
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007 - 21 oct. 2006 à 15:16
jeanluc065 Messages postés 134 Date d'inscription samedi 23 septembre 2006 Statut Membre Dernière intervention 1 juin 2007 - 22 oct. 2006 à 08:22
Bonjour à toutes et tous,

En access 2002, JMO m'avait écrit une fonction qui marche très bien et  j'ai essayé de l'adapter mais j'obtiens un message d'erreur ' erreur de complilation    End if sans bloc if"
Quelqu'un peut-il m'aider ?
Merci d'avance,
JL
****************************
En fait le chemin est déterminé dans un autre code et il s'agit ici de mettre en forme des feuilles excell de plusieurs fichiers et en boucle.

Function ShowFolderListbelga(path)
'présentation originale: 1 feuille In 1 feuille Out
Dim fso:        Set fso = CreateObject("Scripting.FileSystemObject")
Dim Dossiers:   Set Dossiers = fso.GetFolder(path)

Dim fichiers:   Set fichiers = Dossiers.Files


Dim fichier, f, strListe


For Each fichier In fichiers
   
   DoCmd.Hourglass True
  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)


       objExcel.DisplayAlerts = False 'enlève l'alerte
       objExcel.Application.Visible = False
      
    ' détermine IN OUT
     objExcel.ActiveWorkbook.Sheets(1).Select
     If objExcel.Cells(1, 6).Value = "A-Nom" Then
     objClasseur.Sheets(1).Name = "IN"
     If objExcel.Cells(1, 6).Value = "B-Nom" Then
     objClasseur.Sheets(1).Name = "OUT"
   End If
  
   objExcel.ActiveWorkbook.Sheets(2).Select
     If objExcel.Cells(1, 6).Value = "A-Nom" Then
     objClasseur.Sheets(2).Name = "IN"
     If objExcel.Cells(1, 6).Value = "B-Nom" Then
     objClasseur.Sheets(2).Name = "OUT"
   End If
   
  'suppression des colonnes vides
   Dim LastLine, I
    LastLine = objExcel.ActiveSheet.UsedRange.Row - 1
    LastLine = LastLine + objExcel.ActiveSheet.UsedRange.Columns.Count
    For I = LastLine To 1 Step -1
        If objExcel.Application.WorksheetFunction.CountA(objExcel.Columns(I)) = 0 Then objExcel.Columns(I).Delete  
    
    'renomme les colonnes
    objExcel.ActiveWorkbook.Sheets("IN").Select
    objExcel.Cells(1, 1).Value = "Date Début"
               
        objExcel.ActiveWorkbook.Sheets("OUT").Select
    objExcel.Cells(1, 1).Value = "Date Début"
           
      'WScript.Sleep "500"
      'MsgBox objClasseur.Sheets(1).Name,,"Nom de la Feuil1 après modification"


      objExcel.ActiveWorkbook.SaveAs fichier 'sauvegarde sous le même nom
      objExcel.ActiveWorkbook.Saved = True 'sauvegarde true=oui false=non
      'objExcel.DisplayAlerts=True 'remet l'alerte
      'objExcel.Application.Visible=True 'remet la visibilité
      objExcel.ActiveWorkbook.Close 'Fermeture d'Excel


     Set objExcel = Nothing
      Set objClasseur = Nothing
C'est ici que çà se plante
      End If
     
   Next


Set f = Nothing
Set fichiers = Nothing
Set Dossiers = Nothing
Set fso = Nothing
DoCmd.Hourglass False
End Function

9 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
21 oct. 2006 à 23:13
Arf, pas testé, je l'ai fait à l'oeil :

        If objExcel.Cells(1, 6).Value = "A-Nom" Then
            objClasseur.Sheets(1).Name = "IN"
        ElseIf objExcel.Cells(1, 6).Value = "B-Nom" Then
            objClasseur.Sheets(1).Name = "OUT"
        End If

je sais que j'ai modifié les deux If en un seul mais ce ne dois pas être ici, plutôt là :

If objExcel.Application.WorksheetFunction.CountA(objExcel.Columns(I)) = 0 Then                 objExcel.Columns(I).Delete  

faire entrée après Then :

If objExcel.Application.WorksheetFunction.CountA(objExcel.Columns(I)) = 0 Then                 
      objExcel.Columns(I).Delete  

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
3
Rejoignez-nous