[VBA] Affectation d'un classeur dans variable

Fermé
Jennifer75 - Modifié par Jennifer75 le 12/12/2011 à 16:00
 Jennifer75 - 12 déc. 2011 à 17:04
bonjour le forum,

Je suis nouvelle en programmation et je n'arrive pas à me sortir du message "L'indice n'appartient pas à la sélection" provoqué par cette ligne :

FichierAppliSource = Application.Workbooks(SCheminFichier).

Je m'explique. Je cherche à mettre à jour un fichier. Pour cela, je veux ouvrir un fichier dans lequel il y a les données sources pour la mise à jour. J'aimerais que le classeur source soit affecté dans une variable pour éviter de le réécrire à chaque fois mais je bloque sur la ligne ci-dessus.

Voici mon code dans son ensemble :

Public FeuilleAppliSource As Worksheet, FichierAppliSource As Workbook        'nom de la feuille et du fichier sources  
  
Sub OuvertureFichierSource()  
  
    Dim SCheminFichier As String  
  
    'ouvrir le fichier source  
    SCheminFichier = Application.GetOpenFilename()  
      
    If SCheminFichier = "" Then  
        Exit Sub  
    Else  
        SCheminFichier = Dir(SCheminFichier)  
        FichierAppliSource = Application.Workbooks(SCheminFichier)  
    End If  
  
    FichierAppliSource.Worksheets("Résultat" ).Name = SFeuilleTravail         ' SFeuilleTravail est un string qui vaut "Mis à jour"  
    Set FeuilleAppliSource = FichierAppliSource.Worksheets(SFeuilleTravail)  
    FeuilleAppliSource.Copy After:=FeuilleAppliMAJ  
  
End Sub  


j'ai essayé aussi ces deux écritures à la place de "FichierAppliSource = Application.Workbooks(SCheminFichier)" :
' FichierAppliSource = Workbooks(ActiveWorkbook.Name)
' SCheminFichier = Left(Dir(SCheminFichier), InStr(1, Dir(SCheminFichier), ".", 1) - 1).

Mais rien ne marche

Pourriez-vous m'aider ? je suis désespérée...

Merci d'avance

1 réponse

Bonjour,

Essaie ce code pour ouvrir ton classeur:

    'ouvrir le fichier source
    SCheminFichier = Application.GetOpenFilename("Classeur Excel (*.xls), *.xls")
     
    If SCheminFichier = "" Then  
        Exit Sub  
    Else  
       Set FichierAppliSource = Workbooks.Open(Filename:=SCheminFichier)
    End If  
1
Merci beaucoup,

cela a l'air de marché. Par contre, je me retrouve avec un message d'erreur '-2147021892 (80070bbc)' qui est lié à un problème avec le fichier. Comment puis-je faire pour éviter ce message d'erreur.

Aidez-moi, je n'y arriverais jamais !
0